diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/FixationArtifactAccess.java @ 3121:0b86b005bb9a

FixA: Respect the selected events and reference period correctly. flys-artifacts/trunk@4722 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 20 Jun 2012 11:25:21 +0000
parents 0b5a7a2c3724
children
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/FixationArtifactAccess.java	Wed Jun 20 11:24:30 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/FixationArtifactAccess.java	Wed Jun 20 11:25:21 2012 +0000
@@ -34,9 +34,7 @@
     protected Integer qSectorStart;
     protected Integer qSectorEnd;
 
-    protected Long referenceStart;
-    protected Long referenceEnd;
-
+    protected DateRange    referencePeriod;
     protected DateRange [] analysisPeriods;
 
     protected int [] events;
@@ -254,50 +252,32 @@
         return events;
     }
 
-    public Long getReferenceStart() {
-        if (referenceStart == null) {
-            StateData sd = artifact.getData("ref_start");
-            if (sd == null) {
-                log.warn("missing 'ref_start' value");
+    public DateRange getReferencePeriod() {
+        if (referencePeriod == null) {
+            StateData refStart = artifact.getData("ref_start");
+            StateData refEnd   = artifact.getData("ref_end");
+
+            if (refStart == null || refEnd == null) {
+                log.warn("missing 'ref_start' or 'ref_start' value");
                 return null;
             }
+
             try {
-                referenceStart = Long.valueOf((String)sd.getValue());
+                long rs = Long.parseLong((String)refStart.getValue());
+                long re = Long.parseLong((String)refEnd  .getValue());
+
+                if (rs > re) { long t = rs; rs = re; re = t; }
+
+                Date from = new Date(rs);
+                Date to   = new Date(re);
+                referencePeriod = new DateRange(from, to);
             }
             catch (NumberFormatException nfe) {
-                log.warn("ref_start '"
-                    + sd.getValue() + "' is not an integer.");
+                log.warn("ref_start or ref_end is not an integer.");
             }
         }
 
-        if (log.isDebugEnabled()) {
-            log.debug("referenceStart: '" + referenceStart + "'");
-        }
-
-        return referenceStart;
-    }
-
-    public Long getReferenceEnd() {
-        if (referenceEnd == null) {
-            StateData sd = artifact.getData("ref_end");
-            if (sd == null) {
-                log.warn("missing 'ref_end' value");
-                return null;
-            }
-            try {
-                referenceEnd = Long.valueOf((String)sd.getValue());
-            }
-            catch (NumberFormatException nfe) {
-                log.warn("ref_end '"
-                    + sd.getValue() + "' is not an integer.");
-            }
-        }
-
-        if (log.isDebugEnabled()) {
-            log.debug("referenceEnd: '" + referenceEnd + "'");
-        }
-
-        return referenceEnd;
+        return referencePeriod;
     }
 
     public DateRange [] getAnalysisPeriods() {

http://dive4elements.wald.intevation.org