diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/ManualPointsSingleState.java @ 3198:d35f28655fa6

Create and handle new manual line type facets. flys-artifacts/trunk@4814 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Wed, 27 Jun 2012 15:22:01 +0000
parents 5642a83420f2
children e74e707ff650
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/ManualPointsSingleState.java	Wed Jun 27 15:11:23 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/ManualPointsSingleState.java	Wed Jun 27 15:22:01 2012 +0000
@@ -4,6 +4,9 @@
 
 import org.apache.log4j.Logger;
 
+import org.json.JSONArray;
+import org.json.JSONException;
+
 import de.intevation.artifacts.CallMeta;
 import de.intevation.artifacts.CallContext;
 
@@ -12,12 +15,12 @@
 import de.intevation.flys.artifacts.FLYSArtifact;
 import de.intevation.flys.artifacts.ManualPointsArtifact;
 
+import de.intevation.flys.artifacts.model.CrossSectionWaterLineFacet;
+import de.intevation.flys.artifacts.model.FacetTypes;
 import de.intevation.flys.artifacts.model.ManualPointsFacet;
-import de.intevation.flys.artifacts.model.FacetTypes;
 
 import de.intevation.flys.artifacts.resources.Resources;
 
-
 /**
  * The only state for an ManualPointArtifact.
  */
@@ -26,18 +29,27 @@
 implements   FacetTypes
 {
     /** Developer-centric description of facet. */
-    public static final String I18N_DESCRIPTION = "facet.longitudinal_section.manualpoint";
+    public static final String I18N_DESCRIPTION
+        = "facet.longitudinal_section.manualpoint";
+
+    /** Part of data key. */
+    protected static final String DOT_DATA
+        = ".data";
+
+    /** Part of data key. */
+    protected static final String DOT_LINES
+        = ".lines";
 
     /** The logger that is used in this state. */
-    private static final Logger logger = Logger.getLogger(ManualPointsSingleState.class);
+    private static final Logger logger =
+        Logger.getLogger(ManualPointsSingleState.class);
 
 
     /**
-     * Add an ManualPointsFacet to list of Facets.
+     * Add ManualPointsFacets to list of Facets.
      *
      * @param artifact Ignored.
      * @param hash Ignored.
-     * @param context Ignored.
      * @param meta CallMeta to be used for internationalization.
      * @param facets List to add ManualPointsFacet to.
      *
@@ -54,8 +66,11 @@
 
         // Add Facet per Diagram type if data given.
         for (ChartType ct: ChartType.values()) {
-            String pointData = points.getDataAsString(ct + "." + MANUALPOINTS + ".data");
-            if (pointData != null && !pointData.equals("") && !pointData.equals("[]")) {
+            // Handle points.
+            String pointData = points.getDataAsString(ct + "." + MANUALPOINTS +
+                DOT_DATA);
+            if (pointData != null && !pointData.equals("")
+                && !pointData.equals("[]")) {
                 String fName = ct + "." + MANUALPOINTS;
                 ManualPointsFacet facet = new ManualPointsFacet(
                     0,
@@ -67,12 +82,43 @@
             else {
                 //logger.debug("No points for " + ct);
             }
+
+            // Handle lines.
+            String linesData = points.getDataAsString(ct + "." + MANUALPOINTS +
+                DOT_LINES);
+            if (linesData != null && !linesData.equals("")
+                && !linesData.equals("[]")) {
+                try {
+                    JSONArray lines = new JSONArray((String) linesData);
+                    for (int i = 0, P = lines.length(); i < P; i++) {
+                        JSONArray array = lines.getJSONArray(i);
+                        double y    = array.getDouble(0);
+                        String name = array.getString(1);
+                        String fName = ct + "." + MANUALLINE;
+                        logger.debug("have facet: " + y + " / " + name + " -> " + fName);
+                        CrossSectionWaterLineFacet facet = new CrossSectionWaterLineFacet(
+                            i,
+                            fName,
+                            name);
+
+                        facets.add(facet);
+                    }
+                }
+                catch(JSONException e){
+                    logger.error("Could not decode json.");
+                }
+
+            }
+            else {
+                //logger.debug("No points for " + ct);
+            }
         }
 
         return null;
     }
 
 
+    /** Call compute. */
     @Override
     public Object computeInit(
         FLYSArtifact artifact,
@@ -85,6 +131,7 @@
     }
 
 
+    /** Call compute. */
     @Override
     public Object computeFeed(
         FLYSArtifact artifact,

http://dive4elements.wald.intevation.org