Mercurial > dive4elements > river
diff backend/src/main/java/org/dive4elements/river/model/sinfo/InfrastructureValue.java @ 9176:1614cb14308f
Work on calculations for S-Info flood duration workflow
author | mschaefer |
---|---|
date | Mon, 25 Jun 2018 19:21:11 +0200 |
parents | a165cd63099f |
children | d889ffe2fb05 |
line wrap: on
line diff
--- a/backend/src/main/java/org/dive4elements/river/model/sinfo/InfrastructureValue.java Mon Jun 25 17:58:11 2018 +0200 +++ b/backend/src/main/java/org/dive4elements/river/model/sinfo/InfrastructureValue.java Mon Jun 25 19:21:11 2018 +0200 @@ -22,9 +22,12 @@ import javax.persistence.OneToOne; import javax.persistence.SequenceGenerator; import javax.persistence.Table; +import javax.persistence.Transient; import org.dive4elements.river.backend.SessionHolder; import org.dive4elements.river.model.Attribute; +import org.dive4elements.river.model.Attribute.AttributeKey; +import org.dive4elements.river.model.River; import org.hibernate.Query; import org.hibernate.Session; @@ -117,6 +120,11 @@ this.attribute = attribute; } + @Transient + public AttributeKey getAttributeKey() { + return this.getAttribute().getKey(); + } + @Column(name = "height") public Double getHeight() { return this.height; @@ -127,7 +135,7 @@ } /** - * Selects the infrastructure values of a data series in a km range from the database + * Selects from the database the infrastructure values of a data series in a km range */ public static List<InfrastructureValue> getValues(final Infrastructure parent, final double kmLo, final double kmHi) { final Session session = SessionHolder.HOLDER.get(); @@ -138,4 +146,25 @@ query.setParameter("kmHi", new Double(kmHi)); return query.list(); } + + /** + * Selects from the database the infrastructure values of a km range of a river and a river side + */ + public static List<InfrastructureValue> getValues(final River river, final double kmLo, final double kmHi, final AttributeKey riverside) { + final Session session = SessionHolder.HOLDER.get(); + String riversideClause = ""; + if ((riverside == AttributeKey.LEFT) || (riverside == AttributeKey.RIGHT)) + riversideClause = " AND (v.attribute.id=:attr_id)"; + final Query query = session.createQuery("FROM InfrastructureValue v" + + " WHERE (v.infrastructure.river=:river)" + + " AND (v.station BETWEEN :kmLo - 0.0001 AND :kmHi + 0.0001)" + + riversideClause + + " ORDER BY v.station, v.attribute.id"); + query.setParameter("river", river); + query.setParameter("kmLo", new Double(kmLo)); + query.setParameter("kmHi", new Double(kmHi)); + if (!riversideClause.isEmpty()) + query.setParameter("attr_id", riverside.getId()); + return query.list(); + } }