comparison backend/src/main/java/org/dive4elements/river/model/MeasurementStation.java @ 8412:17db08570637

SCHEMA CHANGE: removed superfluous columns station and river_id from measurement_stations and adapted other components accordingly.
author Tom Gottfried <tom@intevation.de>
date Wed, 15 Oct 2014 19:20:26 +0200
parents d5d717effa06
children ffbeffe2d266
comparison
equal deleted inserted replaced
8411:b8c6cb36607e 8412:17db08570637
6 * documentation coming with Dive4Elements River for details. 6 * documentation coming with Dive4Elements River for details.
7 */ 7 */
8 8
9 package org.dive4elements.river.model; 9 package org.dive4elements.river.model;
10 10
11 import java.util.Iterator;
11 import java.util.List; 12 import java.util.List;
13 import java.util.ArrayList;
14
15 import java.math.BigDecimal;
12 16
13 import javax.persistence.Column; 17 import javax.persistence.Column;
14 import javax.persistence.Entity; 18 import javax.persistence.Entity;
15 import javax.persistence.GeneratedValue; 19 import javax.persistence.GeneratedValue;
16 import javax.persistence.GenerationType; 20 import javax.persistence.GenerationType;
33 37
34 private String name; 38 private String name;
35 private String measurementType; 39 private String measurementType;
36 private String riverside; 40 private String riverside;
37 private String operator; 41 private String operator;
38 private String description; 42 private String comment;
39 43
40 private Double station;
41 private Range range; 44 private Range range;
42
43 private River river;
44 45
45 private Gauge gauge; 46 private Gauge gauge;
46 private String gaugeName; 47 private String gaugeName;
47 48
48 private TimeInterval observationTimerange; 49 private TimeInterval observationTimerange;
49 50
50 public MeasurementStation() { 51 public MeasurementStation() {
51 } 52 }
52 53
53 public MeasurementStation(River river, String name, String measurementType, 54 public MeasurementStation(String name, String measurementType,
54 String riverside, Double station, Range range, Gauge gauge, 55 String riverside, Range range, Gauge gauge,
55 String gaugeName, TimeInterval observationTimerange, String operator, 56 String gaugeName, TimeInterval observationTimerange, String operator,
56 String description 57 String comment
57 ) { 58 ) {
58 this.river = river;
59 this.name = name; 59 this.name = name;
60 this.measurementType = measurementType; 60 this.measurementType = measurementType;
61 this.riverside = riverside; 61 this.riverside = riverside;
62 this.station = station;
63 this.range = range; 62 this.range = range;
64 this.gauge = gauge; 63 this.gauge = gauge;
65 this.gaugeName = gaugeName; 64 this.gaugeName = gaugeName;
66 this.observationTimerange = observationTimerange; 65 this.observationTimerange = observationTimerange;
67 this.operator = operator; 66 this.operator = operator;
68 this.description = description; 67 this.comment = comment;
69 } 68 }
70 69
71 @Id 70 @Id
72 @SequenceGenerator(name = "SEQ_MEASUREMENT_STATION_ID_SEQ", sequenceName = "MEASUREMENT_STATION_ID_SEQ", allocationSize = 1) 71 @SequenceGenerator(name = "SEQ_MEASUREMENT_STATION_ID_SEQ", sequenceName = "MEASUREMENT_STATION_ID_SEQ", allocationSize = 1)
73 @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_MEASUREMENT_STATION_ID_SEQ") 72 @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_MEASUREMENT_STATION_ID_SEQ")
106 public void setRiverside(String riverside) { 105 public void setRiverside(String riverside) {
107 this.riverside = riverside; 106 this.riverside = riverside;
108 } 107 }
109 108
110 @OneToOne 109 @OneToOne
111 @JoinColumn(name = "river_id")
112 public River getRiver() {
113 return river;
114 }
115
116 public void setRiver(River river) {
117 this.river = river;
118 }
119
120 @OneToOne
121 @JoinColumn(name = "reference_gauge_id") 110 @JoinColumn(name = "reference_gauge_id")
122 public Gauge getGauge() { 111 public Gauge getGauge() {
123 return gauge; 112 return gauge;
124 } 113 }
125 114
132 return gaugeName; 121 return gaugeName;
133 } 122 }
134 123
135 public void setGaugeName(String gaugeName) { 124 public void setGaugeName(String gaugeName) {
136 this.gaugeName = gaugeName; 125 this.gaugeName = gaugeName;
137 }
138
139 @Column(name = "station")
140 public Double getStation() {
141 return station;
142 }
143
144 public void setStation(Double station) {
145 this.station = station;
146 } 126 }
147 127
148 @OneToOne 128 @OneToOne
149 @JoinColumn(name = "range_id") 129 @JoinColumn(name = "range_id")
150 public Range getRange() { 130 public Range getRange() {
154 public void setRange(Range range) { 134 public void setRange(Range range) {
155 this.range = range; 135 this.range = range;
156 } 136 }
157 137
158 @OneToOne 138 @OneToOne
159 @JoinColumn(name = "observation_timerange_id") 139 @JoinColumn(name = "time_interval_id")
160 public TimeInterval getObservationTimerange() { 140 public TimeInterval getObservationTimerange() {
161 return observationTimerange; 141 return observationTimerange;
162 } 142 }
163 143
164 public void setObservationTimerange(TimeInterval observationTimerange) { 144 public void setObservationTimerange(TimeInterval observationTimerange) {
172 152
173 public void setOperator(String operator) { 153 public void setOperator(String operator) {
174 this.operator = operator; 154 this.operator = operator;
175 } 155 }
176 156
177 @Column(name = "description") 157 @Column(name = "comment")
178 public String getDescription() { 158 public String getComment() {
179 return description; 159 return comment;
180 } 160 }
181 161
182 public void setDescription(String description) { 162 public void setComment(String comment) {
183 this.description = description; 163 this.comment = comment;
184 } 164 }
185 165
186 public static List<MeasurementStation> getStationsAtKM(String river, Double river_km) 166 public static List<MeasurementStation> getStationsAtRiver(River river) {
187 {
188 Session session = SessionHolder.HOLDER.get(); 167 Session session = SessionHolder.HOLDER.get();
189 168
190 Query query = session.createQuery( 169 Query query = session.createQuery(
191 "from MeasurementStation as ms " + 170 "from MeasurementStation " +
192 "where ms.river.name = :river_name and ms.station = :river_km"); 171 "where range.river = :river");
193 query.setParameter("river_name", river); 172
194 query.setParameter("river_km", river_km); 173 query.setParameter("river", river);
195 174
196 return query.list(); 175 return query.list();
197 } 176 }
177
178 public static List<MeasurementStation> getStationsAtKM(
179 River river,
180 Double river_km
181 ) {
182 Session session = SessionHolder.HOLDER.get();
183
184 Query query = session.createQuery(
185 "from MeasurementStation where range.river = :river");
186 query.setParameter("river", river);
187
188 List<MeasurementStation> result = new ArrayList<MeasurementStation>();
189 for (Iterator iter = query.iterate(); iter.hasNext();) {
190 MeasurementStation st = (MeasurementStation)iter.next();
191 Double a = st.getRange().getA().doubleValue();
192 Double b = st.getRange().getB() == null
193 ? null
194 : st.getRange().getB().doubleValue();
195
196 // In case river is km_up, station is at larger value of range
197 if (river.getKmUp() && b != null && b == river_km
198 || !river.getKmUp() && a == river_km
199 || b == null && a == river_km // no end km given
200 ) {
201 result.add(st);
202 }
203 }
204 return result;
205 }
198 } 206 }

http://dive4elements.wald.intevation.org