Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/model/OfficialLineFinder.java @ 6510:1e6bd2831280
artifacts: Desktop-FLYS conform official line messages in error reports.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Fri, 28 Jun 2013 20:20:14 +0200 |
parents | 1e97d2e95410 |
children | 862c7f511c35 |
comparison
equal
deleted
inserted
replaced
6508:b2eab164a441 | 6510:1e6bd2831280 |
---|---|
8 | 8 |
9 package org.dive4elements.river.artifacts.model; | 9 package org.dive4elements.river.artifacts.model; |
10 | 10 |
11 import java.util.ArrayList; | 11 import java.util.ArrayList; |
12 import java.util.Collections; | 12 import java.util.Collections; |
13 import java.util.Date; | |
13 import java.util.HashMap; | 14 import java.util.HashMap; |
14 import java.util.List; | 15 import java.util.List; |
15 import java.util.Map; | 16 import java.util.Map; |
16 | 17 |
17 import net.sf.ehcache.Cache; | 18 import net.sf.ehcache.Cache; |
23 import org.dive4elements.river.model.Gauge; | 24 import org.dive4elements.river.model.Gauge; |
24 import org.dive4elements.river.model.MainValue; | 25 import org.dive4elements.river.model.MainValue; |
25 import org.dive4elements.river.model.NamedMainValue; | 26 import org.dive4elements.river.model.NamedMainValue; |
26 import org.dive4elements.river.model.OfficialLine; | 27 import org.dive4elements.river.model.OfficialLine; |
27 import org.dive4elements.river.model.River; | 28 import org.dive4elements.river.model.River; |
29 import org.dive4elements.river.model.TimeInterval; | |
28 import org.dive4elements.river.model.Wst; | 30 import org.dive4elements.river.model.Wst; |
29 import org.dive4elements.river.model.WstColumn; | 31 import org.dive4elements.river.model.WstColumn; |
30 | 32 |
31 public class OfficialLineFinder | 33 public class OfficialLineFinder |
32 { | 34 { |
44 | 46 |
45 private double value; | 47 private double value; |
46 private int wstId; | 48 private int wstId; |
47 private int columnPos; | 49 private int columnPos; |
48 private String name; | 50 private String name; |
51 private String source; | |
52 private Date date; | |
49 | 53 |
50 public ValueRange( | 54 public ValueRange( |
51 double start, | 55 double start, |
52 double end, | 56 double end, |
53 double value, | 57 double value, |
54 int wstId, | 58 int wstId, |
55 int columnPos, | 59 int columnPos, |
56 String name | 60 String name, |
61 String source, | |
62 Date date | |
57 ) { | 63 ) { |
58 super(start, end); | 64 super(start, end); |
59 this.value = value; | 65 this.value = value; |
60 this.wstId = wstId; | 66 this.wstId = wstId; |
61 this.columnPos = columnPos; | 67 this.columnPos = columnPos; |
62 this.name = name; | 68 this.name = name; |
69 this.source = source; | |
70 this.date = date; | |
63 } | 71 } |
64 | 72 |
65 public boolean sameValue(double value) { | 73 public boolean sameValue(double value) { |
66 return Math.abs(value - this.value) < EPSILON; | 74 return Math.abs(value - this.value) < EPSILON; |
67 } | 75 } |
78 return r.inside(value); | 86 return r.inside(value); |
79 } | 87 } |
80 | 88 |
81 public String getName() { | 89 public String getName() { |
82 return name; | 90 return name; |
91 } | |
92 | |
93 public String getSource() { | |
94 return source; | |
95 } | |
96 | |
97 public Date getDate() { | |
98 return date; | |
83 } | 99 } |
84 | 100 |
85 @Override | 101 @Override |
86 public boolean equals(Object o) { | 102 public boolean equals(Object o) { |
87 if (!(o instanceof ValueRange)) { | 103 if (!(o instanceof ValueRange)) { |
94 @Override | 110 @Override |
95 public String toString() { | 111 public String toString() { |
96 return "[" + name + | 112 return "[" + name + |
97 " value: " + value + | 113 " value: " + value + |
98 " wstId: " + wstId + | 114 " wstId: " + wstId + |
99 " pos: " + columnPos + "]"; | 115 " pos: " + columnPos + |
116 " source: " + source + | |
117 " date: " + date +"]"; | |
100 } | 118 } |
101 } | 119 } |
102 | 120 |
103 public OfficialLineFinder() { | 121 public OfficialLineFinder() { |
104 } | 122 } |
130 | 148 |
131 Map<String, List<ValueRange>> rivers2officialLines = | 149 Map<String, List<ValueRange>> rivers2officialLines = |
132 new HashMap<String, List<ValueRange>>(); | 150 new HashMap<String, List<ValueRange>>(); |
133 | 151 |
134 for (OfficialLine line: OfficialLine.fetchAllOfficalLines()) { | 152 for (OfficialLine line: OfficialLine.fetchAllOfficalLines()) { |
135 NamedMainValue nmv = line.getNamedMainValue(); | 153 NamedMainValue nmv = line.getNamedMainValue(); |
136 Integer mnvId = nmv.getId(); | 154 Integer mnvId = nmv.getId(); |
137 WstColumn wc = line.getWstColumn(); | 155 WstColumn wc = line.getWstColumn(); |
138 Wst wst = wc.getWst(); | 156 Wst wst = wc.getWst(); |
157 TimeInterval ti = wc.getTimeInterval(); | |
158 Date date = ti != null ? ti.getStartTime() : null; | |
159 String source = wc.getSource(); | |
139 | 160 |
140 List<ValueRange> ranges = new ArrayList<ValueRange>(); | 161 List<ValueRange> ranges = new ArrayList<ValueRange>(); |
141 | 162 |
142 River river = wst.getRiver(); | 163 River river = wst.getRiver(); |
143 List<Gauge> gauges = river.getGauges(); | 164 List<Gauge> gauges = river.getGauges(); |
152 double to = gauge.getRange().getA().doubleValue(); | 173 double to = gauge.getRange().getA().doubleValue(); |
153 double value = mainValue.getValue().doubleValue(); | 174 double value = mainValue.getValue().doubleValue(); |
154 int wstId = wst.getId(); | 175 int wstId = wst.getId(); |
155 int pos = wc.getPosition(); | 176 int pos = wc.getPosition(); |
156 ValueRange range = new ValueRange( | 177 ValueRange range = new ValueRange( |
157 from, to, value, wstId, pos, nmv.getName()); | 178 from, to, value, wstId, pos, |
179 nmv.getName(), source, date); | |
158 | 180 |
159 if (debug) { | 181 if (debug) { |
160 log.debug( | 182 log.debug( |
161 "river: " + river.getName() + | 183 "river: " + river.getName() + |
162 " gauge: " + gauge.getName() + | 184 " gauge: " + gauge.getName() + |