diff flys-artifacts/src/main/java/org/dive4elements/river/artifacts/access/HistoricalDischargeAccess.java @ 5831:bd047b71ab37

Repaired internal references
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 12:06:39 +0200
parents flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/HistoricalDischargeAccess.java@b195fede1c3b
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/flys-artifacts/src/main/java/org/dive4elements/river/artifacts/access/HistoricalDischargeAccess.java	Thu Apr 25 12:06:39 2013 +0200
@@ -0,0 +1,109 @@
+package org.dive4elements.river.artifacts.access;
+
+import java.util.Date;
+
+import org.dive4elements.river.artifacts.FLYSArtifact;
+import org.dive4elements.river.artifacts.model.Timerange;
+
+
+public class HistoricalDischargeAccess extends RiverAccess {
+
+    public static enum EvaluationMode {
+        W, Q
+    }
+
+    public static final String DATA_EVALUATION_TIME = "year_range";
+    public static final String DATA_EVALUATION_MODE = "historical_mode";
+    public static final String DATA_INPUT_VALUES = "historical_values";
+
+    private Timerange evaluationTimerange;
+    private EvaluationMode evaluationMode;
+
+    private double[] qs;
+    private double[] ws;
+
+    public HistoricalDischargeAccess(FLYSArtifact artifact) {
+        super(artifact);
+    }
+
+    /**
+     * This method returns the evaluation mode. The evaluation mode W is set, if
+     * the <b>DATA_EVALUATION_MODE</b> is 0. Otherwise, the evaluation mode Q is
+     * set.
+     *
+     * @return EvaluationMode.W if the parameter <i>historical_mode</i> is set
+     *         to 0, otherwise EvaluationMode.Q.
+     */
+    public EvaluationMode getEvaluationMode() {
+        if (evaluationMode == null) {
+            int mode = getInteger(DATA_EVALUATION_MODE);
+            evaluationMode = mode == 0 ? EvaluationMode.W : EvaluationMode.Q;
+        }
+
+        return evaluationMode;
+    }
+
+    /**
+     * This method returns the time range specified by <i>year_range</i>
+     * parameter. This parameter has to be a string that consists of two long
+     * values (time millis since 1970) separated by a ';'.
+     *
+     * @return the evaluation time range specified by <i>year_range</i>.
+     */
+    public Timerange getEvaluationTimerange() {
+        if (evaluationTimerange == null) {
+            long[] startend = getLongArray(DATA_EVALUATION_TIME);
+
+            if (startend != null && startend.length > 1) {
+                Date start = new Date(startend[0]);
+                Date end = new Date(startend[1]);
+
+                evaluationTimerange = new Timerange(start, end);
+            }
+        }
+
+        return evaluationTimerange;
+    }
+
+    /**
+     * This method returns the input Q values if the evaluation mode Q is set.
+     * Otherwise, this method will return a double array of length 0. The values
+     * returned by this method are extracted from string parameter
+     * <i>historical_values</i>.
+     *
+     * @return the input Q values or a double array of length 0.
+     */
+    public double[] getQs() {
+        if (qs == null) {
+            if (getEvaluationMode() == EvaluationMode.Q) {
+                qs = getDoubleArray(DATA_INPUT_VALUES);
+            }
+            else {
+                qs = new double[0];
+            }
+        }
+
+        return qs;
+    }
+
+    /**
+     * This method returns the input W values if the evaluation mode W is set.
+     * Otherwise, this method will return a double array of length 0. The values
+     * returned by this method are extracted from string parameter
+     * <i>historical_values</i>.
+     *
+     * @return the input W values or a double array of length 0.
+     */
+    public double[] getWs() {
+        if (ws == null) {
+            if (getEvaluationMode() == EvaluationMode.W) {
+                ws = getDoubleArray(DATA_INPUT_VALUES);
+            }
+            else {
+                ws = new double[0];
+            }
+        }
+
+        return ws;
+    }
+}

http://dive4elements.wald.intevation.org