Mercurial > dive4elements > river
diff 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 |
line wrap: on
line diff
--- a/backend/src/main/java/org/dive4elements/river/model/MeasurementStation.java Wed Oct 15 14:58:46 2014 +0200 +++ b/backend/src/main/java/org/dive4elements/river/model/MeasurementStation.java Wed Oct 15 19:20:26 2014 +0200 @@ -8,7 +8,11 @@ package org.dive4elements.river.model; +import java.util.Iterator; import java.util.List; +import java.util.ArrayList; + +import java.math.BigDecimal; import javax.persistence.Column; import javax.persistence.Entity; @@ -35,13 +39,10 @@ private String measurementType; private String riverside; private String operator; - private String description; + private String comment; - private Double station; private Range range; - private River river; - private Gauge gauge; private String gaugeName; @@ -50,22 +51,20 @@ public MeasurementStation() { } - public MeasurementStation(River river, String name, String measurementType, - String riverside, Double station, Range range, Gauge gauge, + public MeasurementStation(String name, String measurementType, + String riverside, Range range, Gauge gauge, String gaugeName, TimeInterval observationTimerange, String operator, - String description + String comment ) { - this.river = river; this.name = name; this.measurementType = measurementType; this.riverside = riverside; - this.station = station; this.range = range; this.gauge = gauge; this.gaugeName = gaugeName; this.observationTimerange = observationTimerange; this.operator = operator; - this.description = description; + this.comment = comment; } @Id @@ -108,16 +107,6 @@ } @OneToOne - @JoinColumn(name = "river_id") - public River getRiver() { - return river; - } - - public void setRiver(River river) { - this.river = river; - } - - @OneToOne @JoinColumn(name = "reference_gauge_id") public Gauge getGauge() { return gauge; @@ -136,15 +125,6 @@ this.gaugeName = gaugeName; } - @Column(name = "station") - public Double getStation() { - return station; - } - - public void setStation(Double station) { - this.station = station; - } - @OneToOne @JoinColumn(name = "range_id") public Range getRange() { @@ -156,7 +136,7 @@ } @OneToOne - @JoinColumn(name = "observation_timerange_id") + @JoinColumn(name = "time_interval_id") public TimeInterval getObservationTimerange() { return observationTimerange; } @@ -174,25 +154,53 @@ this.operator = operator; } - @Column(name = "description") - public String getDescription() { - return description; + @Column(name = "comment") + public String getComment() { + return comment; } - public void setDescription(String description) { - this.description = description; + public void setComment(String comment) { + this.comment = comment; } - public static List<MeasurementStation> getStationsAtKM(String river, Double river_km) - { + public static List<MeasurementStation> getStationsAtRiver(River river) { Session session = SessionHolder.HOLDER.get(); Query query = session.createQuery( - "from MeasurementStation as ms " + - "where ms.river.name = :river_name and ms.station = :river_km"); - query.setParameter("river_name", river); - query.setParameter("river_km", river_km); + "from MeasurementStation " + + "where range.river = :river"); + + query.setParameter("river", river); return query.list(); } + + public static List<MeasurementStation> getStationsAtKM( + River river, + Double river_km + ) { + Session session = SessionHolder.HOLDER.get(); + + Query query = session.createQuery( + "from MeasurementStation where range.river = :river"); + query.setParameter("river", river); + + List<MeasurementStation> result = new ArrayList<MeasurementStation>(); + for (Iterator iter = query.iterate(); iter.hasNext();) { + MeasurementStation st = (MeasurementStation)iter.next(); + Double a = st.getRange().getA().doubleValue(); + Double b = st.getRange().getB() == null + ? null + : st.getRange().getB().doubleValue(); + + // In case river is km_up, station is at larger value of range + if (river.getKmUp() && b != null && b == river_km + || !river.getKmUp() && a == river_km + || b == null && a == river_km // no end km given + ) { + result.add(st); + } + } + return result; + } }