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() +

http://dive4elements.wald.intevation.org