comparison artifacts/src/main/java/org/dive4elements/river/artifacts/access/FixAnalysisAccess.java @ 5838:5aa05a7a34b7

Rename modules to more fitting names.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 15:23:37 +0200
parents flys-artifacts/src/main/java/org/dive4elements/river/artifacts/access/FixAnalysisAccess.java@bd047b71ab37
children 4897a58c8746
comparison
equal deleted inserted replaced
5837:d9901a08d0a6 5838:5aa05a7a34b7
1 package org.dive4elements.river.artifacts.access;
2
3 import org.dive4elements.artifactdatabase.data.StateData;
4 import org.dive4elements.artifacts.CallContext;
5
6 import org.dive4elements.river.artifacts.FLYSArtifact;
7
8 import org.dive4elements.river.artifacts.model.DateRange;
9
10 import java.util.Arrays;
11 import java.util.Date;
12
13 import org.apache.log4j.Logger;
14
15 public class FixAnalysisAccess
16 extends FixAccess
17 {
18 private static Logger log = Logger.getLogger(FixAnalysisAccess.class);
19
20 protected DateRange referencePeriod;
21 protected DateRange [] analysisPeriods;
22
23 protected double [] qs;
24
25 public FixAnalysisAccess(FLYSArtifact artifact, CallContext context) {
26 super(artifact, context);
27 }
28
29 public DateRange getReferencePeriod() {
30 if (referencePeriod == null) {
31 StateData refStart = artifact.getData("ref_start");
32 StateData refEnd = artifact.getData("ref_end");
33
34 if (refStart == null || refEnd == null) {
35 log.warn("missing 'ref_start' or 'ref_start' value");
36 return null;
37 }
38
39 try {
40 long rs = Long.parseLong((String)refStart.getValue());
41 long re = Long.parseLong((String)refEnd .getValue());
42
43 if (rs > re) { long t = rs; rs = re; re = t; }
44
45 Date from = new Date(rs);
46 Date to = new Date(re);
47 referencePeriod = new DateRange(from, to);
48 }
49 catch (NumberFormatException nfe) {
50 log.warn("ref_start or ref_end is not an integer.");
51 }
52 }
53
54 return referencePeriod;
55 }
56
57 public DateRange [] getAnalysisPeriods() {
58 if (analysisPeriods == null) {
59 analysisPeriods = getDateRange("ana_data");
60 }
61
62 return analysisPeriods;
63 }
64
65 /**
66 * @return DateRange object ranging from eldest to youngest date
67 * of analysis and reference periods.
68 */
69 public DateRange getDateRange() {
70 DateRange refP = getReferencePeriod();
71
72 if (refP == null) {
73 return null;
74 }
75
76 Date from = refP.getFrom();
77 Date to = refP.getTo();
78
79 DateRange[] rs = getAnalysisPeriods();
80 for (DateRange r: rs) {
81 if (r.getFrom().before(from)) {
82 from = r.getFrom();
83 }
84 if (r.getTo().after(to)) {
85 to = r.getTo();
86 }
87 }
88
89 return new DateRange(from, to);
90 }
91
92 public double [] getQs() {
93 if (qs == null) {
94 qs = getDoubleArray("qs");
95 }
96
97 if (log.isDebugEnabled() && qs != null) {
98 log.debug("qs: " + Arrays.toString(qs));
99 }
100 return qs;
101 }
102 }
103 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org