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

inundationDuration/floodDuration multiple columns+chartLines refactoring
author gernotbelger
date Mon, 02 Jul 2018 19:01:09 +0200
parents 4f411c6ee3ae
children 0fc9c82e744e
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/AbstractSInfoProcessor.java	Mon Jul 02 17:40:39 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/AbstractSInfoProcessor.java	Mon Jul 02 19:01:09 2018 +0200
@@ -68,6 +68,23 @@
         }
     }
 
+    protected static final AbstractCalculationResult getResult(final DiagramGenerator generator, final ArtifactAndFacet bundle) {
+        final CallContext context = generator.getContext();
+        final AbstractCalculationResult data = (AbstractCalculationResult) bundle.getData(context);
+        if (data == null) {
+            // Check has been here before so we keep it for security reasons
+            // this should never happen though.
+            final String facetName = bundle.getFacetName();
+            throw new IllegalStateException("Data is null for facet: " + facetName);
+        }
+
+        return data;
+    }
+
+    protected static final int getDataIndex(final ArtifactAndFacet bundle) {
+        return ((SInfoResultFacet) bundle.getFacet()).getDataIndex();
+    }
+
     /**
      * @return The axis label
      */
@@ -75,6 +92,16 @@
 
     protected final String buildSeriesForType(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible,
             final IResultType resultType, final Double gapDistance) {
+
+        final AbstractCalculationResult data = getResult(generator, bundle);
+
+        final double[][] points = data.getStationPoints(resultType);
+
+        return buildSeriesForType(points, generator, bundle, theme, visible, gapDistance);
+    }
+
+    protected final String buildSeriesForType(final double[][] points, final DiagramGenerator generator, final ArtifactAndFacet bundle,
+            final ThemeDocument theme, final boolean visible, final Double gapDistance) {
         final CallContext context = generator.getContext();
         final Map<String, String> metaData = bundle.getFacet().getMetaData();
 
@@ -85,68 +112,55 @@
 
         final String facetName = bundle.getFacetName();
 
-        final AbstractCalculationResult data = (AbstractCalculationResult) bundle.getData(context);
-        if (data == null) {
-            // Check has been here before so we keep it for security reasons
-            // this should never happen though.
-            throw new IllegalStateException("Data is null for facet: " + facetName);
-        }
-
-        final double[][] points = generatePoints(context, artifact, data, facetName, resultType);
+        final double[][] filteredPoints = filterPoints(points, context, artifact, facetName);
 
         if (gapDistance == null)
-            StyledSeriesBuilder.addPoints(series, points, true);
+            StyledSeriesBuilder.addPoints(series, filteredPoints, true);
         else
-            StyledSeriesBuilder.addPoints(series, points, true, gapDistance);
+            StyledSeriesBuilder.addPoints(series, filteredPoints, true, gapDistance);
 
         generator.addAxisSeries(series, getAxisName(), visible);
 
         return metaData.get("Y");
     }
 
