annotate backend/src/main/java/org/dive4elements/river/model/sinfo/CollisionAggregateValue.java @ 9117:623b51bf03d7

Added datacage select and chart display for river bed collision counts loaded from database
author mschaefer
date Mon, 04 Jun 2018 17:31:51 +0200
parents
children 8d4e7e08dbc0
rev   line source
9117
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
1 /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
2 * Software engineering by
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
5 *
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
9 */
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
10
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
11 package org.dive4elements.river.model.sinfo;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
12
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
13 import java.io.Serializable;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
14 import java.util.ArrayList;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
15 import java.util.Date;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
16 import java.util.List;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
17
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
18 import org.dive4elements.river.backend.SessionHolder;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
19 import org.hibernate.SQLQuery;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
20 import org.hibernate.Session;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
21 import org.hibernate.type.StandardBasicTypes;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
22
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
23
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
24 /**
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
25 * Aggregation of collision_values
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
26 *
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
27 * @author Matthias Schäfer
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
28 *
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
29 */
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
30 public class CollisionAggregateValue implements Serializable {
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
31
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
32 /***** FIELDS *****/
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
33
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
34 private static final long serialVersionUID = 1;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
35
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
36 private Collision parent;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
37
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
38 private double station;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
39
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
40 // private CollisionType collisionType;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
41
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
42 private Date minDate;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
43
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
44 private Date maxDate;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
45
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
46 private int count;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
47
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
48 private double gaugeW;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
49
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
50
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
51 /***** CONSTRUCTORS *****/
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
52
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
53 public CollisionAggregateValue() {
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
54 }
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
55
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
56 public CollisionAggregateValue(final Collision collision, final double station, final Date minDate, final Date maxDate, final int count,
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
57 final double gaugeW) {
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
58 this.parent = collision;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
59 this.station = station;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
60 // this.collisionType = collisionType;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
61 this.minDate = minDate;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
62 this.maxDate = maxDate;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
63 this.count = count;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
64 this.gaugeW = gaugeW;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
65 }
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
66
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
67
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
68 /***** METHODS *****/
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
69
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
70 public int getCount() {
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
71 return this.count;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
72 }
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
73
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
74 public Collision getCollision() {
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
75 return this.parent;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
76 }
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
77
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
78 public double getStation() {
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
79 return this.station;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
80 }
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
81
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
82 // public CollisionType getCollisionType() {
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
83 // return this.collisionType;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
84 // }
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
85
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
86 public Date getMinDate() {
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
87 return this.minDate;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
88 }
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
89
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
90 public Date getMaxDate() {
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
91 return this.maxDate;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
92 }
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
93
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
94 public Double getGaugeW() {
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
95 return this.gaugeW;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
96 }
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
97
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
98 /**
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
99 * Selects the collision aggregate values of a data series in a km range from the database
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
100 */
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
101 public static List<CollisionAggregateValue> getValuesByKm(final Collision parent, final double kmLo, final double kmHi) {
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
102 final Session session = SessionHolder.HOLDER.get();
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
103 final SQLQuery query = session.createSQLQuery("SELECT FLOOR(station+0.4999) AS station, COUNT(*) AS count,"
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
104 + " MIN(event_date) AS date_min, MAX(event_date) AS date_max,"
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
105 + " AVG(gauge_w) AS gauge_w"
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
106 + " FROM collision_values v INNER JOIN collision s ON v.collision_id=s.id"
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
107 + " WHERE (collision_id=:parent)"
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
108 + " AND (station BETWEEN (:kmLo - 0.0001) AND (:kmHi + 0.0001))"
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
109 + " GROUP BY FLOOR(station+0.4999);").addScalar("station", StandardBasicTypes.DOUBLE)
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
110 .addScalar("count", StandardBasicTypes.INTEGER).addScalar("date_min", StandardBasicTypes.DATE)
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
111 .addScalar("date_max", StandardBasicTypes.DATE).addScalar("gauge_w", StandardBasicTypes.DOUBLE);
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
112 query.setInteger("parent", parent.getId());
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
113 query.setDouble("kmLo", new Double(kmLo));
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
114 query.setDouble("kmHi", new Double(kmHi));
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
115 final List<CollisionAggregateValue> values = new ArrayList();
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
116 final List<Object[]> rows = query.list();
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
117 if (rows != null) {
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
118 for (int i = 0; i <= rows.size() - 1; i++) {
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
119 values.add(new CollisionAggregateValue(parent, (double) rows.get(i)[0], (Date) rows.get(i)[2], (Date) rows.get(i)[3],
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
120 (int) rows.get(i)[1], (double) rows.get(i)[4]));
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
121 }
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
122 }
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
123 return values;
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
124 }
623b51bf03d7 Added datacage select and chart display for river bed collision counts loaded from database
mschaefer
parents:
diff changeset
125 }

http://dive4elements.wald.intevation.org