diff artifacts/src/main/java/org/dive4elements/river/artifacts/WaterLineArtifact.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 af13ceeba52a
children
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/WaterLineArtifact.java	Fri Aug 17 14:29:05 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/WaterLineArtifact.java	Fri Aug 17 15:31:02 2018 +0200
@@ -8,24 +8,33 @@
 
 package org.dive4elements.river.artifacts;
 
-import org.dive4elements.artifacts.CallContext;
+import java.io.Serializable;
 
-import org.dive4elements.river.artifacts.geom.Lines;
-import org.dive4elements.river.model.FastCrossSectionLine;
-
+import org.dive4elements.artifacts.CallContext;
+import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
 
 /**
  * Interface, Artifact can create WaterLines (Water against Cross-Profile).
  */
 public interface WaterLineArtifact {
 
-    /** Get points that define a line of a (water)facet against a cross-
-     * section. */
-    public Lines.LineData getWaterLines(
-        int                  facetIdx,
-        FastCrossSectionLine      csl,
-        double                      d,
-        double                      w,
-        CallContext           context);
-}
-// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
+    /**
+     * Get points that define a line of a (water)facet against a cross-
+     * section.
+     *
+     * @param stateId
+     * @param hash
+     *
+     * @param waterLineIndex
+     *            The object whith wich this artifact determines which of the waterlevels to return. Given to the facet when
+     *            constructed. Can be an integer in the simple case, or a more complex description.
+     */
+    // REMARK: we are giving type, hash and stateId so individual artifacts may call back on their compute method, which
+    // needs
+    // those to hash the result data.
+    // Currently, the old implementations don't do that but simply execute the whole computation each time they are
+    // called...
+    // TODO: instead we should compute outside and provide the computed data to this method.
+    double getWaterLevel(ComputeType type, String hash, String stateId, double currentKm, Serializable waterLineIndex, double nextKm, double prevKm,
+            CallContext context);
+}
\ No newline at end of file

http://dive4elements.wald.intevation.org