annotate backend/src/main/java/org/dive4elements/river/model/FastAnnotations.java @ 6229:3fea9701d58d

Fix gauge determination. If we look upstream ( a > b ) we still have to compare the start value of our range against the gauge and not the end value. The start value is always the relevant value as we handle the direction by checking this against A or B of the gauge. Also: I will never compare doubles with == again. I will never compare doubles with == again. I will never compare doubles with == again. I will never compare doubles with == again. I will never compare doubles with == again.
author Andre Heinecke <aheinecke@intevation.de>
date Thu, 06 Jun 2013 18:23:17 +0200
parents 4c3ccf2b0304
children 6ae0c5116d58
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 *
5992
4c3ccf2b0304 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5844
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5844
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
5992
4c3ccf2b0304 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5844
diff changeset
6 * documentation coming with Dive4Elements River for details.
5844
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