diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/MainValuesArtifact.java @ 1085:07878836ee0d

Plot "real" (respecting parameters) W and Q MainValues, yet in wrong scale. flys-artifacts/trunk@2588 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Fri, 26 Aug 2011 08:49:18 +0000
parents fa01c3602f66
children e298c4d28927
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/MainValuesArtifact.java	Fri Aug 26 08:07:47 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/MainValuesArtifact.java	Fri Aug 26 08:49:18 2011 +0000
@@ -7,21 +7,23 @@
 
 import org.w3c.dom.Document;
 
-import de.intevation.artifactdatabase.state.DefaultFacet;
 import de.intevation.artifactdatabase.state.Facet;
 import de.intevation.artifactdatabase.state.DefaultOutput;
 import de.intevation.artifactdatabase.state.State;
+import de.intevation.artifactdatabase.data.StateData;
 
 import de.intevation.artifacts.Artifact;
 import de.intevation.artifacts.ArtifactFactory;
-import de.intevation.artifacts.CallContext;
 import de.intevation.artifacts.CallMeta;
 import de.intevation.flys.artifacts.model.RiverFactory;
 
-import de.intevation.flys.artifacts.model.FacetTypes;
+import de.intevation.flys.artifacts.model.MainValuesWFacet;
+import de.intevation.flys.artifacts.model.MainValuesQFacet;
+import de.intevation.artifactdatabase.data.DefaultStateData;
 import de.intevation.flys.artifacts.states.StaticState;
 
 import de.intevation.flys.model.Gauge;
+import de.intevation.flys.model.MainValue;
 import de.intevation.flys.model.River;
 
 
@@ -73,17 +75,18 @@
     protected void initialize(Artifact artifact, Object context, CallMeta meta) {
         logger.debug("MainValuesArtifact.initialize");
         WINFOArtifact winfo = (WINFOArtifact) artifact;
-        River river = winfo.getRiver();
-        double location = winfo.getLocations()[0]; // Ort der Abflusskurve
-
-        logger.error("Location: " + location);
-        Gauge gauge = river.determineGaugeByPosition(location);
+        //River river = winfo.getRiver();
+        double location = winfo.getLocations()[0];
+        logger.debug("MainValues.location: " + location);
+        addData("location", new DefaultStateData("location", null, null,
+                    String.valueOf(location)));
+        addData("river", winfo.getData("river"));
     }
 
 
     /**
      * Get a list containing the one and only State.
-     * @param context ignored.
+     * @param  context ignored.
      * @return list with one and only state.
      */
     @Override
@@ -128,7 +131,10 @@
         else {
             state = new StaticState();
             List<Facet> fs = new ArrayList<Facet>();
-            fs.add(new MainValuesFacet());
+            Facet qfacet = new MainValuesQFacet();
+            Facet wfacet = new MainValuesWFacet();
+            fs.add(qfacet);
+            fs.add(wfacet);
             // TODO check if facets and outputs already exist.
             // TODO also check, this is usually done in initialize, too.
             facets.put(state.getID(), fs);
@@ -148,67 +154,56 @@
         return state;
     }
 
+    /**
+     * Get the river.
+     * @todo resolve, this is a duplicate of WINFOArtifact.
+     */
+    public River getRiver() {
+        StateData dRiver = getData("river");
 
-    public List getMainValues() {
-        River river = RiverFactory.getRiver("Saar");
-        logger.warn("Go to river " + river);
-        double location = 5.0f;
-        Gauge gauge = river.determineGaugeByPosition(location);
-        return gauge.getMainValues();
+        return dRiver != null
+            ? RiverFactory.getRiver((String) dRiver.getValue())
+            : null;
     }
 
+    protected Gauge getGauge() {
+        River river = getRiver();
 
-    /* FACET IMPLEMENTATION */
-    // TODO evaluate whether DefaultFacet can do.
-    static class MainValuesFacet
-    extends      DefaultFacet
-    implements   FacetTypes {
-
-        public MainValuesFacet() {
-            description = "facet.discharge_curves.mainvalues.description";
-            name = COMPUTED_DISCHARGE_MAINVALUES;
-            //Resources.getMsg(meta, I18N_DESCRIPTION, I18N_DESCRIPTION));
-            index = 0;
+        if (river == null) {
+            return null;
         }
 
+        double location = Double.parseDouble(
+                (String)getData("location").getValue());
 
-        /**
-         * Returns the description of this facet.
-         *
-         * @return the description of this facet.
-         */
-        @Override
-        public String getDescription() {
-            // TODO remove, is part of DefaultFacet.
-            return "facet.mainvalues";
+        return river.determineGaugeByPosition(location);
+    }
+
+    public List<MainValue> getMainValuesQ() {
+        List<MainValue> filteredList = new ArrayList<MainValue>();
+        Gauge gauge = getGauge();
+        if (gauge != null) {
+            List<MainValue> orig = gauge.getMainValues();
+            for (MainValue mv : orig) {
+                if (mv.getMainValue().getType().getName().equals("Q")) {
+                    filteredList.add(mv);
+                }
+            }
         }
- 
- 
-        /**
-         * Returns the data this facet requires.
-         *
-         * @param artifact the owner artifact.
-         * @param context  the CallContext (ignored).
-         *
-         * @return the data.
-         */
-        @Override
-        public Object getData(Artifact artifact, CallContext context) {
-            MainValuesArtifact mvArtifact = (MainValuesArtifact) artifact;
-            return mvArtifact.getMainValues();
+        return filteredList;
+    }
+
+    public List<MainValue> getMainValuesW() {
+        List<MainValue> filteredList = new ArrayList<MainValue>();
+        Gauge gauge = getGauge();
+        if (gauge != null) {
+            List<MainValue> orig = gauge.getMainValues();
+            for (MainValue mv : orig) {
+                if (mv.getMainValue().getType().getName().equals("W")) {
+                    filteredList.add(mv);
+                }
+            }
         }
- 
-
-        /**
-         * Create a deep copy of this Facet.
-         * @return a deep copy.
-         */
-        @Override
-        public MainValuesFacet deepCopy() {
-            MainValuesFacet copy = new MainValuesFacet();
-            copy.set(this);
-            return copy;
-        }
+        return filteredList;
     }
- 
 }

http://dive4elements.wald.intevation.org