annotate backend/src/main/java/org/dive4elements/river/model/FastAnnotations.java @ 5844:4dd33b86dc61

Added header to river backend.
author Sascha L. Teichmann <teichmann@intevation.de>
date Fri, 26 Apr 2013 08:25:41 +0200
parents 5aa05a7a34b7
children 4c3ccf2b0304
rev   line source
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
6 * documentation coming with Dive4Elements River for details.
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5829
18619c1e7c2a Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5828
diff changeset
9 package org.dive4elements.river.model;
2382
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 import java.util.Comparator;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12 import java.util.ArrayList;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13 import java.util.List;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14 import java.util.Arrays;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15 import java.util.HashMap;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16 import java.util.Iterator;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17 import java.util.NoSuchElementException;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19 import java.io.Serializable;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
20
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21 import org.hibernate.Session;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22 import org.hibernate.SQLQuery;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24 import org.hibernate.type.StandardBasicTypes;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
25
5829
18619c1e7c2a Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5828
diff changeset
26 import org.dive4elements.river.backend.SessionHolder;
2382
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28 public class FastAnnotations
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
29 implements Serializable
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
30 {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
31 public static final String SQL_BY_RIVER_NAME =
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
32 "SELECT r.a AS a, r.b AS b, p.value AS position, " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
33 "at.value AS attribute, ant.name AS name, " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
34 "e.top AS top, e.bottom AS bottom " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
35 "FROM annotations an " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
36 "JOIN ranges r " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
37 "ON an.range_id = r.id " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
38 "JOIN attributes at " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
39 "ON an.attribute_id = at.id " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
40 "JOIN positions p " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41 "ON an.position_id = p.id " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
42 "JOIN rivers riv " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
43 "ON r.river_id = riv.id " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
44 "LEFT JOIN annotation_types ant " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
45 "ON an.type_id = ant.id " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
46 "LEFT JOIN edges e " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
47 "ON an.edge_id = e.id " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
48 "WHERE riv.name = :river_name " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
49 "ORDER BY r.a";
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
50
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
51 public static final String SQL_BY_RIVER_ID =
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
52 "SELECT r.a AS a, r.b AS b, p.value AS position, " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
53 "at.value AS attribute, ant.name AS name, " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
54 "e.top AS top, e.bottom AS bottom " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
55 "FROM annotations an " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
56 "JOIN ranges r " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
57 "ON an.range_id = r.id " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
58 "JOIN attributes at " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
59 "ON an.attribute_id = at.id " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
60 "JOIN positions p " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
61 "ON an.position_id = p.id " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
62 "LEFT JOIN annotation_types ant " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
63 "ON an.type_id = ant.id " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
64 "LEFT JOIN edges e " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
65 "ON an.edge_id = e.id " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
66 "WHERE r.id = :river_id " +
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
67 "ORDER BY r.a";
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
68
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
69 public static final double EPSILON = 1e-5;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
70
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
71 public static final Comparator<Annotation> KM_CMP =
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
72 new Comparator<Annotation>() {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
73 @Override
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
74 public int compare(Annotation a, Annotation b) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
75 double diff = a.a - b.a;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
76 if (diff < -EPSILON) return -1;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
77 if (diff > +EPSILON) return +1;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
78 return 0;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
79 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
80 };
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
81
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
82 public static final class Annotation
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
83 implements Serializable
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
84 {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
85 private double a;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
86 private double b;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
87 private String position;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
88 private String attribute;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
89 private String name;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
90 private double top;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
91 private double bottom;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
92
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
93 public Annotation() {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
94 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
95
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
96 public Annotation(double a) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
97 this.a = a;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
98 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
99
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
100 public Annotation(
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
101 double a,
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
102 double b,
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
103 String position,
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
104 String attribute,
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
105 String name,
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
106 double top,
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
107 double bottom
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
108 ) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
109 this.a = a;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
110 this.b = b;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
111 this.position = position;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
112 this.attribute = attribute;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
113 this.name = name;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
114 this.top = top;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
115 this.bottom = bottom;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
116 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
117
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
118 public double getA() {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
119 return a;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
120 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
121
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
122 public double getB() {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
123 return b;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
124 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
125
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
126 public String getPosition() {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
127 return position;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
128 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
129
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
130 public String getAttribute() {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
131 return attribute;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
132 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
133
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
134 public String getName() {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
135 return name;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
136 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
137
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
138 public double getTop() {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
139 return top;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
140 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
141
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
142 public double getBottom() {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
143 return bottom;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
144 }
3653
20d249e1589f Added FastAnnotation.Annotation.toString()
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3334
diff changeset
145
20d249e1589f Added FastAnnotation.Annotation.toString()
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3334
diff changeset
146 @Override
20d249e1589f Added FastAnnotation.Annotation.toString()
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3334
diff changeset
147 public String toString() {
20d249e1589f Added FastAnnotation.Annotation.toString()
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3334
diff changeset
148 return "[a=" + a + ";b=" + b +
20d249e1589f Added FastAnnotation.Annotation.toString()
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3334
diff changeset
149 ";pos=" + position + ";attr=" + attribute +
20d249e1589f Added FastAnnotation.Annotation.toString()
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3334
diff changeset
150 ";name=" + name + ";top=" + top +
20d249e1589f Added FastAnnotation.Annotation.toString()
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3334
diff changeset
151 ";bot=" + bottom + "]";
20d249e1589f Added FastAnnotation.Annotation.toString()
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3334
diff changeset
152 }
3323
07c96cd39360 Fix comment.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2382
diff changeset
153 } // class Annotation
2382
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
154
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
155 public interface Filter {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
156
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
157 boolean accept(Annotation annotation);
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
158
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
159 } // interface Filter
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
160
3325
96bd63281af7 Added Override annotation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3324
diff changeset
161 public static class NameFilter implements Filter {
3324
290189f07809 Added filter for annotation names.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3323
diff changeset
162
290189f07809 Added filter for annotation names.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3323
diff changeset
163 private String name;
290189f07809 Added filter for annotation names.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3323
diff changeset
164
3325
96bd63281af7 Added Override annotation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3324
diff changeset
165 public NameFilter(String name) {
3324
290189f07809 Added filter for annotation names.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3323
diff changeset
166 this.name = name;
290189f07809 Added filter for annotation names.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3323
diff changeset
167 }
290189f07809 Added filter for annotation names.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3323
diff changeset
168
3325
96bd63281af7 Added Override annotation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3324
diff changeset
169 @Override
96bd63281af7 Added Override annotation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3324
diff changeset
170 public boolean accept(Annotation annotation) {
3324
290189f07809 Added filter for annotation names.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3323
diff changeset
171 return annotation.getName().contains(name);
290189f07809 Added filter for annotation names.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3323
diff changeset
172 }
3325
96bd63281af7 Added Override annotation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3324
diff changeset
173 } // class NameFilter
3324
290189f07809 Added filter for annotation names.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3323
diff changeset
174
2382
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
175 public static final Filter ALL = new Filter() {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
176 @Override
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
177 public boolean accept(Annotation annotation) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
178 return true;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
179 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
180 };
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
181
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
182 public static final Filter IS_POINT = new Filter() {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
183 @Override
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
184 public boolean accept(Annotation annotation) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
185 return Double.isNaN(annotation.getB());
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
186 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
187 };
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
188
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
189 public static final Filter IS_RANGE = new Filter() {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
190 @Override
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
191 public boolean accept(Annotation annotation) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
192 return !Double.isNaN(annotation.getB());
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
193 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
194 };
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
195
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
196 private Annotation [] annotations;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
197
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
198 public FastAnnotations() {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
199 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
200
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
201 public FastAnnotations(Annotation [] annotations) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
202 this.annotations = annotations;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
203 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
204
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
205 public FastAnnotations(String riverName) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
206 this(loadByRiverName(riverName));
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
207 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
208
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
209 public FastAnnotations(int riverId) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
210 this(loadByRiverId(riverId));
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
211 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
212
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
213 public FastAnnotations(Iterator<Annotation> iter) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
214 this(toArray(iter));
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
215 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
216
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
217 public int size() {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
218 return annotations.length;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
219 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
220
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
221 public Iterator<Annotation> filter(final Filter filter) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
222 return new Iterator<Annotation>() {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
223
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
224 private int idx;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
225 private Annotation current = findNext();
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
226
3334
2ae732e2c65c FLYS backend: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3325
diff changeset
227 @Override
2382
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
228 public boolean hasNext() {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
229 return current != null;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
230 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
231
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
232 @Override
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
233 public Annotation next() {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
234 if (current == null) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
235 throw new NoSuchElementException();
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
236 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
237 Annotation result = current;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
238 current = findNext();
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
239 return result;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
240 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
241
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
242 private Annotation findNext() {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
243
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
244 while (idx < annotations.length) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
245 Annotation annotation = annotations[idx++];
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
246 if (filter.accept(annotation)) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
247 return annotation;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
248 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
249 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
250
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
251 return null;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
252 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
253
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
254 @Override
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
255 public void remove() {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
256 throw new UnsupportedOperationException();
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
257 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
258 };
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
259 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
260
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
261 public static Annotation [] toArray(Iterator<Annotation> iter) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
262
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
263 ArrayList<Annotation> list = new ArrayList<Annotation>();
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
264
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
265 while (iter.hasNext()) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
266 list.add(iter.next());
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
267 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
268
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
269 return list.toArray(new Annotation[list.size()]);
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
270 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
271
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
272 public Annotation findByKm(double km) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
273 Annotation key = new Annotation(km);
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
274 int idx = Arrays.binarySearch(annotations, key, KM_CMP);
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
275 return idx < 0 ? null : annotations[idx];
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
276 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
277
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
278 private static SQLQuery createQuery(String query) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
279 Session session = SessionHolder.HOLDER.get();
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
280
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
281 return session.createSQLQuery(query)
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
282 .addScalar("a", StandardBasicTypes.DOUBLE)
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
283 .addScalar("b", StandardBasicTypes.DOUBLE)
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
284 .addScalar("position", StandardBasicTypes.STRING)
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
285 .addScalar("attribute", StandardBasicTypes.STRING)
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
286 .addScalar("name", StandardBasicTypes.STRING)
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
287 .addScalar("top", StandardBasicTypes.DOUBLE)
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
288 .addScalar("bottom", StandardBasicTypes.DOUBLE);
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
289 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
290
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
291 private static Annotation [] buildAnnotations(List<Object []> list) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
292 Annotation [] anns = new Annotation[list.size()];
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
293
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
294 // Names are likely the same because they are a type
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
295 // like 'Pegel' or 'Hafen'.
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
296 HashMap<String, String> names = new HashMap<String, String>();
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
297
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
298 for (int i = 0; i < anns.length; ++i) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
299 Object [] data = list.get(i);
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
300 double a = ((Double)data[0]);
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
301 double b = data[1] != null ? (Double)data[1] : Double.NaN;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
302 String position = (String)data[2];
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
303 String attribute = (String)data[3];
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
304 String name = (String)data[4];
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
305 double top = data[5] != null ? (Double)data[5] : Double.NaN;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
306 double bottom = data[6] != null ? (Double)data[6] : Double.NaN;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
307
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
308 if (name != null) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
309 String old = names.get(name);
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
310 if (old != null) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
311 name = old;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
312 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
313 else {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
314 names.put(name, name);
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
315 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
316 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
317
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
318 anns[i] = new Annotation(
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
319 a, b, position, attribute, name, top, bottom);
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
320 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
321
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
322 return anns;
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
323 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
324
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
325 public static Annotation [] loadByRiverName(String riverName) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
326
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
327 SQLQuery query = createQuery(SQL_BY_RIVER_NAME);
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
328
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
329 query.setString("river_name", riverName);
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
330
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
331 return buildAnnotations(query.list());
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
332 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
333
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
334 public static Annotation [] loadByRiverId(int riverId) {
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
335
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
336 SQLQuery query = createQuery(SQL_BY_RIVER_ID);
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
337
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
338 query.setInteger("river_id", riverId);
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
339
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
340 return buildAnnotations(query.list());
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
341 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
342 }
c5791de0c495 Added meachnism to backend to fetch all annotation related data in one go.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
343 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org