tmf: Support type double in XML analysis and XML XY views
authorBernd Hufmann <Bernd.Hufmann@ericsson.com>
Mon, 28 Mar 2016 11:41:44 +0000 (07:41 -0400)
committerBernd Hufmann <bernd.hufmann@ericsson.com>
Mon, 4 Apr 2016 16:50:20 +0000 (12:50 -0400)
Change-Id: Ic15969624191fba35ec4b5b7b90394e3253a7e61
Signed-off-by: Bernd Hufmann <Bernd.Hufmann@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/69372
Reviewed-by: Genevieve Bastien <gbastien+lttng@versatic.net>
Tested-by: Genevieve Bastien <gbastien+lttng@versatic.net>
Reviewed-by: Hudson CI
Reviewed-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/tmf/analysis/xml/core/model/TmfXmlStateValue.java
tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/tmf/analysis/xml/core/module/xmlStateProvider.xsd
tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/tmf/analysis/xml/core/stateprovider/TmfXmlStrings.java
tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/xychart/XmlXYViewer.java

index e2e793981d5f2158903ae41ebfb06a02fba19ec3..92a0830b2ded50943c7dec78835898b54486b899 100644 (file)
@@ -139,6 +139,9 @@ public abstract class TmfXmlStateValue implements ITmfXmlStateValue {
         case TmfXmlStrings.TYPE_LONG:
             fForcedType = ITmfStateValue.Type.LONG;
             break;
+        case TmfXmlStrings.TYPE_DOUBLE:
+            fForcedType = ITmfStateValue.Type.DOUBLE;
+            break;
         default:
             fForcedType = ITmfStateValue.Type.NULL;
         }
index 1fd93e3a3d968abcc2a11aa36f5d03d2ca6269d6..87038570e435395d2bfe81db61d570376cb3c00c 100644 (file)
                                                <xs:annotation>
                                                        <xs:documentation>The value should be a long</xs:documentation></xs:annotation></xs:enumeration>
                                        <xs:enumeration value="string" >
+                                               <xs:annotation>
+                                                       <xs:documentation>The value should be a string</xs:documentation></xs:annotation></xs:enumeration>
+                                       <xs:enumeration value="double" >
                                                <xs:annotation>
                                                        <xs:documentation>The value should be a double</xs:documentation></xs:annotation></xs:enumeration>
                                </xs:restriction>
index 47f4c1b5238129e044d9aafd23c6fa4a1f15276a..d151efa4ec59f723328736d7c2732dcb18e81a6c 100644 (file)
@@ -72,6 +72,8 @@ public interface TmfXmlStrings {
     String TYPE_SELF = "self";
     String TYPE_INT = "int";
     String TYPE_LONG = "long";
+    /** @since 2.0 */
+    String TYPE_DOUBLE = "double";
     String TYPE_STRING = "string";
     String TYPE_EVENT_NAME = "eventName";
     String TYPE_DELETE = "delete";
index d75767d82997bf8f3f5862739faf765bf53b48e7..af2cde8b608dea8788ead6fd6e863d1aa6c9de2a 100644 (file)
@@ -279,7 +279,6 @@ public class XmlXYViewer extends TmfCommonXLineChartViewer {
                     }
                     fSeriesData.put(quark, new SeriesData(xvalues.length, display.getAttributeQuark(quark), seriesName, entry.getType()));
                 }
-                double yvalue = 0.0;
                 for (int i = 0; i < xvalues.length; i++) {
                     if (monitor != null && monitor.isCanceled()) {
                         return;
@@ -292,9 +291,25 @@ public class XmlXYViewer extends TmfCommonXLineChartViewer {
                     time = time > traceEnd ? traceEnd : time;
 
                     for (int quark : quarks) {
+                        double yvalue = 0.0;
                         SeriesData data = checkNotNull(fSeriesData.get(quark));
                         try {
-                            yvalue = ss.querySingleState(time, data.getDisplayQuark()).getStateValue().unboxLong();
+                            ITmfStateValue value = ss.querySingleState(time, data.getDisplayQuark()).getStateValue();
+                            switch (value.getType()) {
+                            case DOUBLE:
+                                yvalue = value.unboxDouble();
+                                break;
+                            case LONG:
+                                yvalue = value.unboxLong();
+                                break;
+                            case INTEGER:
+                                yvalue = value.unboxInt();
+                                break;
+                            case NULL:
+                            case STRING:
+                            default:
+                                break;
+                            }
                             data.setYValue(i, yvalue);
                         } catch (TimeRangeException e) {
                             data.setYValue(i, 0);
This page took 0.028729 seconds and 5 git commands to generate.