diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/DurationCurveFacet.java @ 2746:4634cf5574f7

Let DurationCurveFacet provide relevant data via Blackboard. flys-artifacts/trunk@4481 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Wed, 23 May 2012 20:34:02 +0000
parents b1b0a0b61845
children 5642a83420f2
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/DurationCurveFacet.java	Wed May 23 19:31:26 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/DurationCurveFacet.java	Wed May 23 20:34:02 2012 +0000
@@ -1,5 +1,8 @@
 package de.intevation.flys.artifacts.model;
 
+import java.util.List;
+import java.util.ArrayList;
+
 import org.apache.log4j.Logger;
 
 import de.intevation.artifacts.Artifact;
@@ -8,15 +11,25 @@
 import de.intevation.artifactdatabase.state.DefaultFacet;
 import de.intevation.artifactdatabase.state.Facet;
 
+import de.intevation.flys.artifacts.FLYSArtifact;
 import de.intevation.flys.artifacts.WINFOArtifact;
 
 import de.intevation.flys.artifacts.states.DefaultState.ComputeType;
 
 
+/**
+ * Data of a duration curve.
+ */
 public class DurationCurveFacet extends DefaultFacet {
 
     private static Logger logger = Logger.getLogger(DurationCurveFacet.class);
 
+    /** Blackboard data provider key for durationcurve (wqday) data. */
+    public static String BB_DURATIONCURVE = "durationcurve";
+
+    /** Blackboard data provider key for km of durationcurve. */
+    public static String BB_DURATIONCURVE_KM = "durationcurve.km";
+
     public DurationCurveFacet() {
     }
 
@@ -25,6 +38,9 @@
     }
 
 
+    /**
+     * Expose state computation from WINFOArtifact.
+     */
     public Object getData(Artifact artifact, CallContext context) {
         logger.debug("Get data for duration curve data");
 
@@ -36,6 +52,42 @@
         return cr.getData();
     }
 
+
+    @Override
+    public List getStaticDataProviderKeys(Artifact art) {
+        List list = new ArrayList();
+        list.add(BB_DURATIONCURVE);
+        list.add(BB_DURATIONCURVE_KM);
+        return list;
+    }
+
+
+    /**
+     * Can provide whatever getData returns and additionally the location.
+     * @param key      will respond on BB_DURATIONCURVE +KM
+     * @param param    ignored
+     * @param context  ignored
+     * @return whatever getData delivers or location.
+     */
+    @Override
+    public Object provideBlackboardData(Artifact artifact,
+        Object key,
+        Object param,
+        CallContext context
+    ) {
+        if (key.equals(BB_DURATIONCURVE)) {
+            return getData(artifact, context);
+        }
+        else if (key.equals(BB_DURATIONCURVE_KM)) {
+            return ((FLYSArtifact)artifact).getDataAsString("ld_locations");
+        }
+        else {
+            return null;
+        }
+    }
+
+
+    /** Create a deep copy. */
     @Override 
     public Facet deepCopy() {
         DurationCurveFacet copy = new DurationCurveFacet();

http://dive4elements.wald.intevation.org