diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/ReferenceCurveFacet.java @ 2256:dd93a8e1377a

First steps to serve the data in cm if we are are gauges only. flys-artifacts/trunk@3910 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 03 Feb 2012 18:03:26 +0000
parents fdeb6d61c24c
children d4330439be3a
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/ReferenceCurveFacet.java	Fri Feb 03 15:22:56 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/ReferenceCurveFacet.java	Fri Feb 03 18:03:26 2012 +0000
@@ -1,5 +1,8 @@
 package de.intevation.flys.artifacts.model;
 
+import java.util.List;
+import java.util.Arrays;
+
 import de.intevation.artifactdatabase.state.Facet;
 
 import de.intevation.artifacts.Artifact;
@@ -15,6 +18,11 @@
 public class ReferenceCurveFacet 
 extends      DataFacet
 {
+    public static final String BLACK_BOARD_KEY = "reference.curve.axis.scale";
+
+    public static final List BLACK_BOARD_KEY_LIST =
+        Arrays.asList(new String [] { BLACK_BOARD_KEY });
+
     private static Logger log = Logger.getLogger(ReferenceCurveFacet.class);
 
     public ReferenceCurveFacet() {
@@ -42,18 +50,16 @@
                 " /stateId: " + stateId);
         }
 
+        return getWW(artifact, context);
+    }
+
+    protected WW getWW(Artifact artifact, CallContext context) {
         FLYSArtifact winfo = (FLYSArtifact)artifact;
 
         CalculationResult res = (CalculationResult)
             winfo.compute(context, hash, stateId, type, false);
 
-        return getInternalData((WW [])res.getData());
-    }
-
-    /** To be overwritten by normalized reference curve. */
-    protected Object getInternalData(WW [] wws) {
-        // Using the ApplyFunctionIterator to unify data processing.
-        return new WW.ApplyFunctionIterator(wws[index]);
+        return ((WW [])res.getData())[index];
     }
 
     @Override
@@ -72,5 +78,33 @@
         copy.set(this);
         return copy;
     }
+
+    @Override
+    public List getDataProviderKeys(Artifact art) {
+        return BLACK_BOARD_KEY_LIST;
+    }
+
+    @Override
+    public Object provideBlackboardData(
+        Artifact    artifact,
+        Object      key,
+        Object      param,
+        CallContext context
+    ) {
+        if (!key.equals(BLACK_BOARD_KEY)) {
+            return null;
+        }
+
+        Object obj = context.getContextValue("reference.curve.axis.scale");
+
+        if (!(obj instanceof WWAxisTypes)) {
+            obj = new WWAxisTypes(getWW(artifact, context));
+        }
+        else {
+            ((WWAxisTypes)obj).classify(getWW(artifact, context));
+        }
+
+        return obj;
+    }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org