[embjopr-commits] EMBJOPR SVN: r660 - trunk/core/src/main/java/org/jboss/on/embedded/bean.

embjopr-commits at lists.jboss.org embjopr-commits at lists.jboss.org
Mon Aug 10 04:19:13 EDT 2009


Author: fdrabek
Date: 2009-08-10 04:19:12 -0400 (Mon, 10 Aug 2009)
New Revision: 660

Modified:
   trunk/core/src/main/java/org/jboss/on/embedded/bean/MeasurementUtils.java
Log:
EMBJOPR-231 The metric value of type Double with no unit selected in plugin will be not converted to Integer.

Modified: trunk/core/src/main/java/org/jboss/on/embedded/bean/MeasurementUtils.java
===================================================================
--- trunk/core/src/main/java/org/jboss/on/embedded/bean/MeasurementUtils.java	2009-08-08 22:06:34 UTC (rev 659)
+++ trunk/core/src/main/java/org/jboss/on/embedded/bean/MeasurementUtils.java	2009-08-10 08:19:12 UTC (rev 660)
@@ -43,186 +43,209 @@
 
 /**
  * Utility class to retrieve the Measurement information for the give resource
- *
+ * 
  * @author Jessica Sant
  * @author Ian Springer
  */
-public class MeasurementUtils
-{
-    /**
-     * the resource being displayed on the metric tab
-     */
-    private ResourceListItem resource;
+public class MeasurementUtils {
+	/**
+	 * the resource being displayed on the metric tab
+	 */
+	private ResourceListItem resource;
 
-    /**
-     * this resource's type
-     */
-    private ResourceType resourceType;
+	/**
+	 * this resource's type
+	 */
+	private ResourceType resourceType;
 
-    /**
-     * a map of the resource's metric definitions, keyed off the definition names
-     */
-    private Map<String, MeasurementDefinition> measurementDefinitionMap = new HashMap<String, MeasurementDefinition>();
+	/**
+	 * a map of the resource's metric definitions, keyed off the definition
+	 * names
+	 */
+	private Map<String, MeasurementDefinition> measurementDefinitionMap = new HashMap<String, MeasurementDefinition>();
 
-    public MeasurementUtils(ResourceListItem resource)
-    {
-        this.resource = resource;
-        this.resourceType = this.resource.getResource().getResourceType();
-        this.measurementDefinitionMap = new HashMap();
-        Set<MeasurementDefinition> metricDefinitions = this.resourceType.getMetricDefinitions();
-        for (MeasurementDefinition measurementDefinition : metricDefinitions)
-        {
-            if (!measurementDefinition.isPerMinute())
-                // Filter out per-minute metrics, since we don't support them in embedded for the time being.
-                // This is also important, since we key off the metric names, and a per-minute metric has the
-                // same name as its corresponding raw TRENDSUP/TRENDSDOWN metric.
-                measurementDefinitionMap.put(measurementDefinition.getName(), measurementDefinition);
-        }
-    }
+	public MeasurementUtils(ResourceListItem resource) {
+		this.resource = resource;
+		this.resourceType = this.resource.getResource().getResourceType();
+		this.measurementDefinitionMap = new HashMap();
+		Set<MeasurementDefinition> metricDefinitions = this.resourceType
+				.getMetricDefinitions();
+		for (MeasurementDefinition measurementDefinition : metricDefinitions) {
+			if (!measurementDefinition.isPerMinute())
+				// Filter out per-minute metrics, since we don't support them in
+				// embedded for the time being.
+				// This is also important, since we key off the metric names,
+				// and a per-minute metric has the
+				// same name as its corresponding raw TRENDSUP/TRENDSDOWN
+				// metric.
+				measurementDefinitionMap.put(measurementDefinition.getName(),
+						measurementDefinition);
+		}
+	}
 
-    /**
-     * Loads the metric values for the current Resource, optionally filtered by display type and/or data type.
-     *
-     * @param displayType the display type (summary or detail) that the returned metrics should have. Null if any
-     *                    display type should be returned.
-     * @param dataType    the data type (measurement or trait) that the returned metrics should have. Null if any data
-     *                    type should be returned.
-     * @return a set of all metrics that have the given display type and data type
-     */
-    public
-    @Nullable
-    List<MeasurementData> loadMeasurementData(@Nullable DisplayType displayType, DataType dataType)
-    {
-        Map<String, MeasurementDefinition> requestedMetricDefs = new HashMap();
+	/**
+	 * Loads the metric values for the current Resource, optionally filtered by
+	 * display type and/or data type.
+	 * 
+	 * @param displayType
+	 *            the display type (summary or detail) that the returned metrics
+	 *            should have. Null if any display type should be returned.
+	 * @param dataType
+	 *            the data type (measurement or trait) that the returned metrics
+	 *            should have. Null if any data type should be returned.
+	 * @return a set of all metrics that have the given display type and data
+	 *         type
+	 */
+	public @Nullable
+	List<MeasurementData> loadMeasurementData(
+			@Nullable DisplayType displayType, DataType dataType) {
+		Map<String, MeasurementDefinition> requestedMetricDefs = new HashMap();
 
-        // Get the definitions of the requested measurements.
-        for (MeasurementDefinition metricDef : this.measurementDefinitionMap.values())
-        {
-            if (displayType != null && dataType != null)
-            {
-                if (metricDef.getDisplayType().equals(displayType) && metricDef.getDataType().equals(dataType))
-                    requestedMetricDefs.put(metricDef.getName(), metricDef);
-            }
-            else if (dataType != null)
-            {
-                if (metricDef.getDataType().equals(dataType))
-                    requestedMetricDefs.put(metricDef.getName(), metricDef);
-            }
-            else if (displayType != null)
-            {
-                if (metricDef.getDisplayType().equals(displayType))
-                    requestedMetricDefs.put(metricDef.getName(), metricDef);
-            }
-        }
+		// Get the definitions of the requested measurements.
+		for (MeasurementDefinition metricDef : this.measurementDefinitionMap
+				.values()) {
+			if (displayType != null && dataType != null) {
+				if (metricDef.getDisplayType().equals(displayType)
+						&& metricDef.getDataType().equals(dataType))
+					requestedMetricDefs.put(metricDef.getName(), metricDef);
+			} else if (dataType != null) {
+				if (metricDef.getDataType().equals(dataType))
+					requestedMetricDefs.put(metricDef.getName(), metricDef);
+			} else if (displayType != null) {
+				if (metricDef.getDisplayType().equals(displayType))
+					requestedMetricDefs.put(metricDef.getName(), metricDef);
+			}
+		}
 
-        // Get the actual data for the requested measurements.
-        MeasurementAgentService measurementAgentService = PluginContainer.getInstance().getMeasurementAgentService();
-        int resourceId = this.resource.getResource().getId();
-        String[] measurementNamesArray = requestedMetricDefs.keySet().toArray(new String[requestedMetricDefs.size()]);
-        Set<MeasurementData> measurementDataSet = measurementAgentService.getRealTimeMeasurementValue(resourceId, dataType, measurementNamesArray);
-        // @TODO when displayOrder is implemented this should use displayOrder, but right now the displayOrder
-        // for all MeasurementData is set to "0" which will cause only the last object of the set to be
-        // put into the TreeSet due to the semantics of TreeSet which does not implement the Set interface correctly.
-        List<MeasurementData> measurementDataList = null;
-        if (measurementDataSet != null)
-        {
-            measurementDataList = new ArrayList<MeasurementData>(measurementDataSet);
-            Collections.sort(measurementDataList, new MeasurementComparator(requestedMetricDefs));
-        }
-        return measurementDataList;
-    }
+		// Get the actual data for the requested measurements.
+		MeasurementAgentService measurementAgentService = PluginContainer
+				.getInstance().getMeasurementAgentService();
+		int resourceId = this.resource.getResource().getId();
+		String[] measurementNamesArray = requestedMetricDefs.keySet().toArray(
+				new String[requestedMetricDefs.size()]);
+		Set<MeasurementData> measurementDataSet = measurementAgentService
+				.getRealTimeMeasurementValue(resourceId, dataType,
+						measurementNamesArray);
+		// @TODO when displayOrder is implemented this should use displayOrder,
+		// but right now the displayOrder
+		// for all MeasurementData is set to "0" which will cause only the last
+		// object of the set to be
+		// put into the TreeSet due to the semantics of TreeSet which does not
+		// implement the Set interface correctly.
+		List<MeasurementData> measurementDataList = null;
+		if (measurementDataSet != null) {
+			measurementDataList = new ArrayList<MeasurementData>(
+					measurementDataSet);
+			Collections.sort(measurementDataList, new MeasurementComparator(
+					requestedMetricDefs));
+		}
+		return measurementDataList;
+	}
 
-    /**
-     * returns a list of all categories used on this page. This method also loads the measuremntDataList and the
-     * measurementDataMap (a map of
-     *
-     * @param measurementDefinitionMap
-     * @param measurementDataList
-     * @param measurementDisplayMap
-     * @return
-     */
-    public
-    @NotNull
-    List<String> loadCategoryList(@NotNull Map<String, MeasurementDefinition> measurementDefinitionMap,
-                                  @Nullable List<MeasurementData> measurementDataList,
-                                  @NotNull Map<String, List<MeasurementDisplay>> measurementDisplayMap)
-    {
-//      measurementDisplayMap = new HashMap<String,  List<MeasurementDisplay>>();
+	/**
+	 * returns a list of all categories used on this page. This method also
+	 * loads the measuremntDataList and the measurementDataMap (a map of
+	 * 
+	 * @param measurementDefinitionMap
+	 * @param measurementDataList
+	 * @param measurementDisplayMap
+	 * @return
+	 */
+	public @NotNull
+	List<String> loadCategoryList(
+			@NotNull Map<String, MeasurementDefinition> measurementDefinitionMap,
+			@Nullable List<MeasurementData> measurementDataList,
+			@NotNull Map<String, List<MeasurementDisplay>> measurementDisplayMap) {
+		// measurementDisplayMap = new HashMap<String,
+		// List<MeasurementDisplay>>();
 
-        if (measurementDataList != null)
-        {
-            for (MeasurementData measurementData : measurementDataList)
-            {
-                MeasurementDefinition measurementDefinition = measurementDefinitionMap.get(measurementData.getName());
-                String category = measurementDefinition.getCategory().toString();
-                List<MeasurementDisplay> list = measurementDisplayMap.get(category);
+		if (measurementDataList != null) {
+			for (MeasurementData measurementData : measurementDataList) {
+				MeasurementDefinition measurementDefinition = measurementDefinitionMap
+						.get(measurementData.getName());
+				String category = measurementDefinition.getCategory()
+						.toString();
+				List<MeasurementDisplay> list = measurementDisplayMap
+						.get(category);
 
-                if (list == null)
-                {
-                    list = new ArrayList<MeasurementDisplay>();
-                    measurementDisplayMap.put(category, list);
-                }
+				if (list == null) {
+					list = new ArrayList<MeasurementDisplay>();
+					measurementDisplayMap.put(category, list);
+				}
 
-                list.add(createMeasurementDisplay(measurementData, measurementDefinition));
-            }
-        }
-        return new ArrayList<String>(measurementDisplayMap.keySet());
-    }
+				list.add(createMeasurementDisplay(measurementData,
+						measurementDefinition));
+			}
+		}
+		return new ArrayList<String>(measurementDisplayMap.keySet());
+	}
 
-    /**
-     * creates the measurementDisplay items to be used to display the formatted values
-     *
-     * @param measurementData
-     * @param measurementDefinition
-     * @return
-     */
-    public MeasurementDisplay createMeasurementDisplay(MeasurementData measurementData, MeasurementDefinition measurementDefinition)
-    {
-        MeasurementDisplay measurementDisplay = new MeasurementDisplay(measurementData, measurementDefinition);
-        measurementDisplay.getMeasurementDefinition().getUnits();
+	/**
+	 * creates the measurementDisplay items to be used to display the formatted
+	 * values
+	 * 
+	 * @param measurementData
+	 * @param measurementDefinition
+	 * @return
+	 */
+	public MeasurementDisplay createMeasurementDisplay(
+			MeasurementData measurementData,
+			MeasurementDefinition measurementDefinition) {
+		MeasurementDisplay measurementDisplay = new MeasurementDisplay(
+				measurementData, measurementDefinition);
+		measurementDisplay.getMeasurementDefinition().getUnits();
 
-        // TODO: send in the current Locale
-        if (measurementDisplay.getMeasurementData().getValue() instanceof Double)
-        {
-            try
-            {
-                double dataValue = (Double)measurementDisplay.getMeasurementData().getValue();
-                MeasurementUnits units = measurementDisplay.getMeasurementDefinition().getUnits();
-                MeasurementNumericValueAndUnits dataValueAndUnits;
-                if (units == MeasurementUnits.NONE)
-                    dataValueAndUnits = new MeasurementIntegerValueAndUnits(dataValue, units);
-                else
-                    dataValueAndUnits = MeasurementConverter.fit(dataValue, units);
-                measurementDisplay.setMeasurementValueAndUnits(dataValueAndUnits);
-            }
-            catch (MeasurementConversionException mce)
-            {
-                /*
-                * this should normally never happen because the data is coming from the
-                * database where it's already been validated by the model constraits, but
-                * it's possible that we missed something somewhere else in the system or
-                * that someone purposefully tried to harm the data; in this case, don't
-                * blow up
-                *
-                * TODO: add logging so we know when / if this error occurs
-                */
-                measurementDisplay.setMeasurementValueAndUnits(MeasurementNumericValueAndUnits.ERROR);
-            }
-        }
-        // if its a string -- just save the string into the Formatted value display
-        else if (measurementDisplay.getMeasurementData().getValue() instanceof String)
-        {
-            String dataValue = (String)measurementDisplay.getMeasurementData().getValue();
+		// TODO: send in the current Locale
+		if (measurementDisplay.getMeasurementData().getValue() instanceof Double) {
+			try {
+				double dataValue = (Double) measurementDisplay
+						.getMeasurementData().getValue();
+				MeasurementUnits units = measurementDisplay
+						.getMeasurementDefinition().getUnits();
+				MeasurementNumericValueAndUnits dataValueAndUnits;
+				if (units == MeasurementUnits.NONE) {
+					Double dbl = Double.valueOf(dataValue);
+					if (dataValue != dbl.intValue())
+						dataValueAndUnits = MeasurementConverter.fit(dataValue,
+								units);
+					else
+						dataValueAndUnits = new MeasurementIntegerValueAndUnits(
+								dataValue, units);
+				} else
+					dataValueAndUnits = MeasurementConverter.fit(dataValue,
+							units);
+				measurementDisplay
+						.setMeasurementValueAndUnits(dataValueAndUnits);
+			} catch (MeasurementConversionException mce) {
+				/*
+				 * this should normally never happen because the data is coming
+				 * from the database where it's already been validated by the
+				 * model constraits, but it's possible that we missed something
+				 * somewhere else in the system or that someone purposefully
+				 * tried to harm the data; in this case, don't blow up
+				 * 
+				 * TODO: add logging so we know when / if this error occurs
+				 */
+				measurementDisplay
+						.setMeasurementValueAndUnits(MeasurementNumericValueAndUnits.ERROR);
+			}
+		}
+		// if its a string -- just save the string into the Formatted value
+		// display
+		else if (measurementDisplay.getMeasurementData().getValue() instanceof String) {
+			String dataValue = (String) measurementDisplay.getMeasurementData()
+					.getValue();
 
-            measurementDisplay.setMeasurementValueAndUnits(new MeasurementStringValueAndUnits(dataValue, MeasurementUnits.NONE));
-        }
+			measurementDisplay
+					.setMeasurementValueAndUnits(new MeasurementStringValueAndUnits(
+							dataValue, MeasurementUnits.NONE));
+		}
 
-        return measurementDisplay;
-    }
+		return measurementDisplay;
+	}
 
-    public Map<String, MeasurementDefinition> getMeasurementDefinitionMap()
-    {
-        return measurementDefinitionMap;
+	public Map<String, MeasurementDefinition> getMeasurementDefinitionMap() {
+		return measurementDefinitionMap;
 
-    }
+	}
 }



More information about the embjopr-commits mailing list