# HG changeset patch # User Ingo Weinzierl # Date 1317050804 0 # Node ID 8e2fe935ddf1fd0247e0fe223a6396640e1ed2d0 # Parent c4f090a00178c41ff9afdf6ca0640d2f04e564ca Added function to retrieve nearest CrossSectionTrack to a given kilometer. flys-backend/trunk@2826 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r c4f090a00178 -r 8e2fe935ddf1 flys-backend/ChangeLog --- a/flys-backend/ChangeLog Fri Sep 23 11:15:20 2011 +0000 +++ b/flys-backend/ChangeLog Mon Sep 26 15:26:44 2011 +0000 @@ -1,3 +1,9 @@ +2011-09-26 Ingo Weinzierl + + * src/main/java/de/intevation/flys/model/CrossSectionTrack.java: + Added new function that the nearest CrossSectionTrack of a river to a + given kilometer. + 2011-09-23 Bjoern Schilberg * doc/schema/postgresql-spatial.sql: diff -r c4f090a00178 -r 8e2fe935ddf1 flys-backend/src/main/java/de/intevation/flys/model/CrossSectionTrack.java --- a/flys-backend/src/main/java/de/intevation/flys/model/CrossSectionTrack.java Fri Sep 23 11:15:20 2011 +0000 +++ b/flys-backend/src/main/java/de/intevation/flys/model/CrossSectionTrack.java Mon Sep 26 15:26:44 2011 +0000 @@ -104,5 +104,32 @@ return query.list(); } + + + /** + * Returns the nearest CrossSectionTrack of river to a given + * km. + * + * @param river The name of a river. + * @param km The kilometer value. + * + * @return the nearest CrossSectionTrack to km of river river. + */ + public static CrossSectionTrack getCrossSectionTrack( + String river, + double km + ) { + Session session = SessionHolder.HOLDER.get(); + + Query query = session.createQuery( + "from CrossSectionTrack where river.name =:river " + + "order by abs( km - :mykm)"); + query.setParameter("river", river); + query.setParameter("mykm", new BigDecimal(km)); + + List cst = query.list(); + + return cst != null && !cst.isEmpty() ? cst.get(0) : null; + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :