diff artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/SInfoResultFacet.java @ 9205:3dae6b78e1da

inundationDuration/floodDuration multiple columns+chartLines refactoring
author gernotbelger
date Mon, 02 Jul 2018 19:01:09 +0200
parents b4402594213b
children 0fc9c82e744e
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/SInfoResultFacet.java	Mon Jul 02 17:40:39 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/SInfoResultFacet.java	Mon Jul 02 19:01:09 2018 +0200
@@ -28,17 +28,42 @@
 
     private static Logger log = Logger.getLogger(SInfoResultFacet.class);
 
+    private int dataIndex;
+
+    private int resultIndex;
+
     public SInfoResultFacet() {
         // required for clone operation deepCopy()
     }
 
-    public SInfoResultFacet(final int idx, final String name, final String description, final String yAxisLabelKey, final ComputeType type,
+    public SInfoResultFacet(final int resultIndex, final String name, final String description, final String yAxisLabelKey, final ComputeType type,
             final String stateId, final String hash) {
-        super(idx, name, description, type, hash, stateId);
+        // REMARK:
+        this(resultIndex, resultIndex, -1, name, description, yAxisLabelKey, type, stateId, hash);
+    }
+
+    public SInfoResultFacet(final int resultIndex, final int dataIndex, final String name, final String description, final String yAxisLabelKey,
+            final ComputeType type, final String stateId, final String hash) {
+        // REMARK: in some cases, we have several
+        this(resultIndex, resultIndex, dataIndex, name, description, yAxisLabelKey, type, stateId, hash);
+    }
+
+    public SInfoResultFacet(final int facetIndex, final int resultIndex, final int dataIndex, final String name, final String description,
+            // REMARK: in some cases, we have several data-lines for the same result (which normally determines the facet index) and
+            // facet name. But index and name are used by the client side as unique keys for the chart themes...
+            // So we might have different facet index and result index.
+            final String yAxisLabelKey, final ComputeType type, final String stateId, final String hash) {
+        super(facetIndex, name, description, type, hash, stateId);
+        this.resultIndex = resultIndex;
+        this.dataIndex = dataIndex;
         this.metaData.put("X", "sinfo.chart.km.xaxis.label");
         this.metaData.put("Y", yAxisLabelKey);
     }
 
+    public int getDataIndex() {
+        return this.dataIndex;
+    }
+
     @Override
     public Object getData(final Artifact artifact, final CallContext context) {
         log.debug("Get data for result at index: " + this.index);
@@ -49,7 +74,7 @@
 
         final AbstractCalculationResults<AbstractCalculationResult> data = (AbstractCalculationResults<AbstractCalculationResult>) res.getData();
 
-        return data.getResults().get(this.index);
+        return data.getResults().get(this.resultIndex);
     }
 
     /** Copy deeply. */

http://dive4elements.wald.intevation.org