-    protected final String buildSeriesForType1(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme,
-            final boolean visible,
-            final IResultType resultType, final Double gapDistance) {
-        final CallContext context = generator.getContext();
-        final Map<String, String> metaData = bundle.getFacet().getMetaData();
-
-        final Artifact artifact = bundle.getArtifact();
-
-        final StyledXYSeries series = new StyledXYSeries(bundle.getFacetDescription(), theme);
-        series.putMetaData(metaData, artifact, context);
-
-        final String facetName = bundle.getFacetName();
-
-        final AbstractCalculationResult data = (AbstractCalculationResult) bundle.getData(context);
-        if (data == null) {
-            // Check has been here before so we keep it for security reasons
-            // this should never happen though.
-            throw new IllegalStateException("Data is null for facet: " + facetName);
-        }
-
-        final double[][] points = generatePoints(context, artifact, data, facetName, resultType, bundle.getFacet().getIndex());
-
-        if (gapDistance == null)
-            StyledSeriesBuilder.addPoints(series, points, true);
-        else
-            StyledSeriesBuilder.addPoints(series, points, true, gapDistance);
-
-        generator.addAxisSeries(series, getAxisName(), visible);
-
-        return metaData.get("Y");
-    }
+    // protected final String buildSeriesForType1(final DiagramGenerator generator, final ArtifactAndFacet bundle, final
+    // ThemeDocument theme,
+    // final boolean visible, final IResultType resultType, final Double gapDistance) {
+    // final CallContext context = generator.getContext();
+    // final Map<String, String> metaData = bundle.getFacet().getMetaData();
+    //
+    // final Artifact artifact = bundle.getArtifact();
+    //
+    // final StyledXYSeries series = new StyledXYSeries(bundle.getFacetDescription(), theme);
+    // series.putMetaData(metaData, artifact, context);
+    //
+    // final String facetName = bundle.getFacetName();
+    //
+    // final AbstractCalculationResult data = (AbstractCalculationResult) bundle.getData(context);
+    // if (data == null) {
+    // // Check has been here before so we keep it for security reasons
+    // // this should never happen though.
+    // throw new IllegalStateException("Data is null for facet: " + facetName);
+    // }
+    //
+    // final double[][] points = generatePoints(context, artifact, data, facetName, resultType,
+    // bundle.getFacet().getIndex());
+    //
+    // if (gapDistance == null)
+    // StyledSeriesBuilder.addPoints(series, points, true);
+    // else
+    // StyledSeriesBuilder.addPoints(series, points, true, gapDistance);
+    //
+    // generator.addAxisSeries(series, getAxisName(), visible);
+    //
+    // return metaData.get("Y");
+    // }
 
     protected final String buildSeriesForTkh(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme,
             final boolean visible) {
-        final CallContext context = generator.getContext();
 
-        final String facetName = bundle.getFacetName();
-        final AbstractTkhCalculationResult data = (AbstractTkhCalculationResult) bundle.getData(context);
-        if (data == null) {
-            // Check has been here before so we keep it for security reasons
-            // this should never happen though.
-            throw new IllegalStateException("Data is null for facet: " + facetName);
-        }
+        final AbstractTkhCalculationResult data = (AbstractTkhCalculationResult) getResult(generator, bundle);
 
         final StyledXYSeries seriesUp = new StyledXYSeries(bundle.getFacetDescription(), theme);
         final double[][] pointsUp = data.getTkhUpPoints();
@@ -182,10 +196,8 @@
         return scales.getRadius(river, start, end);
     }
 
-    private double[][] generatePoints(final CallContext context, final Artifact artifact, final AbstractCalculationResult data, final String facetName,
-            final IResultType resultType) {
+    private double[][] filterPoints(final double[][] points, final CallContext context, final Artifact artifact, final String facetName) {
 
-        final double[][] points = data.getStationPoints(resultType);
         if (facetName.endsWith(".filtered")) {
             final Double radius = findRadius(context, artifact);
             return movingAverage(radius, points);
@@ -194,17 +206,18 @@
         return points;
     }
 
-    private double[][] generatePoints(final CallContext context, final Artifact artifact, final AbstractCalculationResult data, final String facetName,
-            final IResultType resultType, final int index) {
-
-        final double[][] points = data.getStationPoints(resultType, index);
-        if (facetName.endsWith(".filtered")) {
-            final Double radius = findRadius(context, artifact);
-            return movingAverage(radius, points);
-        }
-
-        return points;
-    }
+    // private double[][] generatePoints(final CallContext context, final Artifact artifact, final AbstractCalculationResult
+    // data, final String facetName,
+    // final IResultType resultType, final int index) {
+    //
+    // final double[][] points = data.getStationPoints(resultType, index);
+    // if (facetName.endsWith(".filtered")) {
+    // final Double radius = findRadius(context, artifact);
+    // return movingAverage(radius, points);
+    // }
+    //
+    // return points;
+    // }
 
     private double[][] movingAverage(final Double radius, final double[][] points) {
 
@@ -231,11 +244,14 @@
         return generator.msg(this.i18n_axis_label, "MISSING");
     }
 
-    // Moved from SInfoLineProcessor:
     protected static final Facet createFacet(final CallContext context, final String hash, final String id, final AbstractCalculationResult result,
-            final int index, final String axisLabel, final String facetId, final String description) {
-        final String facetFlowDepthFilteredDescription = Resources.getMsg(context.getMeta(), description, description, result.getLabel());
-        return new SInfoResultFacet(index, facetId, facetFlowDepthFilteredDescription, axisLabel, ComputeType.ADVANCE, id, hash);
+            final int resultIndex, final String axisLabel, final String facetId, final String description) {
+        return createFacet(context, hash, id, result, resultIndex, -1, axisLabel, facetId, description);
     }
 
+    protected static final Facet createFacet(final CallContext context, final String hash, final String id, final AbstractCalculationResult result,
+            final int resultIndex, final int dataIndex, final String axisLabel, final String facetId, final String description) {
+        final String facetFlowDepthFilteredDescription = Resources.getMsg(context.getMeta(), description, description, result.getLabel());
+        return new SInfoResultFacet(resultIndex, dataIndex, facetId, facetFlowDepthFilteredDescription, axisLabel, ComputeType.ADVANCE, id, hash);
+    }
 }
\ No newline at end of file

http://dive4elements.wald.intevation.org