annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedOverview.java @ 9801:1d7a72a50183 3.2.x tip

Assume Compose V2, consistently
author Tom Gottfried <tom@intevation.de>
date Thu, 23 Nov 2023 10:14:13 +0100
parents 0a5239a1e46e
children
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: 3751
diff changeset
9 package org.dive4elements.river.artifacts.model.minfo;
3751
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
10
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
11 import java.io.Serializable;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
12 import java.text.SimpleDateFormat;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
13 import java.util.ArrayList;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
14 import java.util.Date;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
15 import java.util.List;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
16
9726
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8780
diff changeset
17 import org.apache.logging.log4j.Logger;
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8780
diff changeset
18 import org.apache.logging.log4j.LogManager;
3751
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
19 import org.hibernate.SQLQuery;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
20 import org.hibernate.Session;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
21 import org.hibernate.type.StandardBasicTypes;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
22 import org.w3c.dom.Document;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
23 import org.w3c.dom.Element;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
24
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3751
diff changeset
25 import org.dive4elements.river.utils.KMIndex;
8684
2e11fc7f5d35 (issue1796) Use seddb name of a river when accessing the seddb
Andre Heinecke <andre.heinecke@intevation.de>
parents: 5994
diff changeset
26 import org.dive4elements.river.artifacts.model.RiverFactory;
3751
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
27
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
28 public class BedOverview
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
29 implements Serializable
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
30 {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
31 /**
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
32 * Serial version UId.
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
33 */
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
34 private static final long serialVersionUID = -7967134407371364911L;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
35
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
36 public interface Filter {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
37 boolean accept(KMIndex<List<Date>> entry);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
38
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
39 } // interface Filter
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
40
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
41
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
42 public static final Filter ACCEPT = new Filter() {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
43 public boolean accept(KMIndex<List<Date>> entry) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
44 return true;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
45 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
46 };
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
47
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
48 public static class KmFilter implements Filter {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
49
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
50 protected double km;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
51
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
52 public KmFilter (double km) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
53 this.km = km;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
54 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
55 public boolean accept(KMIndex<List<Date>> list) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
56 for (KMIndex.Entry<List<Date>> e: list){
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
57 if (e.getKm() == km) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
58 return true;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
59 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
60 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
61 return false;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
62 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
63 };
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
64
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
65 public static class DateFilter implements Filter {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
66
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
67 protected Date date;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
68
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
69 public DateFilter (Date date) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
70 this.date = date;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
71 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
72
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
73 public boolean accept(KMIndex<List<Date>> list) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
74 for (KMIndex.Entry<List<Date>> e: list){
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
75 if (e.getValue().equals(this.date)) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
76 return true;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
77 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
78 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
79 return false;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
80 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
81 };
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
82
9726
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8780
diff changeset
83 private static Logger log = LogManager.getLogger(BedOverview.class);
3751
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
84
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
85 public static final double EPSILON = 1e-4;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
86
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
87 public static final String DATE_FORMAT = "dd.MM.yyyy";
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
88
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
89 public static final String SQL_SQ =
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
90 "SELECT" +
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
91 " so.km AS km," +
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
92 " so.datum AS datum " +
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
93 "FROM sohltest so " +
8780
85f36f9f1bd3 Issue1854: Adapt statement to QualityMeasurementFactory
Tom Gottfried <tom@intevation.de>
parents: 8779
diff changeset
94 " JOIN station s ON so.stationid = s.stationid " +
85f36f9f1bd3 Issue1854: Adapt statement to QualityMeasurementFactory
Tom Gottfried <tom@intevation.de>
parents: 8779
diff changeset
95 " JOIN gewaesser g ON s.gewaesserid = g.gewaesserid " +
85f36f9f1bd3 Issue1854: Adapt statement to QualityMeasurementFactory
Tom Gottfried <tom@intevation.de>
parents: 8779
diff changeset
96 " JOIN sohlprobe sp ON sp.sohltestid = so.sohltestid " +
85f36f9f1bd3 Issue1854: Adapt statement to QualityMeasurementFactory
Tom Gottfried <tom@intevation.de>
parents: 8779
diff changeset
97 " JOIN siebanalyse sa ON sa.sohlprobeid = sp.sohlprobeid " +
3751
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
98 "WHERE" +
8779
50ff99266e0e Issue1854: Filter BedOverview down to river distance.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
99 " g.name = :name" +
50ff99266e0e Issue1854: Filter BedOverview down to river distance.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
100 " AND so.km IS NOT NULL" +
50ff99266e0e Issue1854: Filter BedOverview down to river distance.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
101 " AND so.km BETWEEN :from AND :to " +
8780
85f36f9f1bd3 Issue1854: Adapt statement to QualityMeasurementFactory
Tom Gottfried <tom@intevation.de>
parents: 8779
diff changeset
102 " AND sp.tiefevon IS NOT NULL " +
85f36f9f1bd3 Issue1854: Adapt statement to QualityMeasurementFactory
Tom Gottfried <tom@intevation.de>
parents: 8779
diff changeset
103 " AND sp.tiefebis IS NOT NULL " +
85f36f9f1bd3 Issue1854: Adapt statement to QualityMeasurementFactory
Tom Gottfried <tom@intevation.de>
parents: 8779
diff changeset
104 "ORDER BY so.km, so.datum";
3751
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
105
8779
50ff99266e0e Issue1854: Filter BedOverview down to river distance.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
106 protected String riverName;
50ff99266e0e Issue1854: Filter BedOverview down to river distance.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
107 protected String SeddbRiverName;
3751
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
108
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
109 protected KMIndex<List<Date>> entries;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
110
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
111 public BedOverview() {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
112 entries = new KMIndex<List<Date>>();
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
113 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
114
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
115 public BedOverview(String riverName) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
116 this();
8779
50ff99266e0e Issue1854: Filter BedOverview down to river distance.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
117 this.riverName = riverName;
50ff99266e0e Issue1854: Filter BedOverview down to river distance.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
118 this.SeddbRiverName = RiverFactory.getRiver(riverName).nameForSeddb();
3751
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
119 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
120
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
121 private static final boolean epsilonEquals(double a, double b) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
122 return Math.abs(a - b) < EPSILON;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
123 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
124
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
125 protected void loadData(Session session) {
8779
50ff99266e0e Issue1854: Filter BedOverview down to river distance.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
126 double [] fromTo = RiverFactory.getRiver(riverName)
50ff99266e0e Issue1854: Filter BedOverview down to river distance.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
127 .determineMinMaxDistance();
50ff99266e0e Issue1854: Filter BedOverview down to river distance.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
128
3751
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
129 SQLQuery query = session.createSQLQuery(SQL_SQ)
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
130 .addScalar("km", StandardBasicTypes.DOUBLE)
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
131 .addScalar("datum", StandardBasicTypes.DATE);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
132
8779
50ff99266e0e Issue1854: Filter BedOverview down to river distance.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
133 query.setString("name", SeddbRiverName);
50ff99266e0e Issue1854: Filter BedOverview down to river distance.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
134 query.setDouble("from", fromTo[0]);
50ff99266e0e Issue1854: Filter BedOverview down to river distance.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
135 query.setDouble("to", fromTo[1]);
3751
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
136
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
137 List<Object []> list = query.list();
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
138
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
139 if (list.isEmpty()) {
8779
50ff99266e0e Issue1854: Filter BedOverview down to river distance.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
140 log.warn("No river '" + SeddbRiverName + "' found.");
3751
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
141 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
142
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
143 Double prevKm = -Double.MAX_VALUE;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
144 List<Date> dates = new ArrayList<Date>();
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
145
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
146 for (Object [] row: list) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
147 Double km = (Double)row[0];
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
148 if (!epsilonEquals(km, prevKm) && !dates.isEmpty()) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
149 entries.add(prevKm, dates);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
150 dates = new ArrayList<Date>();
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
151 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
152 dates.add((Date)row[1]);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
153 prevKm = km;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
154 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
155
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
156 if (!dates.isEmpty()) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
157 entries.add(prevKm, dates);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
158 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
159 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
160
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
161 public boolean load(Session session) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
162
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
163 loadData(session);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
164
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
165 return true;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
166 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
167
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
168
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
169 public void generateOverview(Document document) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
170 generateOverview(document, ACCEPT);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
171 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
172
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
173 public KMIndex<List<Date>> filter(Filter f) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
174 // TODO: Apply filter
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
175 return entries;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
176 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
177
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
178 public void generateOverview(
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
179 Document document,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
180 Filter filter
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
181 ) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
182 KMIndex<List<Date>> filtered = filter(ACCEPT);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
183
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
184 Element sqElement = document.createElement("bed");
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
185
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
186 Element riverElement = document.createElement("river");
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
187
8779
50ff99266e0e Issue1854: Filter BedOverview down to river distance.
Tom Gottfried <tom@intevation.de>
parents: 8684
diff changeset
188 riverElement.setAttribute("name", SeddbRiverName);
3751
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
189
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
190 sqElement.appendChild(riverElement);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
191
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
192 SimpleDateFormat df = new SimpleDateFormat(DATE_FORMAT);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
193
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
194 Element kmE = document.createElement("km");
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
195
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
196 for (KMIndex.Entry<List<Date>> e: filtered) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
197
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
198 List<Date> dates = e.getValue();
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
199
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
200 if (!dates.isEmpty()) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
201 Element dEs = document.createElement("dates");
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
202
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
203 for (Date d: dates) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
204 Element dE = document.createElement("date");
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
205
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
206 dE.setAttribute("value", df.format(d));
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
207
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
208 dEs.appendChild(dE);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
209 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
210
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
211 kmE.appendChild(dEs);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
212 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
213 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
214
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
215 sqElement.appendChild(kmE);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
216
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
217 document.appendChild(sqElement);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
218 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
219 }

http://dive4elements.wald.intevation.org