Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/AnnotationsFactory.java @ 1031:bcef54a563ea
Added functionality to query range and point-annotations only to
AnnotationFactory.
flys-artifacts/trunk@2491 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Fri, 12 Aug 2011 12:39:44 +0000 |
parents | 02c0cce0e469 |
children | 57b03b3ab15c |
comparison
equal
deleted
inserted
replaced
1030:c586b6220f35 | 1031:bcef54a563ea |
---|---|
1 package de.intevation.flys.artifacts.model; | 1 package de.intevation.flys.artifacts.model; |
2 | |
3 import java.math.BigDecimal; | |
2 | 4 |
3 import java.util.List; | 5 import java.util.List; |
4 import java.util.Iterator; | 6 import java.util.Iterator; |
5 | 7 |
6 import de.intevation.flys.backend.SessionHolder; | 8 import de.intevation.flys.backend.SessionHolder; |
19 public static List<Annotation> getAnnotations(River river) { | 21 public static List<Annotation> getAnnotations(River river) { |
20 return getAnnotations(river.getName()); | 22 return getAnnotations(river.getName()); |
21 } | 23 } |
22 | 24 |
23 | 25 |
26 /** | |
27 * Get Annotations which do not have a "b" ("to")-value set. | |
28 * | |
29 * @param river name of the river of interest. | |
30 * | |
31 * @return List of Annotations for river which have only "a" ("from") | |
32 * value set. | |
33 */ | |
34 public static List<Annotation> getPointAnnotations(String river) { | |
35 Session session = SessionHolder.HOLDER.get(); | |
36 | |
37 Query rangesQuery = session.createQuery( | |
38 "from Range where river.name=:name and b = null"); | |
39 rangesQuery.setParameter("name", river); | |
40 List<Range> ranges = rangesQuery.list(); | |
41 | |
42 Query query = session.createQuery( | |
43 "from Annotation where range in (:ranges) order by range.a"); | |
44 query.setParameterList("ranges", ranges); | |
45 return query.list(); | |
46 } | |
47 | |
48 | |
24 public static List<Annotation> getAnnotations(String river) { | 49 public static List<Annotation> getAnnotations(String river) { |
25 Session session = SessionHolder.HOLDER.get(); | 50 Session session = SessionHolder.HOLDER.get(); |
26 | 51 |
27 Query rangesQuery = session.createQuery( | 52 Query rangesQuery = session.createQuery( |
28 "from Range where river.name=:name"); | 53 "from Range where river.name=:name"); |
31 | 56 |
32 Query query = session.createQuery( | 57 Query query = session.createQuery( |
33 "from Annotation where range in (:ranges) order by range.a"); | 58 "from Annotation where range in (:ranges) order by range.a"); |
34 query.setParameterList("ranges", ranges); | 59 query.setParameterList("ranges", ranges); |
35 return query.list(); | 60 return query.list(); |
61 } | |
62 | |
63 | |
64 /** | |
65 * Get minimal "a" ("from") and maximal "b" ("to") value of annotations' | |
66 * ranges of a river. | |
67 * | |
68 * @param river name of the river of interest. | |
69 * | |
70 * @return Array containing minimal "a" and max "b" value of any | |
71 * annotation stored for the given river. | |
72 */ | |
73 public static double[] getAnnotationsBreadth(String river) { | |
74 Session session = SessionHolder.HOLDER.get(); | |
75 | |
76 Query minAQuery = session.createQuery( | |
77 "select min(a), max(b) from Range where river.name=:name"); | |
78 minAQuery.setParameter("name", river); | |
79 | |
80 double[] minAmaxB = {0.0f, 0.0f}; | |
81 Object[] row = (Object[]) minAQuery.list().iterator().next(); | |
82 minAmaxB[0] = ((BigDecimal) row[0]).doubleValue(); | |
83 minAmaxB[1] = ((BigDecimal) row[1]).doubleValue(); | |
84 return minAmaxB; | |
36 } | 85 } |
37 | 86 |
38 | 87 |
39 public static Iterator<Annotation> getAnnotationsIterator(String river) { | 88 public static Iterator<Annotation> getAnnotationsIterator(String river) { |
40 Session session = SessionHolder.HOLDER.get(); | 89 Session session = SessionHolder.HOLDER.get(); |