annotate 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
rev   line source
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
3 *
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
7 */
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
8
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
9 package org.dive4elements.river.artifacts.model;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
10
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
11 import java.util.ArrayList;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
12 import java.util.Collections;
6510
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
13 import java.util.Date;
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
14 import java.util.HashMap;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
15 import java.util.List;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
16 import java.util.Map;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
17
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
18 import net.sf.ehcache.Cache;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
19 import net.sf.ehcache.Element;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
20
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
21 import org.apache.log4j.Logger;
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
22 import org.dive4elements.river.artifacts.D4EArtifact;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
23 import org.dive4elements.river.artifacts.cache.CacheFactory;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
24 import org.dive4elements.river.model.Gauge;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
25 import org.dive4elements.river.model.MainValue;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
26 import org.dive4elements.river.model.NamedMainValue;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
27 import org.dive4elements.river.model.OfficialLine;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
28 import org.dive4elements.river.model.River;
6510
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
29 import org.dive4elements.river.model.TimeInterval;
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
30 import org.dive4elements.river.model.Wst;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
31 import org.dive4elements.river.model.WstColumn;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
32
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
33 public class OfficialLineFinder
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
34 {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
35 public static final String CACHE_NAME = "official-lines";
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
36
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
37 private static Logger log = Logger.getLogger(OfficialLineFinder.class);
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
38
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
39 // We will only have one entry in this cache.
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
40 public static final String CACHE_KEY = CACHE_NAME;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
41
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
42 public static final double EPSILON = 1e-4;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
43
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
44
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
45 public static class ValueRange extends Range {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
46
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
47 private double value;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
48 private int wstId;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
49 private int columnPos;
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
50 private String name;
6510
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
51 private String source;
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
52 private Date date;
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
53
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
54 public ValueRange(
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
55 double start,
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
56 double end,
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
57 double value,
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
58 int wstId,
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
59 int columnPos,
6510
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
60 String name,
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
61 String source,
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
62 Date date
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
63 ) {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
64 super(start, end);
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
65 this.value = value;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
66 this.wstId = wstId;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
67 this.columnPos = columnPos;
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
68 this.name = name;
6510
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
69 this.source = source;
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
70 this.date = date;
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
71 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
72
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
73 public boolean sameValue(double value) {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
74 return Math.abs(value - this.value) < EPSILON;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
75 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
76
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
77 public int getWstId() {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
78 return wstId;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
79 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
80
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
81 public int getColumnPos() {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
82 return columnPos;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
83 }
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
84
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
85 public boolean intersectsValueRange(Range r) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
86 return r.inside(value);
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
87 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
88
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
89 public String getName() {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
90 return name;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
91 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
92
6510
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
93 public String getSource() {
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
94 return source;
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
95 }
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
96
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
97 public Date getDate() {
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
98 return date;
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
99 }
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
100
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
101 @Override
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
102 public boolean equals(Object o) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
103 if (!(o instanceof ValueRange)) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
104 return false;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
105 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
106 ValueRange r = (ValueRange)o;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
107 return wstId == r.wstId && columnPos == r.columnPos;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
108 }
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
109
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
110 @Override
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
111 public String toString() {
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
112 return "[" + name +
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
113 " value: " + value +
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
114 " wstId: " + wstId +
6510
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
115 " pos: " + columnPos +
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
116 " source: " + source +
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
117 " date: " + date +"]";
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
118 }
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
119 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
120
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
121 public OfficialLineFinder() {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
122 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
123
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
124 public static Map<String, List<ValueRange>> getAll() {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
125 Cache cache = CacheFactory.getCache(CACHE_NAME);
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
126
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
127 if (cache == null) {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
128 return getAllUncached();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
129 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
130
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
131 Element element = cache.get(CACHE_KEY);
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
132
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
133 if (element != null) {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
134 return (Map<String, List<ValueRange>>)element.getValue();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
135 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
136
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
137 Map<String, List<ValueRange>> result = getAllUncached();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
138 if (result != null) {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
139 cache.put(new Element(CACHE_KEY, result));
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
140 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
141 return result;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
142
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
143 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
144
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
145 public static Map<String, List<ValueRange>> getAllUncached() {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
146
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
147 boolean debug = log.isDebugEnabled();
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
148
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
149 Map<String, List<ValueRange>> rivers2officialLines =
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
150 new HashMap<String, List<ValueRange>>();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
151
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
152 for (OfficialLine line: OfficialLine.fetchAllOfficalLines()) {
6510
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
153 NamedMainValue nmv = line.getNamedMainValue();
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
154 Integer mnvId = nmv.getId();
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
155 WstColumn wc = line.getWstColumn();
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
156 Wst wst = wc.getWst();
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
157 TimeInterval ti = wc.getTimeInterval();
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
158 Date date = ti != null ? ti.getStartTime() : null;
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
159 String source = wc.getSource();
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
160
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
161 List<ValueRange> ranges = new ArrayList<ValueRange>();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
162
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
163 River river = wst.getRiver();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
164 List<Gauge> gauges = river.getGauges();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
165 for (Gauge gauge: gauges) {
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
166 List<MainValue> mainValues = gauge.getMainValues();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
167 for (MainValue mainValue: mainValues) {
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
168 NamedMainValue tnmv = mainValue.getMainValue();
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
169 if (tnmv.getId().equals(mnvId)) {
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
170 // found gauge with this main value
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
171
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
172 double from = gauge.getRange().getA().doubleValue();
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
173 double to = gauge.getRange().getA().doubleValue();
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
174 double value = mainValue.getValue().doubleValue();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
175 int wstId = wst.getId();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
176 int pos = wc.getPosition();
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
177 ValueRange range = new ValueRange(
6510
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
178 from, to, value, wstId, pos,
1e6bd2831280 artifacts: Desktop-FLYS conform official line messages in error reports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6494
diff changeset
179 nmv.getName(), source, date);
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
180
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
181 if (debug) {
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
182 log.debug(
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
183 "river: " + river.getName() +
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
184 " gauge: " + gauge.getName() +
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
185 " ol: " + range);
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
186 }
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
187 ranges.add(range);
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
188 break;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
189 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
190 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
191 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
192
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
193 if (!ranges.isEmpty()) {
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
194 String rname = river.getName();
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
195 List<ValueRange> old = rivers2officialLines.get(rname);
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
196 if (old != null) {
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
197 old.addAll(ranges);
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
198 }
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
199 else {
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
200 rivers2officialLines.put(rname, ranges);
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
201 }
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
202 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
203 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
204
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
205 return rivers2officialLines;
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
206 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
207
6395
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
208 public static final Range MAX_RANGE = new Range(-Double.MAX_VALUE, +Double.MAX_VALUE);
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
209
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
210 private static final String nn(String s) {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
211 return s != null ? s : "";
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
212 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
213
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
214 public static Range extractRange(D4EArtifact artifact) {
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
215
6395
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
216 String mode = nn(artifact.getDataAsString("ld_mode"));
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
217 String locations = nn(artifact.getDataAsString("ld_locations"));
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
218 String from = nn(artifact.getDataAsString("ld_from"));
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
219 String to = nn(artifact.getDataAsString("ld_to"));
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
220
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
221 if (log.isDebugEnabled()) {
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
222 log.debug("ld_mode: '" + mode + "'");
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
223 log.debug("ld_locations: '" + locations + "'");
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
224 log.debug("ld_from: '" + from + "'");
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
225 log.debug("ld_to: '" + to + "'");
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
226 }
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
227
6395
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
228 if (mode.equals("location")) {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
229 try {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
230 String loc = locations.replace(" ", "");
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
231 String[] split = loc.split(",");
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
232 if (split.length < 1) {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
233 return MAX_RANGE;
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
234 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
235 double min = Double.parseDouble(split[0]);
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
236 double max = min;
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
237 for (int i = 1; i < split.length; ++i) {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
238 double v = Double.parseDouble(split[i]);
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
239 if (v > max) max = v;
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
240 if (v < min) min = v;
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
241 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
242 return new Range(min, max);
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
243 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
244 catch (NumberFormatException nfe) {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
245 return MAX_RANGE;
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
246 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
247 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
248 try {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
249 return new Range(Double.parseDouble(from), Double.parseDouble(to));
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
250 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
251 catch (NumberFormatException nfe) {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
252 return MAX_RANGE;
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
253 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
254 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
255
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
256 private static List<ValueRange> filterByRange(Range range, List<ValueRange> ranges) {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
257 List<ValueRange> list = new ArrayList<ValueRange>(ranges.size());
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
258 for (ValueRange r: ranges) {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
259 if (r.intersects(range)) {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
260 list.add(r);
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
261 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
262 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
263 return list;
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
264 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
265
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
266 private static List<ValueRange> filterByQRange(Range range, List<ValueRange> ranges) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
267 List<ValueRange> list = new ArrayList<ValueRange>(ranges.size());
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
268 for (ValueRange r: ranges) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
269 if (r.intersectsValueRange(range) && !list.contains(r)) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
270 list.add(r);
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
271 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
272 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
273 return list;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
274 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
275
6395
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
276 private static boolean isQ(D4EArtifact artifact) {
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
277 Boolean b = artifact.getDataAsBoolean("wq_isq");
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
278 return b != null && b;
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
279 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
280
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
281 private static boolean isRange(D4EArtifact artifact) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
282 Boolean b = artifact.getDataAsBoolean("wq_isrange");
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
283 return b != null && b;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
284 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
285
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
286 public static final Range Q_OUT_OF_RANGE = new Range(-10000, -9999);
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
287
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
288 private static Range singleQs(D4EArtifact artifact) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
289 String singleData = nn(artifact.getDataAsString("wq_single"));
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
290 double min = Double.MAX_VALUE;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
291 double max = -Double.MAX_VALUE;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
292
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
293 for (String value: singleData.split(" ")) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
294 try {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
295 double x = Double.parseDouble(value);
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
296 if (x < min) min = x;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
297 if (x > max) max = x;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
298 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
299 catch (NumberFormatException nfe) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
300 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
301 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
302
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
303 return min == Double.MAX_VALUE
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
304 ? Q_OUT_OF_RANGE
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
305 : new Range(min, max);
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
306
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
307 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
308
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
309 private static Range qRange(D4EArtifact artifact) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
310 try {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
311 Double from = artifact.getDataAsDouble("wq_from");
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
312 Double to = artifact.getDataAsDouble("wq_to");
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
313
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
314 if (from == null || to == null) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
315 return Q_OUT_OF_RANGE;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
316 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
317 double f = from;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
318 double t = to;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
319 return new Range(Math.min(f, t), Math.max(f, t));
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
320 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
321 catch (NumberFormatException nfe) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
322 return Q_OUT_OF_RANGE;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
323 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
324 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
325
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
326 private static Range tripleQRange(D4EArtifact artifact) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
327 String rangesData = nn(artifact.getDataAsString("wq_values"));
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
328
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
329 double min = Double.MAX_VALUE;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
330 double max = -Double.MAX_VALUE;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
331
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
332 for (String range: rangesData.split(":")) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
333 String [] parts = range.split(";");
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
334 if (parts.length < 3) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
335 continue;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
336 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
337 String [] values = parts[2].split(",");
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
338 for (String value: values) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
339 try {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
340 double x = Double.parseDouble(value);
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
341 if (x < min) min = x;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
342 if (x > max) max = x;
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
343 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
344 catch (NumberFormatException nfe) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
345 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
346 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
347 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
348
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
349 return min == Double.MAX_VALUE
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
350 ? Q_OUT_OF_RANGE
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
351 : new Range(min, max);
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
352 }
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
353
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
354 public static List<ValueRange> findOfficialLines(D4EArtifact artifact) {
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
355
6395
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
356 if (!isQ(artifact)) { // Only handle Q calculations
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
357 return Collections.<ValueRange>emptyList();
6395
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
358 }
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
359
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
360 Map<String, List<ValueRange>> rivers2officialLines = getAll();
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
361
6395
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
362 String riverName = nn(artifact.getDataAsString("river"));
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
363
6395
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
364 List<ValueRange> ranges = rivers2officialLines.get(riverName);
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
365
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
366 if (ranges == null) {
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
367 return Collections.<ValueRange>emptyList();
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
368 }
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
369 boolean debug = log.isDebugEnabled();
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
370
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
371 if (debug) {
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
372 log.debug("Before range filter:" + ranges);
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
373 }
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
374
6395
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
375 ranges = filterByRange(extractRange(artifact), ranges);
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
376
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
377 if (debug) {
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
378 log.debug("After range filter:" + ranges);
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
379 }
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
380
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
381 if (ranges.isEmpty()) {
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
382 return Collections.<ValueRange>emptyList();
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
383 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
384
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
385 Range qRange = isRange(artifact)
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
386 ? qRange(artifact)
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
387 : singleQs(artifact);
6395
d2803cc7a338 Artifacts: Official lines: Only apply in Q-Calculations and filter against the ranges of the gauges.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6385
diff changeset
388
6397
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
389 if (qRange == Q_OUT_OF_RANGE) {
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
390 qRange = tripleQRange(artifact);
f579e4a80b84 Artifacts: Official lines finder: handle the cases from the state model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6395
diff changeset
391 }
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
392
6494
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
393 if (debug) {
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
394 log.debug("Q range filter: " + qRange);
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
395 }
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
396
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
397 ranges = filterByQRange(qRange, ranges);
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
398
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
399 if (debug) {
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
400 log.debug("After q range filter: " + ranges);
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
401 }
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
402
1e97d2e95410 Amtl. Linien: Fixed problem that only a random official line is detect.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6397
diff changeset
403 return ranges;
6385
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
404 }
ef08c4f57ede Artifacts: First part of the official lines guessing.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
405 }

http://dive4elements.wald.intevation.org