diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/HistoricalDischargeComputeState.java @ 4232:b3aa91e45010

Implemented the Q evaluation mode for historical discharge calculations. Added the calculation itself, created new facets, added themes and improved the chart generator to support the new facets.
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 24 Oct 2012 07:25:35 +0200
parents d7db9baa4e62
children 49cb65d5932d
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/HistoricalDischargeComputeState.java	Tue Oct 23 16:07:39 2012 +0200
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/HistoricalDischargeComputeState.java	Wed Oct 24 07:25:35 2012 +0200
@@ -2,24 +2,22 @@
 
 import java.util.List;
 
+import org.apache.log4j.Logger;
 import org.w3c.dom.Element;
 
-import org.apache.log4j.Logger;
-
+import de.intevation.artifactdatabase.state.Facet;
 import de.intevation.artifacts.Artifact;
 import de.intevation.artifacts.CallContext;
-
 import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator;
-
-import de.intevation.artifactdatabase.state.Facet;
-
 import de.intevation.flys.artifacts.FLYSArtifact;
 import de.intevation.flys.artifacts.WINFOArtifact;
+import de.intevation.flys.artifacts.access.HistoricalDischargeAccess;
+import de.intevation.flys.artifacts.access.HistoricalDischargeAccess.EvaluationMode;
 import de.intevation.flys.artifacts.model.CalculationResult;
 import de.intevation.flys.artifacts.model.DataFacet;
 import de.intevation.flys.artifacts.model.FacetTypes;
+import de.intevation.flys.artifacts.model.HistoricalDischargeDifferenceFacet;
 import de.intevation.flys.artifacts.model.HistoricalDischargeFacet;
-import de.intevation.flys.artifacts.model.HistoricalDischargeDifferenceFacet;
 import de.intevation.flys.artifacts.model.HistoricalWQTimerange;
 import de.intevation.flys.artifacts.model.ReportFacet;
 import de.intevation.flys.artifacts.model.WQTimerange;
@@ -27,45 +25,31 @@
 
 /**
  * State to calculate historical discharge curves.
+ * 
  * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
  */
-public class HistoricalDischargeComputeState
-extends      DefaultState
-implements   FacetTypes
-{
+public class HistoricalDischargeComputeState extends DefaultState implements
+    FacetTypes {
 
-    private static final Logger logger =
-        Logger.getLogger(HistoricalDischargeComputeState.class);
+    private static final Logger logger = Logger
+        .getLogger(HistoricalDischargeComputeState.class);
 
     public static final String DEFAULT_UNIT = "cm";
 
-
     @Override
-    protected void appendItems(
-        Artifact       artifact,
-        ElementCreator creator,
-        String         name,
-        CallContext    context,
-        Element        select
-    ) {
+    protected void appendItems(Artifact artifact, ElementCreator creator,
+        String name, CallContext context, Element select) {
         // TODO IMPLEMENT ME
     }
 
-
     @Override
-    public Object computeAdvance(
-        FLYSArtifact artifact,
-        String       hash,
-        CallContext  context,
-        List<Facet>  facets,
-        Object       old
-    ) {
+    public Object computeAdvance(FLYSArtifact artifact, String hash,
+        CallContext context, List<Facet> facets, Object old) {
         logger.debug("HistoricalDischargeComputeState.computeAdvance");
 
         WINFOArtifact winfo = (WINFOArtifact) artifact;
 
-        CalculationResult res = old instanceof CalculationResult
-            ? (CalculationResult) old
+        CalculationResult res = old instanceof CalculationResult ? (CalculationResult) old
             : winfo.getHistoricalDischargeData();
 
         if (facets == null) {
@@ -82,60 +66,68 @@
             return res;
         }
 
-        facets.add(
-            new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id));
+        facets
+            .add(new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id));
 
-        facets.add(
-            new DataFacet(PDF, "PDF data", ComputeType.ADVANCE, hash, id));
+        facets
+            .add(new DataFacet(PDF, "PDF data", ComputeType.ADVANCE, hash, id));
 
-        prepareFacets(facets, data);
+        prepareFacets(facets, data, new HistoricalDischargeAccess(artifact));
 
         return res;
     }
 
-
-    protected void prepareFacets(List<Facet> facets, WQTimerange[] wqts) {
+    protected void prepareFacets(List<Facet> facets, WQTimerange[] wqts,
+        HistoricalDischargeAccess access) {
         int i = 0;
 
-        for (WQTimerange wqt: wqts) {
+        for (WQTimerange wqt : wqts) {
             logger.debug("Prepare facet for: " + wqt.getName());
 
-            // TODO CREATE BETTER TITLE FOR FACETS
-
-            facets.add(new HistoricalDischargeFacet(
-                i,
-                HISTORICAL_DISCHARGE_Q,
-                createFacetTitle(wqt)));
+            EvaluationMode evalMode = access.getEvaluationMode();
+            if (evalMode == EvaluationMode.W) {
+                facets.add(new HistoricalDischargeFacet(i,
+                    HISTORICAL_DISCHARGE_Q, createFacetTitle(wqt)));
 
-            if (wqt instanceof HistoricalWQTimerange) {
-                logger.debug("Create another facet for historical differences.");
+                if (wqt instanceof HistoricalWQTimerange) {
+                    logger
+                        .debug("Create another facet for historical differences.");
 
-                facets.add(new HistoricalDischargeDifferenceFacet(
-                    i,
-                    HISTORICAL_DISCHARGE_Q_DIFF,
-                    "DIFF: " + wqt.getName()));
+                    // TODO CREATE BETTER TITLE FOR FACETS
+                    facets.add(new HistoricalDischargeDifferenceFacet(i,
+                        HISTORICAL_DISCHARGE_Q_DIFF, "DIFF: " + wqt.getName()));
+                }
+            }
+            else {
+                facets.add(new HistoricalDischargeFacet(i,
+                    HISTORICAL_DISCHARGE_W, createFacetTitle(wqt)));
+
+                if (wqt instanceof HistoricalWQTimerange) {
+                    logger
+                        .debug("Create another facet for historical differences.");
+
+                    // TODO CREATE BETTER TITLE FOR FACETS
+                    facets.add(new HistoricalDischargeDifferenceFacet(i,
+                        HISTORICAL_DISCHARGE_W_DIFF, "DIFF: " + wqt.getName()));
+                }
             }
 
             i++;
         }
     }
 
-
     protected String createFacetTitle(WQTimerange wqt) {
         String name = wqt.getName();
 
-        return name != null && name.indexOf("W") >= 0
-            ? createFacetTitleW(wqt)
+        return name != null && name.indexOf("W") >= 0 ? createFacetTitleW(wqt)
             : createFacetTitleQ(wqt);
     }
 
-
     protected String createFacetTitleW(WQTimerange wqt) {
         String name = wqt.getName();
         return name + " " + DEFAULT_UNIT;
     }
 
-
     protected String createFacetTitleQ(WQTimerange wqt) {
         return wqt.getName();
     }

http://dive4elements.wald.intevation.org