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();

http://dive4elements.wald.intevation.org