Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/SQOverview.java @ 7299:cde863b2dae3
(issue1529) Only interpolate within a step limit in WQ diagram
Created together with Sascha Teichmann
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Fri, 11 Oct 2013 17:11:15 +0200 |
parents | af13ceeba52a |
children | 2e11fc7f5d35 |
rev | line source |
---|---|
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
2 * Software engineering by Intevation GmbH |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
3 * |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
7 */ |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
8 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3778
diff
changeset
|
9 package org.dive4elements.river.artifacts.model; |
3274
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
10 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
11 import java.io.Serializable; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
12 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
13 import java.text.SimpleDateFormat; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
14 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
15 import java.util.ArrayList; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
16 import java.util.Date; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
17 import java.util.List; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
18 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
19 import org.apache.log4j.Logger; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
20 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
21 import org.hibernate.SQLQuery; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
22 import org.hibernate.Session; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
23 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
24 import org.hibernate.type.StandardBasicTypes; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
25 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
26 import org.w3c.dom.Document; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
27 import org.w3c.dom.Element; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
28 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3778
diff
changeset
|
29 import org.dive4elements.river.utils.KMIndex; |
3274
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
30 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
31 public class SQOverview |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
32 implements Serializable |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
33 { |
3778
35a6c9a49a76
Fixed wrong assigned loggers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3389
diff
changeset
|
34 private static Logger log = Logger.getLogger(SQOverview.class); |
3274
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
35 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
36 /** |
3276
4903e491992e
Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3275
diff
changeset
|
37 * Serial version UId. |
3274
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
38 */ |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
39 private static final long serialVersionUID = -8934372438968398508L; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
40 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
41 public interface Filter { |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
42 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
43 boolean accept(KMIndex<List<Date>> entry); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
44 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
45 } // interface Filter |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
46 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
47 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
48 public static final Filter ACCEPT = new Filter() { |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
49 @Override |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
50 public boolean accept(KMIndex<List<Date>> entry) { |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
51 return true; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
52 } |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
53 }; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
54 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
55 public static class KmFilter implements Filter { |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
56 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
57 protected double km; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
58 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
59 public KmFilter (double km) { |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
60 this.km = km; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
61 } |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
62 @Override |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
63 public boolean accept(KMIndex<List<Date>> list) { |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
64 for (KMIndex.Entry<List<Date>> e: list){ |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
65 if (e.getKm() == km) { |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
66 return true; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
67 } |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
68 } |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
69 return false; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
70 } |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
71 }; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
72 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
73 public static class DateFilter implements Filter { |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
74 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
75 protected Date date; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
76 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
77 public DateFilter (Date date) { |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
78 this.date = date; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
79 } |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
80 @Override |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
81 public boolean accept(KMIndex<List<Date>> list) { |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
82 for (KMIndex.Entry<List<Date>> e: list){ |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
83 if (e.getValue().equals(this.date)) { |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
84 return true; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
85 } |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
86 } |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
87 return false; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
88 } |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
89 }; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
90 |
3275
3570abdf7daa
SQOverview: Made km separating of dates epsilon tolerant and avoid empty date lists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3274
diff
changeset
|
91 public static final double EPSILON = 1e-4; |
3274
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
92 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
93 public static final String DATE_FORMAT = "dd.MM.yyyy"; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
94 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
95 public static final String SQL_SQ = |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
96 "SELECT" + |
3275
3570abdf7daa
SQOverview: Made km separating of dates epsilon tolerant and avoid empty date lists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3274
diff
changeset
|
97 " s.km AS km," + |
3570abdf7daa
SQOverview: Made km separating of dates epsilon tolerant and avoid empty date lists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3274
diff
changeset
|
98 " m.datum AS datum " + |
3274
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
99 "FROM messung m " + |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
100 " JOIN station s" + |
3287
30f157c7e466
SQ: Filter out meassures which don't have a 'Siebsatz'
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3276
diff
changeset
|
101 " ON m.stationid = s.stationid " + |
3274
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
102 " JOIN gewaesser g " + |
3287
30f157c7e466
SQ: Filter out meassures which don't have a 'Siebsatz'
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3276
diff
changeset
|
103 " ON s.gewaesserid = g.gewaesserid " + |
3274
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
104 "WHERE" + |
3389
816ceb0418b9
Q is not taken from MESSUNG.Q but from MESSUNG.Q_BPEGEL
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3290
diff
changeset
|
105 " m.q_bpegel IS NOT NULL AND" + |
3274
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
106 " g.name = :name " + |
3287
30f157c7e466
SQ: Filter out meassures which don't have a 'Siebsatz'
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3276
diff
changeset
|
107 "ORDER by" + |
30f157c7e466
SQ: Filter out meassures which don't have a 'Siebsatz'
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3276
diff
changeset
|
108 " s.km, m.datum"; |
3274
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
109 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
110 protected String riverName; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
111 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
112 protected KMIndex<List<Date>> entries; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
113 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
114 public SQOverview() { |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
115 entries = new KMIndex<List<Date>>(); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
116 } |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
117 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
118 public SQOverview(String riverName) { |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
119 this(); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
120 this.riverName = riverName; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
121 } |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
122 |
3275
3570abdf7daa
SQOverview: Made km separating of dates epsilon tolerant and avoid empty date lists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3274
diff
changeset
|
123 private static final boolean epsilonEquals(double a, double b) { |
3570abdf7daa
SQOverview: Made km separating of dates epsilon tolerant and avoid empty date lists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3274
diff
changeset
|
124 return Math.abs(a - b) < EPSILON; |
3570abdf7daa
SQOverview: Made km separating of dates epsilon tolerant and avoid empty date lists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3274
diff
changeset
|
125 } |
3570abdf7daa
SQOverview: Made km separating of dates epsilon tolerant and avoid empty date lists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3274
diff
changeset
|
126 |
3274
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
127 protected void loadData(Session session) { |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
128 SQLQuery query = session.createSQLQuery(SQL_SQ) |
3289
ec9aab93f292
SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3287
diff
changeset
|
129 .addScalar("km", StandardBasicTypes.DOUBLE) |
ec9aab93f292
SQ: First peek into fetching relevant data from SedDB
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3287
diff
changeset
|
130 .addScalar("datum", StandardBasicTypes.DATE); |
3274
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
131 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
132 query.setString("name", riverName); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
133 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
134 List<Object []> list = query.list(); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
135 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
136 if (list.isEmpty()) { |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
137 log.warn("No river '" + riverName + "' found."); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
138 } |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
139 |
3275
3570abdf7daa
SQOverview: Made km separating of dates epsilon tolerant and avoid empty date lists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3274
diff
changeset
|
140 Double prevKm = -Double.MAX_VALUE; |
3274
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
141 List<Date> dates = new ArrayList<Date>(); |
3275
3570abdf7daa
SQOverview: Made km separating of dates epsilon tolerant and avoid empty date lists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3274
diff
changeset
|
142 |
3570abdf7daa
SQOverview: Made km separating of dates epsilon tolerant and avoid empty date lists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3274
diff
changeset
|
143 for (Object [] row: list) { |
3570abdf7daa
SQOverview: Made km separating of dates epsilon tolerant and avoid empty date lists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3274
diff
changeset
|
144 Double km = (Double)row[0]; |
3570abdf7daa
SQOverview: Made km separating of dates epsilon tolerant and avoid empty date lists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3274
diff
changeset
|
145 if (!epsilonEquals(km, prevKm) && !dates.isEmpty()) { |
3274
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
146 entries.add(prevKm, dates); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
147 dates = new ArrayList<Date>(); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
148 } |
3275
3570abdf7daa
SQOverview: Made km separating of dates epsilon tolerant and avoid empty date lists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3274
diff
changeset
|
149 dates.add((Date)row[1]); |
3274
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
150 prevKm = km; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
151 } |
3275
3570abdf7daa
SQOverview: Made km separating of dates epsilon tolerant and avoid empty date lists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3274
diff
changeset
|
152 |
3570abdf7daa
SQOverview: Made km separating of dates epsilon tolerant and avoid empty date lists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3274
diff
changeset
|
153 if (!dates.isEmpty()) { |
3570abdf7daa
SQOverview: Made km separating of dates epsilon tolerant and avoid empty date lists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3274
diff
changeset
|
154 entries.add(prevKm, dates); |
3570abdf7daa
SQOverview: Made km separating of dates epsilon tolerant and avoid empty date lists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3274
diff
changeset
|
155 } |
3274
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
156 } |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
157 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
158 public boolean load(Session session) { |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
159 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
160 loadData(session); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
161 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
162 return true; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
163 } |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
164 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
165 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
166 public void generateOverview(Document document) { |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
167 generateOverview(document, ACCEPT); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
168 } |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
169 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
170 public KMIndex<List<Date>> filter(Filter f) { |
3275
3570abdf7daa
SQOverview: Made km separating of dates epsilon tolerant and avoid empty date lists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3274
diff
changeset
|
171 // TODO: Apply filter |
3274
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
172 return entries; |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
173 } |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
174 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
175 public void generateOverview( |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
176 Document document, |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
177 Filter filter |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
178 ) { |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
179 KMIndex<List<Date>> filtered = filter(ACCEPT); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
180 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
181 Element sqElement = document.createElement("sq"); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
182 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
183 Element riverElement = document.createElement("river"); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
184 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
185 riverElement.setAttribute("name", riverName); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
186 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
187 sqElement.appendChild(riverElement); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
188 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
189 SimpleDateFormat df = new SimpleDateFormat(DATE_FORMAT); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
190 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
191 Element kmE = document.createElement("km"); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
192 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
193 for (KMIndex.Entry<List<Date>> e: filtered) { |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
194 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
195 List<Date> dates = e.getValue(); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
196 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
197 if (!dates.isEmpty()) { |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
198 Element dEs = document.createElement("dates"); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
199 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
200 for (Date d: dates) { |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
201 Element dE = document.createElement("date"); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
202 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
203 dE.setAttribute("value", df.format(d)); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
204 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
205 dEs.appendChild(dE); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
206 } |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
207 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
208 kmE.appendChild(dEs); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
209 } |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
210 } |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
211 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
212 sqElement.appendChild(kmE); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
213 |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
214 document.appendChild(sqElement); |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
215 } |
43e42315ce22
Added service for an overview chart of measuring points in sq relation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
216 } |
3275
3570abdf7daa
SQOverview: Made km separating of dates epsilon tolerant and avoid empty date lists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3274
diff
changeset
|
217 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |