diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/ManualPointsSingleState.java @ 3318:dbe2f85bf160

merged flys-artifacts/2.8
author Thomas Arendsen Hein <thomas@intevation.de>
date Fri, 28 Sep 2012 12:14:35 +0200
parents d35f28655fa6
children e74e707ff650
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/ManualPointsSingleState.java	Fri Sep 28 12:14:35 2012 +0200
@@ -0,0 +1,146 @@
+package de.intevation.flys.artifacts.states;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+
+import de.intevation.artifacts.CallMeta;
+import de.intevation.artifacts.CallContext;
+
+import de.intevation.artifactdatabase.state.Facet;
+
+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.resources.Resources;
+
+/**
+ * The only state for an ManualPointArtifact.
+ */
+public class ManualPointsSingleState
+extends      DefaultState
+implements   FacetTypes
+{
+    /** Developer-centric description of facet. */
+    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);
+
+
+    /**
+     * Add ManualPointsFacets to list of Facets.
+     *
+     * @param artifact Ignored.
+     * @param hash Ignored.
+     * @param meta CallMeta to be used for internationalization.
+     * @param facets List to add ManualPointsFacet to.
+     *
+     * @return null.
+     */
+    public Object compute(
+        FLYSArtifact artifact,
+        String       hash,
+        CallMeta     meta,
+        List<Facet>  facets
+    ) {
+        logger.debug("ManualPointsSingleState.compute()");
+        ManualPointsArtifact points = (ManualPointsArtifact) artifact;
+
+        // Add Facet per Diagram type if data given.
+        for (ChartType ct: ChartType.values()) {
+            // 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,
+                    fName,
+                    Resources.getMsg(meta, "manualpoints", "Manual Points"));
+
+                facets.add(facet);
+            }
+            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,
+        String       hash,
+        Object       context,
+        CallMeta     meta,
+        List<Facet>  facets
+     ) {
+        return compute(artifact, hash, meta, facets);
+    }
+
+
+    /** Call compute. */
+    @Override
+    public Object computeFeed(
+        FLYSArtifact artifact,
+        String hash,
+        CallContext context,
+        List<Facet> facets,
+        Object old
+    ) {
+        return compute(artifact, hash, context.getMeta(), facets);
+    }
+}
+// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org