Mercurial > dive4elements > river
diff backend/src/main/java/org/dive4elements/river/model/RiverAxisKm.java @ 9563:3955ecc1a516
Restrict inundation map to selected river range
author | gernotbelger |
---|---|
date | Mon, 29 Oct 2018 17:57:30 +0100 |
parents | 4c3ccf2b0304 |
children |
line wrap: on
line diff
--- a/backend/src/main/java/org/dive4elements/river/model/RiverAxisKm.java Thu Oct 25 17:11:59 2018 +0200 +++ b/backend/src/main/java/org/dive4elements/river/model/RiverAxisKm.java Mon Oct 29 17:57:30 2018 +0100 @@ -10,6 +10,7 @@ import java.io.Serializable; import java.math.BigDecimal; +import java.util.Collections; import java.util.List; import javax.persistence.Column; @@ -19,94 +20,105 @@ import javax.persistence.OneToOne; import javax.persistence.Table; +import org.dive4elements.river.backend.SessionHolder; +import org.hibernate.Query; import org.hibernate.Session; -import org.hibernate.Query; import org.hibernate.annotations.Type; import com.vividsolutions.jts.geom.Point; -import org.dive4elements.river.backend.SessionHolder; - - @Entity @Table(name = "river_axes_km") -public class RiverAxisKm -implements Serializable -{ - private Integer id; - private River river; +public class RiverAxisKm implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer id; + private River river; private BigDecimal km; - private Point geom; - + private Point geom; public RiverAxisKm() { } - @Id @Column(name = "id") public Integer getId() { - return id; + return this.id; } - - public void setId(Integer id) { + public void setId(final Integer id) { this.id = id; } - @OneToOne @JoinColumn(name = "river_id") public River getRiver() { - return river; + return this.river; } - - public void setRiver(River river) { + public void setRiver(final River river) { this.river = river; } - @Column(name = "km") public BigDecimal getKm() { - return km; + return this.km; } - - public void setKm(BigDecimal km) { + public void setKm(final BigDecimal km) { this.km = km; } - @Column(name = "geom") @Type(type = "org.hibernatespatial.GeometryUserType") public Point getGeom() { - return geom; + return this.geom; } - - public void setGeom(Point geom) { + public void setGeom(final Point geom) { this.geom = geom; } - /** * Returns a list of RiverAxisKm objects for a given river. * - * @param riverid The ID of a river in the database. + * @param riverid + * The ID of a river in the database. * * @return a list of RiverAxisKm objects. */ - public static List<RiverAxisKm> getRiverAxisKms(int riverid) { - Session session = SessionHolder.HOLDER.get(); + public static List<RiverAxisKm> getRiverAxisKms(final int riverid) { + final Session session = SessionHolder.HOLDER.get(); - Query query = session.createQuery( - "from RiverAxisKm where river.id =:riverid"); + final Query query = session.createQuery("from RiverAxisKm where river.id =:riverid"); query.setParameter("riverid", riverid); - List<RiverAxisKm> list = query.list(); + final List<RiverAxisKm> list = query.list(); return list; } -} -// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : + + public static List<RiverAxisKm> getRiverAxisKms(final int riverId, final double lowerKm, final double upperKm) { + final Session session = SessionHolder.HOLDER.get(); + + assert lowerKm <= upperKm; + + if (Double.isNaN(lowerKm) || Double.isInfinite(lowerKm)) + return Collections.emptyList(); + if (Double.isNaN(upperKm) || Double.isInfinite(upperKm)) + return Collections.emptyList(); + + final BigDecimal fromKm = BigDecimal.valueOf(lowerKm); + final BigDecimal toKm = BigDecimal.valueOf(upperKm); + + final Query query = session.createQuery("from RiverAxisKm where river.id =:riverid AND km >= :fromKm AND km <= :toKm"); + query.setParameter("riverid", riverId); + query.setParameter("fromKm", fromKm); + query.setParameter("toKm", toKm); + + final List<RiverAxisKm> list = query.list(); + + return list; + } +} \ No newline at end of file