diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/CrossSectionFacet.java @ 1967:27bb2e24f7f8

Preparations for better CrossSection diagrams. flys-artifacts/trunk@3378 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Fri, 09 Dec 2011 15:57:32 +0000
parents 51e59f221333
children 98f3ef8da857
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/CrossSectionFacet.java	Fri Dec 09 15:53:24 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/CrossSectionFacet.java	Fri Dec 09 15:57:32 2011 +0000
@@ -1,5 +1,8 @@
 package de.intevation.flys.artifacts.model;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.log4j.Logger;
 
 import de.intevation.artifacts.Artifact;
@@ -8,22 +11,26 @@
 import de.intevation.artifactdatabase.state.DefaultFacet;
 import de.intevation.artifactdatabase.state.Facet;
 
-import de.intevation.flys.artifacts.WINFOArtifact;
+import de.intevation.flys.artifacts.CrossSectionArtifact;
 
 import de.intevation.flys.artifacts.states.DefaultState.ComputeType;
 
 
 /**
- * Trival Facet for Cross Sections.
+ * Trival Facet for Cross Sections (profiles).
  */
 public class CrossSectionFacet
 extends      DefaultFacet
 implements   FacetTypes {
 
+    public static String BLACKBOARD_CS_MASTER_DATA
+        = "crosssection.masterprofile.data";
+
     private static Logger logger = Logger.getLogger(CrossSectionFacet.class);
 
     protected ComputeType type;
 
+
     /** Trivial constructor, set (maybe localized) description. */
     public CrossSectionFacet(int idx, String description) {
         super(idx, CROSS_SECTION, description);
@@ -31,15 +38,53 @@
     }
 
 
+    /** Tell world we know about crosssection masters data and its index. */
+    public List getDataProviderKeys(Artifact art) {
+        CrossSectionArtifact artifact = (CrossSectionArtifact) art;
+        List keys = new ArrayList();
+        if (artifact.isMaster()) {
+            keys.add(BLACKBOARD_CS_MASTER_DATA);
+        }
+        return keys;
+    }
+
+
     /**
-     * Gets dummy data.
+     * Can provide the master cross section lines or its index.
+     * @param artifact crosssection-artifact
+     * @param key      will respond on BLACKBOARD_CS_MASTER_DATA
+     * @param param    ignored
+     * @param context  ignored
+     * @return data from artifact (cross section master track).
      */
-    public Object getData(Artifact artifact, CallContext context) {
+    public Object provideBlackboardData(Artifact artifact,
+        Object key,
+        Object param,
+        CallContext context
+    ) {
+        CrossSectionArtifact crossSection = (CrossSectionArtifact) artifact;
+
+        if (key.equals(BLACKBOARD_CS_MASTER_DATA)) {
+            return crossSection.searchCrossSectionLine();
+        }
+        else {
+            logger.warn("Cannot provide data for key: " + key);
+            return null;
+        }
+    }
+
+
+    /**
+     * Gets Cross Section (profile).
+     * @param art artifact to get data from.
+     * @param context ignored
+     */
+    public Object getData(Artifact art, CallContext context) {
         logger.debug("Get data for cross section");
 
-        WINFOArtifact winfo = (WINFOArtifact)artifact;
+        CrossSectionArtifact artifact = (CrossSectionArtifact)art;
 
-        return winfo.getCrossSectionData();
+        return artifact.getCrossSectionData();
     }
 
 
@@ -52,4 +97,3 @@
     }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
-

http://dive4elements.wald.intevation.org