diff artifacts/src/main/java/org/dive4elements/river/artifacts/FixationArtifact.java @ 9425:3f49835a00c3

Extended CrossSectionFacet so it may fetch different data from within the artifact result. Also allows to have acces to the potentially already computed artifact result via its normal computation cache.
author gernotbelger
date Fri, 17 Aug 2018 15:31:02 +0200
parents 5e38e2924c07
children 8d6e56e57c4a
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/FixationArtifact.java	Fri Aug 17 14:29:05 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/FixationArtifact.java	Fri Aug 17 15:31:02 2018 +0200
@@ -8,34 +8,29 @@
 
 package org.dive4elements.river.artifacts;
 
-import org.dive4elements.artifacts.CallContext;
+import java.io.Serializable;
 
-import org.dive4elements.river.artifacts.geom.Lines;
-
+import org.apache.log4j.Logger;
+import org.dive4elements.artifacts.CallContext;
 import org.dive4elements.river.artifacts.model.CalculationResult;
 import org.dive4elements.river.artifacts.model.WKms;
 import org.dive4elements.river.artifacts.model.fixings.FixRealizingResult;
-
 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
 
-import org.dive4elements.river.model.FastCrossSectionLine;
-
-import org.apache.log4j.Logger;
-
 /**
  * The default fixation analysis artifact.
  *
  * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
  */
-public class FixationArtifact
-extends      D4EArtifact
-implements   WaterLineArtifact
-{
+public class FixationArtifact extends D4EArtifact implements WaterLineArtifact {
+
+    private static final long serialVersionUID = 1L;
+
     /** The log for this class. */
     private static Logger log = Logger.getLogger(FixationArtifact.class);
 
     /** The name of the artifact. */
-    public static final String ARTIFACT_NAME = "fixanalysis";
+    private static final String ARTIFACT_NAME = "fixanalysis";
 
     /* FacetActivity for this artifact is registered in FixAnalysisCompute . */
 
@@ -58,33 +53,22 @@
 
     /** Calculate waterlines against a cross section. */
     @Override
-    public Lines.LineData getWaterLines(
-        int                  facetIdx,
-        FastCrossSectionLine      csl,
-        double                      d,
-        double                      w,
-        CallContext           context
-    ) {
-        FixRealizingResult result = (FixRealizingResult)
-            ((CalculationResult)this.compute(
-                context, ComputeType.ADVANCE, false)).getData();
+    public double getWaterLevel(final ComputeType type, final String hash, final String stateId, final double currentKm, final Serializable waterLineIndex,
+            final double nextKm, final double prevKm, final CallContext context) {
+        final FixRealizingResult result = (FixRealizingResult) ((CalculationResult) this.compute(context, ComputeType.ADVANCE, false)).getData();
 
-        WKms wkms = result.getWQKms()[facetIdx];
+        final int wstIndex = (Integer) waterLineIndex;
 
-        double km = csl.getKm();
+        final WKms wkms = result.getWQKms()[wstIndex];
 
         // Find W at km.
-        double wAtKm;
-
-        wAtKm = StaticWKmsArtifact.getWAtKm(wkms, km);
+        final double wAtKm = StaticWKmsArtifact.getWAtKm(wkms, currentKm);
 
         if (wAtKm == -1 || Double.isNaN(wAtKm)) {
-            log.warn("Waterlevel at km " + km + " unknown.");
-            return new Lines.LineData(new double[][] {{}}, 0d, 0d);
+            log.warn("Waterlevel at km " + currentKm + " unknown.");
+            return Double.NaN;
         }
 
-        // This should be FixRealizationResult, which can be getWQKms()ed
-        return Lines.createWaterLines(csl.getPoints(), wAtKm);
+        return wAtKm;
     }
-}
-// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
+}
\ No newline at end of file

http://dive4elements.wald.intevation.org