# HG changeset patch # User Felix Wolfsteller # Date 1313152784 0 # Node ID bcef54a563ea3fcfe632bbcea335a1113ccf71d5 # Parent c586b6220f3509bfc54ee5adeda86d015a472539 Added functionality to query range and point-annotations only to AnnotationFactory. flys-artifacts/trunk@2491 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r c586b6220f35 -r bcef54a563ea flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Thu Aug 11 15:08:24 2011 +0000 +++ b/flys-artifacts/ChangeLog Fri Aug 12 12:39:44 2011 +0000 @@ -1,3 +1,12 @@ +2011-08-12 Felix Wolfsteller + + Added functionality to query range and point-annotations only to + AnnotationFactory. + + * src/main/java/de/intevation/flys/artifacts/model/AnnotationsFactory.java + (getPointAnnotations, getAnnotationsBreadth): + New functions to query breadth and point-only annotations. + 2011-08-11 Sascha L. Teichmann * src/main/java/de/intevation/flys/artifacts/datacage/Recommendations.java: diff -r c586b6220f35 -r bcef54a563ea flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/AnnotationsFactory.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/AnnotationsFactory.java Thu Aug 11 15:08:24 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/AnnotationsFactory.java Fri Aug 12 12:39:44 2011 +0000 @@ -1,5 +1,7 @@ package de.intevation.flys.artifacts.model; +import java.math.BigDecimal; + import java.util.List; import java.util.Iterator; @@ -21,6 +23,29 @@ } + /** + * Get Annotations which do not have a "b" ("to")-value set. + * + * @param river name of the river of interest. + * + * @return List of Annotations for river which have only "a" ("from") + * value set. + */ + public static List getPointAnnotations(String river) { + Session session = SessionHolder.HOLDER.get(); + + Query rangesQuery = session.createQuery( + "from Range where river.name=:name and b = null"); + rangesQuery.setParameter("name", river); + List ranges = rangesQuery.list(); + + Query query = session.createQuery( + "from Annotation where range in (:ranges) order by range.a"); + query.setParameterList("ranges", ranges); + return query.list(); + } + + public static List getAnnotations(String river) { Session session = SessionHolder.HOLDER.get(); @@ -36,6 +61,30 @@ } + /** + * Get minimal "a" ("from") and maximal "b" ("to") value of annotations' + * ranges of a river. + * + * @param river name of the river of interest. + * + * @return Array containing minimal "a" and max "b" value of any + * annotation stored for the given river. + */ + public static double[] getAnnotationsBreadth(String river) { + Session session = SessionHolder.HOLDER.get(); + + Query minAQuery = session.createQuery( + "select min(a), max(b) from Range where river.name=:name"); + minAQuery.setParameter("name", river); + + double[] minAmaxB = {0.0f, 0.0f}; + Object[] row = (Object[]) minAQuery.list().iterator().next(); + minAmaxB[0] = ((BigDecimal) row[0]).doubleValue(); + minAmaxB[1] = ((BigDecimal) row[1]).doubleValue(); + return minAmaxB; + } + + public static Iterator getAnnotationsIterator(String river) { Session session = SessionHolder.HOLDER.get();