annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadData.java @ 8768:ef0ec2498dd0

issue1841 Only include loads where value != NaN in info service
author Andre Heinecke <andre.heinecke@intevation.de>
date Thu, 20 Aug 2015 19:14:56 +0200
parents d0f2250b5521
children 5e38e2924c07
rev   line source
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2014 by Bundesanstalt für Gewässerkunde
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
3 *
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
7 */
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
8 package org.dive4elements.river.artifacts.model.minfo;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
9
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
10 import java.io.Serializable;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
11 import java.util.ArrayList;
8034
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
12 import java.util.Collection;
8036
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
13 import java.util.Collections;
8044
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
14 import java.util.Comparator;
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
15 import java.util.Date;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
16 import java.util.List;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
17 import java.util.TreeMap;
8123
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
18 import java.util.TreeSet;
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
19
8199
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
20 import org.apache.log4j.Logger;
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
21
8201
4b8c5a08de04 Make it compile again.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8199
diff changeset
22 import org.dive4elements.river.backend.utils.EpsilonComparator;
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
23
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
24 public class SedimentLoadData implements Serializable
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
25 {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8201
diff changeset
26 private static Logger log = Logger.getLogger(SedimentLoadData.class);
8199
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
27
8177
aa80f9ba56a9 We have to calculate bed load plus suspended sand instead of suspended load.
Tom Gottfried <tom@intevation.de>
parents: 8140
diff changeset
28 public static final int GF_UNKNOWN = -1;
aa80f9ba56a9 We have to calculate bed load plus suspended sand instead of suspended load.
Tom Gottfried <tom@intevation.de>
parents: 8140
diff changeset
29 public static final int GF_COARSE = 0;
aa80f9ba56a9 We have to calculate bed load plus suspended sand instead of suspended load.
Tom Gottfried <tom@intevation.de>
parents: 8140
diff changeset
30 public static final int GF_FINE_MIDDLE = 1;
aa80f9ba56a9 We have to calculate bed load plus suspended sand instead of suspended load.
Tom Gottfried <tom@intevation.de>
parents: 8140
diff changeset
31 public static final int GF_SAND = 2;
aa80f9ba56a9 We have to calculate bed load plus suspended sand instead of suspended load.
Tom Gottfried <tom@intevation.de>
parents: 8140
diff changeset
32 public static final int GF_SUSP_SAND = 3;
aa80f9ba56a9 We have to calculate bed load plus suspended sand instead of suspended load.
Tom Gottfried <tom@intevation.de>
parents: 8140
diff changeset
33 public static final int GF_SUSP_SAND_BED = 4;
aa80f9ba56a9 We have to calculate bed load plus suspended sand instead of suspended load.
Tom Gottfried <tom@intevation.de>
parents: 8140
diff changeset
34 public static final int GF_SUSP_SEDIMENT = 5;
aa80f9ba56a9 We have to calculate bed load plus suspended sand instead of suspended load.
Tom Gottfried <tom@intevation.de>
parents: 8140
diff changeset
35 public static final int GF_TOTAL = 6;
aa80f9ba56a9 We have to calculate bed load plus suspended sand instead of suspended load.
Tom Gottfried <tom@intevation.de>
parents: 8140
diff changeset
36 public static final int GF_BED_LOAD = 7;
aa80f9ba56a9 We have to calculate bed load plus suspended sand instead of suspended load.
Tom Gottfried <tom@intevation.de>
parents: 8140
diff changeset
37 public static final int GF_BED_LOAD_SUSP_SAND = 8;
8293
301a32bd7045 Though not yet part of the calculation, suspended load has to be optionally loadable through datacage.
"Tom Gottfried <tom@intevation.de>"
parents: 8255
diff changeset
38 public static final int GF_SUSP_LOAD = 9;
301a32bd7045 Though not yet part of the calculation, suspended load has to be optionally loadable through datacage.
"Tom Gottfried <tom@intevation.de>"
parents: 8255
diff changeset
39 public static final int GF_MAX = 9;
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
40
8208
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
41 public static final String [] GF_NAMES = {
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
42 "coarse",
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
43 "fine_middle",
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
44 "sand",
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
45 "susp_sand",
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
46 "susp_sand_bed",
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
47 "suspended_sediment",
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
48 "total",
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
49 "bed_load",
8293
301a32bd7045 Though not yet part of the calculation, suspended load has to be optionally loadable through datacage.
"Tom Gottfried <tom@intevation.de>"
parents: 8255
diff changeset
50 "bed_load_susp_sand",
301a32bd7045 Though not yet part of the calculation, suspended load has to be optionally loadable through datacage.
"Tom Gottfried <tom@intevation.de>"
parents: 8255
diff changeset
51 "suspended_load"
8208
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
52 };
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
53
8048
cde6d2a9ec32 Sediment Load: Added table to figure out where grain fractions are measured.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8047
diff changeset
54 public static final int [] MEASUREMENT_STATION_GF = {
8177
aa80f9ba56a9 We have to calculate bed load plus suspended sand instead of suspended load.
Tom Gottfried <tom@intevation.de>
parents: 8140
diff changeset
55 /* GF_COARSE */ Station.BED_LOAD,
aa80f9ba56a9 We have to calculate bed load plus suspended sand instead of suspended load.
Tom Gottfried <tom@intevation.de>
parents: 8140
diff changeset
56 /* GF_FINE_MIDDLE */ Station.BED_LOAD,
aa80f9ba56a9 We have to calculate bed load plus suspended sand instead of suspended load.
Tom Gottfried <tom@intevation.de>
parents: 8140
diff changeset
57 /* GF_SAND */ Station.BED_LOAD,
aa80f9ba56a9 We have to calculate bed load plus suspended sand instead of suspended load.
Tom Gottfried <tom@intevation.de>
parents: 8140
diff changeset
58 /* GF_SUSP_SAND */ Station.BED_LOAD,
aa80f9ba56a9 We have to calculate bed load plus suspended sand instead of suspended load.
Tom Gottfried <tom@intevation.de>
parents: 8140
diff changeset
59 /* GF_SUSP_SAND_BED */ Station.BED_LOAD,
aa80f9ba56a9 We have to calculate bed load plus suspended sand instead of suspended load.
Tom Gottfried <tom@intevation.de>
parents: 8140
diff changeset
60 /* GF_SUSP_SEDIMENT */ Station.SUSPENDED,
aa80f9ba56a9 We have to calculate bed load plus suspended sand instead of suspended load.
Tom Gottfried <tom@intevation.de>
parents: 8140
diff changeset
61 /* GF_TOTAL */ Station.BED_LOAD|Station.SUSPENDED,
aa80f9ba56a9 We have to calculate bed load plus suspended sand instead of suspended load.
Tom Gottfried <tom@intevation.de>
parents: 8140
diff changeset
62 /* GF_BED_LOAD */ Station.BED_LOAD,
8293
301a32bd7045 Though not yet part of the calculation, suspended load has to be optionally loadable through datacage.
"Tom Gottfried <tom@intevation.de>"
parents: 8255
diff changeset
63 /* GF_BED_LOAD_SUSP_SAND */ Station.BED_LOAD,
301a32bd7045 Though not yet part of the calculation, suspended load has to be optionally loadable through datacage.
"Tom Gottfried <tom@intevation.de>"
parents: 8255
diff changeset
64 /* GF_SUSP_LOAD */ Station.SUSPENDED
8048
cde6d2a9ec32 Sediment Load: Added table to figure out where grain fractions are measured.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8047
diff changeset
65 };
cde6d2a9ec32 Sediment Load: Added table to figure out where grain fractions are measured.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8047
diff changeset
66
8209
5114b643a6d6 Fixed broken build.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8208
diff changeset
67 public static final int measurementStationType(int grainFraction) {
5114b643a6d6 Fixed broken build.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8208
diff changeset
68 return grainFraction < 0 || grainFraction >= MEASUREMENT_STATION_GF.length
5114b643a6d6 Fixed broken build.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8208
diff changeset
69 ? Station.UNKNOWN
5114b643a6d6 Fixed broken build.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8208
diff changeset
70 : MEASUREMENT_STATION_GF[grainFraction];
5114b643a6d6 Fixed broken build.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8208
diff changeset
71 }
5114b643a6d6 Fixed broken build.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8208
diff changeset
72
8208
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
73 public static final int grainFractionIndex(String name) {
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
74 for (int i = 0; i < GF_NAMES.length; ++i) {
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
75 if (GF_NAMES[i].equals(name)) {
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
76 return i;
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
77 }
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
78 }
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
79 return GF_UNKNOWN;
8048
cde6d2a9ec32 Sediment Load: Added table to figure out where grain fractions are measured.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8047
diff changeset
80 }
cde6d2a9ec32 Sediment Load: Added table to figure out where grain fractions are measured.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8047
diff changeset
81
8208
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
82 public static final String grainFractionName(int index) {
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
83 return index >= 0 && index < GF_NAMES.length
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
84 ? GF_NAMES[index]
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
85 : "unknown";
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
86 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
87
8208
2badb2ca5f89 Sediment load: converted grain fraction name to an array lookup.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8202
diff changeset
88
8036
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
89 public interface Visitor {
8038
aa622bddfdac Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8036
diff changeset
90 void visit(Station station);
8036
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
91 }
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
92
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
93 public static class Value implements Serializable {
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
94
8036
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
95 public interface Filter {
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
96 boolean accept(Value value);
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
97 }
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
98
8047
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
99 public interface Visitor {
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
100 void visit(Value value);
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
101 }
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
102
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
103 private double value;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
104
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
105 private Load load;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
106
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
107 public Value() {
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
108 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
109
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
110 public Value(Load load, double value) {
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
111 this.load = load;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
112 this.value = value;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
113 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
114
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
115 public double getValue() {
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
116 return value;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
117 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
118
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
119 public Load getLoad() {
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
120 return load;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
121 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
122 } // class Value
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
123
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
124
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
125 public static class Load implements Serializable {
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
126
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
127 private int id;
8058
fbe3ba5a480e Sediment load: Fetch kind of sediment load from database to tell if it is official or not.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8050
diff changeset
128 private int kind;
8239
b207eeb66edd (issue1448) Objectify sq_time_interval id.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8237
diff changeset
129 private Integer sqTiId;
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
130
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
131 private String description;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
132
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
133 private Date startTime;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
134 private Date stopTime;
8199
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
135 private Date sqStartTime;
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
136 private Date sqStopTime;
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
137
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
138 public Load() {
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
139 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
140
8058
fbe3ba5a480e Sediment load: Fetch kind of sediment load from database to tell if it is official or not.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8050
diff changeset
141 public Load(
8237
25c3a62863d2 (issue1448) Unify SedimentLoadData ctor again
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8228
diff changeset
142 int id,
25c3a62863d2 (issue1448) Unify SedimentLoadData ctor again
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8228
diff changeset
143 int kind,
25c3a62863d2 (issue1448) Unify SedimentLoadData ctor again
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8228
diff changeset
144 String description,
25c3a62863d2 (issue1448) Unify SedimentLoadData ctor again
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8228
diff changeset
145 Date startTime,
25c3a62863d2 (issue1448) Unify SedimentLoadData ctor again
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8228
diff changeset
146 Date stopTime,
25c3a62863d2 (issue1448) Unify SedimentLoadData ctor again
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8228
diff changeset
147 Integer sqTiId,
25c3a62863d2 (issue1448) Unify SedimentLoadData ctor again
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8228
diff changeset
148 Date sqStartTime,
25c3a62863d2 (issue1448) Unify SedimentLoadData ctor again
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8228
diff changeset
149 Date sqStopTime
8058
fbe3ba5a480e Sediment load: Fetch kind of sediment load from database to tell if it is official or not.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8050
diff changeset
150 ) {
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
151 this.id = id;
8058
fbe3ba5a480e Sediment load: Fetch kind of sediment load from database to tell if it is official or not.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8050
diff changeset
152 this.kind = kind;
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
153 this.description = description;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
154 this.startTime = startTime;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
155 this.stopTime = stopTime;
8199
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
156 this.sqStartTime = sqStartTime;
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
157 this.sqStopTime = sqStopTime;
8239
b207eeb66edd (issue1448) Objectify sq_time_interval id.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8237
diff changeset
158 this.sqTiId = sqTiId;
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
159 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
160
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
161 public int getId() {
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
162 return id;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
163 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
164
8239
b207eeb66edd (issue1448) Objectify sq_time_interval id.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8237
diff changeset
165 public Integer getSQRelationTimeIntervalId() {
8237
25c3a62863d2 (issue1448) Unify SedimentLoadData ctor again
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8228
diff changeset
166 return sqTiId;
8199
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
167 }
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
168
8058
fbe3ba5a480e Sediment load: Fetch kind of sediment load from database to tell if it is official or not.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8050
diff changeset
169 public int getKind() {
fbe3ba5a480e Sediment load: Fetch kind of sediment load from database to tell if it is official or not.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8050
diff changeset
170 return kind;
fbe3ba5a480e Sediment load: Fetch kind of sediment load from database to tell if it is official or not.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8050
diff changeset
171 }
fbe3ba5a480e Sediment load: Fetch kind of sediment load from database to tell if it is official or not.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8050
diff changeset
172
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
173 public String getDescription() {
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
174 return description;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
175 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
176
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
177 public Date getStartTime() {
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
178 return startTime;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
179 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
180
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
181 public Date getStopTime() {
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
182 return stopTime;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
183 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
184
8199
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
185 public Date getSQStartTime() {
8228
2f63c6c84540 (issue1448) Fix return values of SQ time interval accessors
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8216
diff changeset
186 return sqStartTime;
8199
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
187 }
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
188
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
189 public Date getSQStopTime() {
8228
2f63c6c84540 (issue1448) Fix return values of SQ time interval accessors
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8216
diff changeset
190 return sqStopTime;
8199
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
191 }
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
192
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
193 public boolean isEpoch() {
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
194 return startTime != null && stopTime != null;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
195 }
8185
76e1e9d81ce2 Removed obsolete average and renamed some symbols to make the difference between single fractions and sums of them clearer in the calculation.
Tom Gottfried <tom@intevation.de>
parents: 8178
diff changeset
196 } // class Load
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
197
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
198 public static class Station implements Serializable {
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
199
8048
cde6d2a9ec32 Sediment Load: Added table to figure out where grain fractions are measured.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8047
diff changeset
200 public static final int UNKNOWN = 0;
8044
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
201 public static final int BED_LOAD = 1;
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
202 public static final int SUSPENDED = 2;
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
203
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
204 private double station;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
205
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
206 private int type;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
207
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
208 private List<List<Value>> grainFractions;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
209
8034
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
210 private Station prev;
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
211
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
212 public Station() {
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
213 this(BED_LOAD, 0.0);
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
214 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
215
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
216 public Station(int type, double station) {
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
217 grainFractions = new ArrayList<List<Value>>(GF_MAX+1);
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
218 for (int i = 0; i < GF_MAX+1; ++i) {
8036
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
219 grainFractions.add(null);
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
220 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
221 this.type = type;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
222 this.station = station;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
223 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
224
8768
ef0ec2498dd0 issue1841 Only include loads where value != NaN in info service
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8767
diff changeset
225 public void allLoadsWithValue(Collection<Load> loads) {
8123
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
226 for (List<Value> values: grainFractions) {
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
227 if (values != null) {
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
228 for (Value value: values) {
8768
ef0ec2498dd0 issue1841 Only include loads where value != NaN in info service
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8767
diff changeset
229 if (!Double.isNaN(value.getValue())) {
ef0ec2498dd0 issue1841 Only include loads where value != NaN in info service
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8767
diff changeset
230 loads.add(value.getLoad());
ef0ec2498dd0 issue1841 Only include loads where value != NaN in info service
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8767
diff changeset
231 }
8123
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
232 }
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
233 }
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
234 }
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
235 }
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
236
8768
ef0ec2498dd0 issue1841 Only include loads where value != NaN in info service
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8767
diff changeset
237 public void allNonEpochLoadsWithValue(Collection<Load> loads) {
8750
69b0a71b4845 (issue1448) Make sq time intervals distinct only for non epoch loads
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8293
diff changeset
238 for (List<Value> values: grainFractions) {
69b0a71b4845 (issue1448) Make sq time intervals distinct only for non epoch loads
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8293
diff changeset
239 if (values != null) {
69b0a71b4845 (issue1448) Make sq time intervals distinct only for non epoch loads
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8293
diff changeset
240 for (Value value: values) {
69b0a71b4845 (issue1448) Make sq time intervals distinct only for non epoch loads
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8293
diff changeset
241 Load load = value.getLoad();
8768
ef0ec2498dd0 issue1841 Only include loads where value != NaN in info service
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8767
diff changeset
242 if (load.isEpoch() || Double.isNaN(value.getValue())) {
8750
69b0a71b4845 (issue1448) Make sq time intervals distinct only for non epoch loads
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8293
diff changeset
243 continue;
69b0a71b4845 (issue1448) Make sq time intervals distinct only for non epoch loads
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8293
diff changeset
244 }
69b0a71b4845 (issue1448) Make sq time intervals distinct only for non epoch loads
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8293
diff changeset
245 loads.add(value.getLoad());
69b0a71b4845 (issue1448) Make sq time intervals distinct only for non epoch loads
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8293
diff changeset
246 }
69b0a71b4845 (issue1448) Make sq time intervals distinct only for non epoch loads
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8293
diff changeset
247 }
69b0a71b4845 (issue1448) Make sq time intervals distinct only for non epoch loads
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8293
diff changeset
248 }
69b0a71b4845 (issue1448) Make sq time intervals distinct only for non epoch loads
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8293
diff changeset
249 }
69b0a71b4845 (issue1448) Make sq time intervals distinct only for non epoch loads
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8293
diff changeset
250
8768
ef0ec2498dd0 issue1841 Only include loads where value != NaN in info service
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8767
diff changeset
251 public void allLoadsWithValue(Collection<Load> loads, Integer sqRelationTimeInterval) {
8242
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
252
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
253 for (List<Value> values: grainFractions) {
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
254 if (values == null) {
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
255 continue;
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
256 }
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
257 for (Value value: values) {
8768
ef0ec2498dd0 issue1841 Only include loads where value != NaN in info service
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8767
diff changeset
258 if (Double.isNaN(value.getValue())) {
ef0ec2498dd0 issue1841 Only include loads where value != NaN in info service
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8767
diff changeset
259 continue;
ef0ec2498dd0 issue1841 Only include loads where value != NaN in info service
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8767
diff changeset
260 }
8242
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
261 Load load = value.getLoad();
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
262 Integer sqId = load.getSQRelationTimeIntervalId();
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
263 if ((sqRelationTimeInterval == null)
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
264 || sqId != null && sqId.equals(sqRelationTimeInterval)) {
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
265 loads.add(load);
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
266 }
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
267 }
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
268 }
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
269 }
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
270
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
271 public double getStation() {
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
272 return station;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
273 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
274
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
275 public int getType() {
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
276 return type;
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
277 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
278
8044
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
279 public boolean isType(int type) {
8050
9e79e384aa8b Sediment load: Added more 'sums' to be calculated.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8048
diff changeset
280 return (this.type & type) != 0;
8044
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
281 }
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
282
8034
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
283 public void setPrev(Station prev) {
8193
8d447516b7dd Sum up fractions from stations and previous stations according to respective validity model.
Tom Gottfried <tom@intevation.de>
parents: 8186
diff changeset
284 this.prev = prev;
8034
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
285 }
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
286
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
287 public Station getPrev() {
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
288 return prev;
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
289 }
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
290
8044
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
291 public void merge(Station other) {
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
292 this.type |= other.type;
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
293 for (int i = 0, N = grainFractions.size(); i < N; ++i) {
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
294 grainFractions.set(i,
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
295 mergeValues(grainFractions.get(i), other.grainFractions.get(i)));
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
296 }
8038
aa622bddfdac Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8036
diff changeset
297 }
aa622bddfdac Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8036
diff changeset
298
8044
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
299 private static final Comparator<Value> ID_CMP = new Comparator<Value>() {
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
300 @Override
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
301 public int compare(Value a, Value b) {
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
302 return a.getLoad().getId() - b.getLoad().getId();
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
303 }
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
304 };
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
305
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
306 private static List<Value> mergeValues(List<Value> a, List<Value> b) {
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
307 if (a == null) return b;
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
308 if (b == null) return a;
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
309 a.addAll(b);
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
310 // re-establish id order.
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
311 Collections.sort(a, ID_CMP);
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
312 return a;
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
313 }
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
314
8193
8d447516b7dd Sum up fractions from stations and previous stations according to respective validity model.
Tom Gottfried <tom@intevation.de>
parents: 8186
diff changeset
315 public Station prevByType(int type) {
8d447516b7dd Sum up fractions from stations and previous stations according to respective validity model.
Tom Gottfried <tom@intevation.de>
parents: 8186
diff changeset
316 for (Station curr = this; curr != null; curr = curr.getPrev()) {
8044
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
317 if (curr.isType(type)) {
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
318 return curr;
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
319 }
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
320 }
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
321 return null;
8038
aa622bddfdac Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8036
diff changeset
322 }
aa622bddfdac Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8036
diff changeset
323
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
324 public void addValue(int grainFraction, Value value) {
8036
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
325 List<Value> values = grainFractions.get(grainFraction);
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
326 if (values == null) {
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
327 values = new ArrayList<Value>();
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
328 grainFractions.set(grainFraction, values);
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
329 }
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
330 values.add(value);
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
331 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
332
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
333 public boolean hasGrainFraction(String grainFraction) {
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
334 return hasGrainFraction(grainFractionIndex(grainFraction));
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
335 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
336
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
337 public boolean hasGrainFraction(int grainFraction) {
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
338 List<Value> values = grainFractions.get(grainFraction);
8036
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
339 return values != null && !values.isEmpty();
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
340 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
341
8047
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
342 public void filterGrainFraction(
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
343 int grainFraction,
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
344 Value.Filter filter,
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
345 Value.Visitor visitor
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
346 ) {
8036
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
347 List<Value> values = grainFractions.get(grainFraction);
8047
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
348 if (values != null && !values.isEmpty()) {
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
349 for (Value value: values) {
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
350 if (filter.accept(value)) {
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
351 visitor.visit(value);
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
352 }
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
353 }
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
354 }
8047
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
355 }
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
356
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
357 public List<Value> filterGrainFraction(int grainFraction, Value.Filter filter) {
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
358 final List<Value> result = new ArrayList<Value>();
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
359 filterGrainFraction(grainFraction, filter, new Value.Visitor() {
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
360 @Override
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
361 public void visit(Value value) {
8036
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
362 result.add(value);
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
363 }
8047
c835f3cf098e Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8044
diff changeset
364 });
8036
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
365 return result;
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
366 }
8034
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
367
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
368 public double findValueByLoadId(int id) {
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
369 for (List<Value> values: grainFractions) {
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
370 double value = findValueByLoadId(values, id);
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
371 if (!Double.isNaN(value)) {
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
372 return value;
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
373 }
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
374 }
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
375 return Double.NaN;
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
376 }
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
377
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
378 private static final double findValueByLoadId(
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
379 List<Value> values,
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
380 int id
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
381 ) {
8036
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
382 if (values == null) {
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
383 return Double.NaN;
17542d100e75 Throw out old visitor model and use grain fraction filters instead. Fixed neighborhood wirinng of measument stations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8035
diff changeset
384 }
8034
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
385 // List is ordered by station id -> binary search.
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
386 int lo = 0, hi = values.size()-1;
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
387 while (lo <= hi) {
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
388 int mid = (lo + hi)/2;
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
389 Value v = values.get(mid);
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
390 int xid = v.getLoad().getId();
8100
786bb4f87e8d Fix binarysearch logic in SedimentLoadData
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8092
diff changeset
391 if (xid > id) hi = mid-1;
786bb4f87e8d Fix binarysearch logic in SedimentLoadData
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8092
diff changeset
392 else if (xid < id) lo = mid+1;
8034
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
393 else return v.getValue();
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
394 }
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
395
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
396 return Double.NaN;
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
397 }
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
398 } // class Station
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
399
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
400
8040
f1500a524b76 Replace station list with a plain array.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8039
diff changeset
401 private Station [] stations;
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
402
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
403 public SedimentLoadData() {
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
404 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
405
8193
8d447516b7dd Sum up fractions from stations and previous stations according to respective validity model.
Tom Gottfried <tom@intevation.de>
parents: 8186
diff changeset
406 public SedimentLoadData(Collection<Station> stations, boolean kmUp) {
8d447516b7dd Sum up fractions from stations and previous stations according to respective validity model.
Tom Gottfried <tom@intevation.de>
parents: 8186
diff changeset
407 setStations(stations, kmUp);
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
408 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
409
8092
7d4be7a6a2b1 Expose sedimentLoad stations
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8058
diff changeset
410 public Station[] getStations() {
7d4be7a6a2b1 Expose sedimentLoad stations
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8058
diff changeset
411 return stations;
7d4be7a6a2b1 Expose sedimentLoad stations
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8058
diff changeset
412 }
7d4be7a6a2b1 Expose sedimentLoad stations
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8058
diff changeset
413
8193
8d447516b7dd Sum up fractions from stations and previous stations according to respective validity model.
Tom Gottfried <tom@intevation.de>
parents: 8186
diff changeset
414 public void setStations(Collection<Station> stations, boolean kmUp) {
8038
aa622bddfdac Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8036
diff changeset
415 TreeMap<Double, Station> same =
aa622bddfdac Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8036
diff changeset
416 new TreeMap<Double, Station>(EpsilonComparator.CMP);
aa622bddfdac Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8036
diff changeset
417
8034
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
418 for (Station station: stations) {
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
419 Double key = station.getStation();
8038
aa622bddfdac Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8036
diff changeset
420 Station st = same.get(key);
aa622bddfdac Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8036
diff changeset
421 if (st == null) {
aa622bddfdac Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8036
diff changeset
422 same.put(key, station);
aa622bddfdac Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8036
diff changeset
423 } else {
8044
86fa217c24d5 Sediment load: Merge measurement stations if they have the same km. The chaining was too complicated to build algorithms on top of it.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8041
diff changeset
424 st.merge(station);
8034
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
425 }
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
426 }
8040
f1500a524b76 Replace station list with a plain array.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8039
diff changeset
427 this.stations = new Station[same.size()];
f1500a524b76 Replace station list with a plain array.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8039
diff changeset
428 int i = 0;
f1500a524b76 Replace station list with a plain array.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8039
diff changeset
429 for (Station station: same.values()) {
f1500a524b76 Replace station list with a plain array.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8039
diff changeset
430 this.stations[i++] = station;
f1500a524b76 Replace station list with a plain array.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8039
diff changeset
431 }
8193
8d447516b7dd Sum up fractions from stations and previous stations according to respective validity model.
Tom Gottfried <tom@intevation.de>
parents: 8186
diff changeset
432 wireNeighbors(kmUp);
8034
b6e7cfcabf2c Wire the neighbors to the measurement stations together. This eases the lookup for same types (suspended or bed load).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8033
diff changeset
433 }
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
434
8193
8d447516b7dd Sum up fractions from stations and previous stations according to respective validity model.
Tom Gottfried <tom@intevation.de>
parents: 8186
diff changeset
435 private void wireNeighbors(boolean kmUp) {
8d447516b7dd Sum up fractions from stations and previous stations according to respective validity model.
Tom Gottfried <tom@intevation.de>
parents: 8186
diff changeset
436 if (kmUp) {
8d447516b7dd Sum up fractions from stations and previous stations according to respective validity model.
Tom Gottfried <tom@intevation.de>
parents: 8186
diff changeset
437 for (int i = stations.length - 1; i > 0; --i) {
8d447516b7dd Sum up fractions from stations and previous stations according to respective validity model.
Tom Gottfried <tom@intevation.de>
parents: 8186
diff changeset
438 stations[i-1].setPrev(stations[i]);
8d447516b7dd Sum up fractions from stations and previous stations according to respective validity model.
Tom Gottfried <tom@intevation.de>
parents: 8186
diff changeset
439 }
8d447516b7dd Sum up fractions from stations and previous stations according to respective validity model.
Tom Gottfried <tom@intevation.de>
parents: 8186
diff changeset
440 }
8d447516b7dd Sum up fractions from stations and previous stations according to respective validity model.
Tom Gottfried <tom@intevation.de>
parents: 8186
diff changeset
441 else {
8d447516b7dd Sum up fractions from stations and previous stations according to respective validity model.
Tom Gottfried <tom@intevation.de>
parents: 8186
diff changeset
442 for (int i = 1; i < stations.length; ++i) {
8d447516b7dd Sum up fractions from stations and previous stations according to respective validity model.
Tom Gottfried <tom@intevation.de>
parents: 8186
diff changeset
443 stations[i].setPrev(stations[i-1]);
8d447516b7dd Sum up fractions from stations and previous stations according to respective validity model.
Tom Gottfried <tom@intevation.de>
parents: 8186
diff changeset
444 }
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
445 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
446 }
8035
f2dc7992b8a3 Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8034
diff changeset
447
f2dc7992b8a3 Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8034
diff changeset
448 private void recursiveFindStations(
f2dc7992b8a3 Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8034
diff changeset
449 double a, double b,
f2dc7992b8a3 Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8034
diff changeset
450 int lo, int hi,
f2dc7992b8a3 Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8034
diff changeset
451 Visitor visitor
f2dc7992b8a3 Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8034
diff changeset
452 ) {
8139
1e8812b996bc Sediment load: Remove simple tail recursive calls from SedimentLoadData.recursiveFindStations(). More carefully this time.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8130
diff changeset
453 while (lo <= hi) {
1e8812b996bc Sediment load: Remove simple tail recursive calls from SedimentLoadData.recursiveFindStations(). More carefully this time.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8130
diff changeset
454 int mid = (lo+hi)/2;
1e8812b996bc Sediment load: Remove simple tail recursive calls from SedimentLoadData.recursiveFindStations(). More carefully this time.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8130
diff changeset
455 Station st = stations[mid];
1e8812b996bc Sediment load: Remove simple tail recursive calls from SedimentLoadData.recursiveFindStations(). More carefully this time.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8130
diff changeset
456 double station = st.getStation();
1e8812b996bc Sediment load: Remove simple tail recursive calls from SedimentLoadData.recursiveFindStations(). More carefully this time.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8130
diff changeset
457 if (station < a) {
1e8812b996bc Sediment load: Remove simple tail recursive calls from SedimentLoadData.recursiveFindStations(). More carefully this time.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8130
diff changeset
458 lo = mid+1;
1e8812b996bc Sediment load: Remove simple tail recursive calls from SedimentLoadData.recursiveFindStations(). More carefully this time.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8130
diff changeset
459 } else if (station > b) {
1e8812b996bc Sediment load: Remove simple tail recursive calls from SedimentLoadData.recursiveFindStations(). More carefully this time.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8130
diff changeset
460 hi = mid-1;
1e8812b996bc Sediment load: Remove simple tail recursive calls from SedimentLoadData.recursiveFindStations(). More carefully this time.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8130
diff changeset
461 } else {
1e8812b996bc Sediment load: Remove simple tail recursive calls from SedimentLoadData.recursiveFindStations(). More carefully this time.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8130
diff changeset
462 recursiveFindStations(a, b, lo, mid-1, visitor);
1e8812b996bc Sediment load: Remove simple tail recursive calls from SedimentLoadData.recursiveFindStations(). More carefully this time.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8130
diff changeset
463 visitor.visit(st);
1e8812b996bc Sediment load: Remove simple tail recursive calls from SedimentLoadData.recursiveFindStations(). More carefully this time.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8130
diff changeset
464 lo = mid+1;
1e8812b996bc Sediment load: Remove simple tail recursive calls from SedimentLoadData.recursiveFindStations(). More carefully this time.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8130
diff changeset
465 }
8035
f2dc7992b8a3 Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8034
diff changeset
466 }
f2dc7992b8a3 Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8034
diff changeset
467 }
f2dc7992b8a3 Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8034
diff changeset
468
8123
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
469 public static final Comparator<Load> LOAD_ID_CMP = new Comparator<Load>() {
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
470 @Override
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
471 public int compare(Load a, Load b) {
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
472 return a.getId() - b.getId();
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
473 }
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
474 };
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
475
8242
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
476 public static final Comparator<Load> LOAD_TI_CMP = new Comparator<Load>() {
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
477 @Override
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
478 public int compare(Load a, Load b) {
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
479 Date a_start = a.getStartTime();
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
480 Date a_stop = a.getStopTime();
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
481 Date b_start = b.getStartTime();
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
482 Date b_stop = b.getStopTime();
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
483 if (a_start == null && b_start == null) {
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
484 return 0;
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
485 } else if (a_start != null) {
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
486 return a_start.compareTo(b_start);
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
487 } else if (a_stop != null) {
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
488 return a_stop.compareTo(b_stop);
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
489 } else {
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
490 return 1;
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
491 }
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
492 }
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
493 };
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
494
8199
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
495 public static final Comparator<Load> LOAD_SQ_TI_CMP = new Comparator<Load>() {
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
496 @Override
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
497 public int compare(Load a, Load b) {
8239
b207eeb66edd (issue1448) Objectify sq_time_interval id.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8237
diff changeset
498 Integer a_id = a.getSQRelationTimeIntervalId();
b207eeb66edd (issue1448) Objectify sq_time_interval id.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8237
diff changeset
499 Integer b_id = b.getSQRelationTimeIntervalId();
b207eeb66edd (issue1448) Objectify sq_time_interval id.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8237
diff changeset
500 if (a_id == null && b_id == null) {
b207eeb66edd (issue1448) Objectify sq_time_interval id.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8237
diff changeset
501 return 0;
b207eeb66edd (issue1448) Objectify sq_time_interval id.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8237
diff changeset
502 }
b207eeb66edd (issue1448) Objectify sq_time_interval id.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8237
diff changeset
503 if (a_id == null) {
b207eeb66edd (issue1448) Objectify sq_time_interval id.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8237
diff changeset
504 return -1;
b207eeb66edd (issue1448) Objectify sq_time_interval id.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8237
diff changeset
505 }
b207eeb66edd (issue1448) Objectify sq_time_interval id.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8237
diff changeset
506 if (b_id == null) {
b207eeb66edd (issue1448) Objectify sq_time_interval id.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8237
diff changeset
507 return 1;
b207eeb66edd (issue1448) Objectify sq_time_interval id.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8237
diff changeset
508 }
b207eeb66edd (issue1448) Objectify sq_time_interval id.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8237
diff changeset
509 return a_id - b_id;
8199
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
510 }
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
511 };
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
512
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
513 /** Find all loads in the range a/b with the according sq_time_interval */
8768
ef0ec2498dd0 issue1841 Only include loads where value != NaN in info service
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8767
diff changeset
514 public Collection<Load> findLoadsWithValue(double a, double b, final Integer sqRelationTimeInterval) {
8239
b207eeb66edd (issue1448) Objectify sq_time_interval id.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8237
diff changeset
515 final TreeSet<Load> loads = new TreeSet<Load>(LOAD_ID_CMP);
8199
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
516
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
517 findStations(a, b, new Visitor() {
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
518 @Override
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
519 public void visit(Station station) {
8768
ef0ec2498dd0 issue1841 Only include loads where value != NaN in info service
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8767
diff changeset
520 station.allLoadsWithValue(loads, sqRelationTimeInterval);
8199
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
521 }
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
522 });
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
523
8242
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
524 return loads;
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
525 }
f8ea1a7ecde6 (issue1448) Fix info service for epoch / periods and off epoch
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8240
diff changeset
526
8199
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
527 /** Get a list of loads with unique sq_time_intervals.
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
528 *
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
529 * This is mainly a convenience function for the SedimentLoadInfoService.
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
530 */
8768
ef0ec2498dd0 issue1841 Only include loads where value != NaN in info service
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8767
diff changeset
531 public Collection<Load> findDistinctSQTimeIntervalNonEpochLoadsWithValue(double a, double b) {
8199
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
532 final TreeSet<Load> loads = new TreeSet<Load>(LOAD_SQ_TI_CMP);
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
533
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
534 findStations(a, b, new Visitor() {
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
535 @Override
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
536 public void visit(Station station) {
8768
ef0ec2498dd0 issue1841 Only include loads where value != NaN in info service
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8767
diff changeset
537 station.allNonEpochLoadsWithValue(loads);
8199
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
538 }
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
539 });
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
540
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
541 return loads;
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
542 }
42ac86ec19c7 (issue1448) Add sq time intervals to sediment load data model.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8193
diff changeset
543
8768
ef0ec2498dd0 issue1841 Only include loads where value != NaN in info service
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8767
diff changeset
544 public Collection<Load> findLoadsWithValue(double a, double b) {
8140
369fbb28f5d0 Added missing generics parameter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8139
diff changeset
545 final TreeSet<Load> loads = new TreeSet<Load>(LOAD_ID_CMP);
8123
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
546
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
547 findStations(a, b, new Visitor() {
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
548 @Override
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
549 public void visit(Station station) {
8768
ef0ec2498dd0 issue1841 Only include loads where value != NaN in info service
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8767
diff changeset
550 station.allLoadsWithValue(loads);
8123
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
551 }
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
552 });
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
553
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
554 return loads;
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
555 }
4a2ef6895557 Sediment load: Fixed findStations() and add findLoads().
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8100
diff changeset
556
8035
f2dc7992b8a3 Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8034
diff changeset
557 public void findStations(double a, double b, Visitor visitor) {
f2dc7992b8a3 Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8034
diff changeset
558 if (a > b) {
f2dc7992b8a3 Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8034
diff changeset
559 double t = a; a = b; b = t;
f2dc7992b8a3 Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8034
diff changeset
560 }
8040
f1500a524b76 Replace station list with a plain array.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8039
diff changeset
561 recursiveFindStations(a, b, 0, stations.length-1, visitor);
8035
f2dc7992b8a3 Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8034
diff changeset
562 }
f2dc7992b8a3 Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8034
diff changeset
563
8038
aa622bddfdac Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8036
diff changeset
564 public List<Station> findStations(double a, double b) {
aa622bddfdac Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8036
diff changeset
565 final List<Station> result = new ArrayList<Station>();
8035
f2dc7992b8a3 Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8034
diff changeset
566 findStations(a, b, new Visitor() {
f2dc7992b8a3 Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8034
diff changeset
567 @Override
8038
aa622bddfdac Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8036
diff changeset
568 public void visit(Station station) {
aa622bddfdac Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8036
diff changeset
569 result.add(station);
8035
f2dc7992b8a3 Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8034
diff changeset
570 }
f2dc7992b8a3 Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8034
diff changeset
571 });
f2dc7992b8a3 Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8034
diff changeset
572 return result;
f2dc7992b8a3 Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8034
diff changeset
573 }
8033
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
574 }
5e3f4b4fcb28 New way to loaded sediment loads from database and cache it. The data structure a way more straight forward. TODO: Implement calculation on this basis.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
575 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org