Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadData.java @ 8038:aa622bddfdac
Directly chain stations with the same km position together. This ease some summations.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Wed, 16 Jul 2014 13:06:09 +0200 |
parents | 17542d100e75 |
children | 3a769d5fb733 |
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; |
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
|
14 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
|
15 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
|
16 import java.util.TreeMap; |
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 |
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
|
18 import org.dive4elements.river.utils.EpsilonComparator; |
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 |
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
|
20 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
|
21 { |
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
|
22 public static final double STATION_EPS = 0.0001; |
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 static final int GF_COARSE = 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
|
25 public static final int GF_FINE_MIDDLE = 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
|
26 public static final int GF_SAND = 2; |
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
|
27 public static final int GF_SUSP_SAND = 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
|
28 public static final int GF_SUSP_SAND_BED = 4; |
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
|
29 public static final int GF_SUSP_SEDIMENT = 5; |
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
|
30 public static final int GF_MAX = 5; |
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
|
31 |
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
|
32 public static final int grainFractionIndex(String name) { |
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
|
33 if ("coarse".equals(name)) return GF_COARSE; |
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
|
34 if ("fine_middle".equals(name)) return GF_FINE_MIDDLE; |
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
|
35 if ("sand".equals(name)) return GF_SAND; |
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
|
36 if ("susp_sand".equals(name)) return GF_SUSP_SAND; |
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
|
37 if ("susp_sand_bed".equals(name)) return GF_SUSP_SAND_BED; |
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
|
38 if ("suspended_sediment".equals(name)) return GF_SUSP_SEDIMENT; |
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
|
39 return -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
|
40 } |
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
|
41 |
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
|
42 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
|
43 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
|
44 } |
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
|
45 |
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
|
46 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
|
47 |
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
|
48 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
|
49 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
|
50 } |
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
|
51 |
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
|
52 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
|
53 |
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
|
54 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
|
55 |
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
|
56 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
|
57 } |
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
|
58 |
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
|
59 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
|
60 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
|
61 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
|
62 } |
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
|
63 |
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
|
64 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
|
65 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
|
66 } |
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
|
67 |
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
|
68 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
|
69 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
|
70 } |
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
|
71 } // 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
|
72 |
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
|
73 |
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
|
74 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
|
75 |
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
|
76 private int 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
|
77 |
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
|
78 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
|
79 |
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
|
80 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
|
81 private Date 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
|
82 |
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
|
83 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
|
84 } |
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
|
85 |
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 public Load(int id, String description, Date startTime, Date 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
|
87 this.id = 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
|
88 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
|
89 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
|
90 this.stopTime = 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
|
91 } |
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
|
92 |
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 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
|
94 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
|
95 } |
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
|
96 |
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
|
97 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
|
98 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
|
99 } |
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
|
100 |
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
|
101 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
|
102 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
|
103 } |
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 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
|
106 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
|
107 } |
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 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
|
110 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
|
111 } |
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 } // class SedimentLoad |
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 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
|
115 |
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 public static final int BED_LOAD = 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
|
117 public static final int SUSPENDED = 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
|
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 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
|
120 |
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 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
|
122 |
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 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
|
124 |
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
|
125 private Station next; |
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
|
126 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
|
127 |
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
|
128 private Station chain; |
aa622bddfdac
Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8036
diff
changeset
|
129 |
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 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
|
131 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
|
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 |
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 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
|
135 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
|
136 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
|
137 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
|
138 } |
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 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
|
140 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
|
141 } |
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
|
142 |
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
|
143 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
|
144 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
|
145 } |
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
|
146 |
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
|
147 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
|
148 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
|
149 } |
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
|
150 |
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
|
151 public void setNext(Station next) { |
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
|
152 this.next = next; |
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
|
153 } |
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
|
154 |
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
|
155 public Station getNext() { |
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
|
156 return next; |
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
|
157 } |
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
|
158 |
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
|
159 public void setPrev(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
|
160 this.prev = next; |
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
|
161 } |
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
|
162 |
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
|
163 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
|
164 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
|
165 } |
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
|
166 |
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
|
167 public Station getNext(boolean isKMUp) { |
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
|
168 return isKMUp ? getNext() : getPrev(); |
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
|
169 } |
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
|
170 |
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
|
171 public Station getPrev(boolean isKMUp) { |
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
|
172 return isKMUp ? getPrev() : getNext(); |
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
|
173 } |
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
|
174 |
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
|
175 public Station nextChain() { |
aa622bddfdac
Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8036
diff
changeset
|
176 return chain; |
aa622bddfdac
Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8036
diff
changeset
|
177 } |
aa622bddfdac
Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8036
diff
changeset
|
178 |
aa622bddfdac
Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8036
diff
changeset
|
179 public void append(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
|
180 station.chain = chain; |
aa622bddfdac
Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8036
diff
changeset
|
181 chain = 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
|
182 } |
aa622bddfdac
Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8036
diff
changeset
|
183 |
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
|
184 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
|
185 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
|
186 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
|
187 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
|
188 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
|
189 } |
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
|
190 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
|
191 } |
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
|
192 |
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 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
|
194 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
|
195 } |
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
|
196 |
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 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
|
198 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
|
199 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
|
200 } |
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
|
201 |
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
|
202 public List<Value> filterGrainFraction(int grainFraction, Value.Filter 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
|
203 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
|
204 if (values == null || values.isEmpty()) { |
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
|
205 return Collections.<Value>emptyList(); |
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
|
206 } |
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
|
207 List<Value> result = new ArrayList<Value>(values.size()); |
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
|
208 for (Value value: 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
|
209 if (filter.accept(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
|
210 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
|
211 } |
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 } |
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
|
213 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
|
214 } |
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
|
215 |
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
|
216 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
|
217 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
|
218 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
|
219 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
|
220 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
|
221 } |
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
|
222 } |
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
|
223 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
|
224 } |
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
|
225 |
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
|
226 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
|
227 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
|
228 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
|
229 ) { |
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
|
230 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
|
231 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
|
232 } |
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
|
233 // 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
|
234 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
|
235 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
|
236 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
|
237 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
|
238 int xid = v.getLoad().getId(); |
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
|
239 if (xid < id) hi = mid-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
|
240 else if (xid > id) lo = mid+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
|
241 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
|
242 } |
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
|
243 |
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
|
244 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
|
245 } |
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
|
246 |
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
|
247 public Station firstOfType(int type) { |
aa622bddfdac
Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8036
diff
changeset
|
248 for (Station curr = this; curr != null; curr = curr.chain) { |
aa622bddfdac
Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8036
diff
changeset
|
249 if (curr.getType() == type) { |
aa622bddfdac
Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8036
diff
changeset
|
250 return curr; |
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
|
251 } |
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
|
252 } |
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
|
253 return 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
|
254 } |
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
|
255 } // 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
|
256 |
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
|
257 |
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
|
258 private List<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
|
259 |
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
|
260 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
|
261 } |
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
|
262 |
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
|
263 public SedimentLoadData(Collection<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
|
264 setStations(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
|
265 } |
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
|
266 |
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
|
267 public void setStations(Collection<Station> stations) { |
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
|
268 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
|
269 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
|
270 |
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
|
271 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
|
272 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
|
273 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
|
274 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
|
275 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
|
276 } else { |
aa622bddfdac
Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8036
diff
changeset
|
277 st.append(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
|
278 } |
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
|
279 } |
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
|
280 this.stations = new ArrayList<Station>(same.values()); |
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
|
281 wireNeighbors(); |
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
|
282 } |
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
|
283 |
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
|
284 private void wireNeighbors() { |
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
|
285 for (int i = 0, N = stations.size(); i < N-1; ++i) { |
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
|
286 for (Station curr = stations.get(i); curr != null; curr = curr.nextChain()) { |
aa622bddfdac
Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8036
diff
changeset
|
287 int type = curr.getType(); |
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
|
288 NEXT: for (int j = i+1; j < N; ++j) { |
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
|
289 Station next = stations.get(j).firstOfType(type); |
aa622bddfdac
Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8036
diff
changeset
|
290 if (next != 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
|
291 curr.setNext(next); |
aa622bddfdac
Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8036
diff
changeset
|
292 next.setPrev(curr); |
aa622bddfdac
Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8036
diff
changeset
|
293 break NEXT; |
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
|
294 } |
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
|
295 } |
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
|
296 } |
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
|
297 } |
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
|
298 } |
8035
f2dc7992b8a3
Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8034
diff
changeset
|
299 |
f2dc7992b8a3
Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8034
diff
changeset
|
300 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
|
301 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
|
302 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
|
303 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
|
304 ) { |
f2dc7992b8a3
Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8034
diff
changeset
|
305 while (lo >= hi) { |
f2dc7992b8a3
Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8034
diff
changeset
|
306 int mid = (lo+hi)/2; |
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
|
307 Station st = stations.get(mid); |
aa622bddfdac
Directly chain stations with the same km position together. This ease some summations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8036
diff
changeset
|
308 double station = st.getStation(); |
8035
f2dc7992b8a3
Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8034
diff
changeset
|
309 if (station < a) { |
f2dc7992b8a3
Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8034
diff
changeset
|
310 hi = mid-1; |
f2dc7992b8a3
Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8034
diff
changeset
|
311 } else if (station > b) { |
f2dc7992b8a3
Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8034
diff
changeset
|
312 lo = mid+1; |
f2dc7992b8a3
Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8034
diff
changeset
|
313 } else { |
f2dc7992b8a3
Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8034
diff
changeset
|
314 recursiveFindStations(a, b, lo, mid-1, 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
|
315 visitor.visit(st); |
8035
f2dc7992b8a3
Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8034
diff
changeset
|
316 lo = mid+1; |
f2dc7992b8a3
Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8034
diff
changeset
|
317 } |
f2dc7992b8a3
Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8034
diff
changeset
|
318 } |
f2dc7992b8a3
Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8034
diff
changeset
|
319 } |
f2dc7992b8a3
Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8034
diff
changeset
|
320 |
f2dc7992b8a3
Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8034
diff
changeset
|
321 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
|
322 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
|
323 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
|
324 } |
f2dc7992b8a3
Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8034
diff
changeset
|
325 recursiveFindStations(a, b, 0, stations.size()-1, visitor); |
f2dc7992b8a3
Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8034
diff
changeset
|
326 } |
f2dc7992b8a3
Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8034
diff
changeset
|
327 |
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
|
328 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
|
329 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
|
330 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
|
331 @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
|
332 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
|
333 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
|
334 } |
f2dc7992b8a3
Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8034
diff
changeset
|
335 }); |
f2dc7992b8a3
Sediment loads from cache are sorted in station order so range filters
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8034
diff
changeset
|
336 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
|
337 } |
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
|
338 } |
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
|
339 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |