Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadDataValueFilter.java @ 8098:09725b65955a
Add new and simplyfied SedimentLoadFacet
The SedimentLoadFacet is intended to work with the Measurement stations.
It uses the same mechanismn to access the Mesurement station values
as the calculation does.
SedimentLoadLS values need a different facet that will come soon.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Fri, 15 Aug 2014 18:27:19 +0200 |
parents | 9ecd6267323b |
children | 00066d3add94 |
rev | line source |
---|---|
8037
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2014 by Bundesanstalt für Gewässerkunde |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
3 * |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
7 */ |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
8 package org.dive4elements.river.artifacts.model.minfo; |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
9 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
10 import java.util.ArrayList; |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
11 import java.util.Calendar; |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
12 import java.util.Date; |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
13 import java.util.List; |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
14 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
15 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadData.Value; |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
16 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadData.Value.Filter; |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
17 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
18 public final class SedimentLoadDataValueFilter { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
19 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
20 private SedimentLoadDataValueFilter() { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
21 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
22 |
8055
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
23 public static final class Not implements Filter { |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
24 |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
25 private Filter parent; |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
26 |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
27 public Not(Filter parent) { |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
28 this.parent = parent; |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
29 } |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
30 |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
31 @Override |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
32 public boolean accept(Value value) { |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
33 return !parent.accept(value); |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
34 } |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
35 } // class Not |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
36 |
8037
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
37 public static abstract class Composite implements Filter { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
38 protected List<Filter> filters; |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
39 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
40 public Composite() { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
41 filters = new ArrayList<Filter>(); |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
42 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
43 |
8068
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
44 public Composite(Filter filter) { |
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
45 this(); |
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
46 add(filter); |
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
47 } |
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
48 |
8055
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
49 public Composite add(Filter filter) { |
8037
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
50 filters.add(filter); |
8055
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
51 return this; |
8037
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
52 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
53 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
54 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
55 public static final class And extends Composite { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
56 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
57 public And() { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
58 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
59 |
8068
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
60 public And(Filter filter) { |
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
61 super(filter); |
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
62 } |
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
63 |
8037
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
64 @Override |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
65 public boolean accept(Value value) { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
66 for (Filter filter: filters) { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
67 if (!filter.accept(value)) { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
68 return false; |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
69 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
70 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
71 return true; |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
72 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
73 } // class And |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
74 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
75 public static final class Or extends Composite { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
76 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
77 public Or() { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
78 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
79 |
8068
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
80 public Or(Composite filter) { |
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
81 super(filter); |
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
82 } |
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
83 |
8037
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
84 @Override |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
85 public boolean accept(Value value) { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
86 for (Filter filter: filters) { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
87 if (filter.accept(value)) { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
88 return true; |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
89 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
90 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
91 return false; |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
92 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
93 } // class Or |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
94 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
95 public static final class Year implements Filter { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
96 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
97 private int year; |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
98 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
99 public Year(int year) { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
100 this.year = year; |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
101 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
102 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
103 @Override |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
104 public boolean accept(Value value) { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
105 Calendar cal = Calendar.getInstance(); |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
106 cal.setTime(value.getLoad().getStartTime()); |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
107 return cal.get(Calendar.YEAR) == year; |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
108 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
109 } // class Year |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
110 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
111 public static final class IsEpoch implements Filter { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
112 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
113 public static final IsEpoch INSTANCE = new IsEpoch(); |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
114 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
115 private IsEpoch() { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
116 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
117 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
118 @Override |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
119 public boolean accept(Value value) { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
120 return value.getLoad().isEpoch(); |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
121 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
122 } // class Year |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
123 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
124 public static final class TimeRangeIntersects implements Filter { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
125 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
126 private Date a; |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
127 private Date b; |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
128 |
8055
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
129 public TimeRangeIntersects(int year) { |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
130 this(year, year); |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
131 } |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
132 |
8053
72760ca2fc2b
Sediment load: dispatch calculation modes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8037
diff
changeset
|
133 public TimeRangeIntersects(int startYear, int endYear) { |
72760ca2fc2b
Sediment load: dispatch calculation modes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8037
diff
changeset
|
134 this(firstJan(Math.min(startYear, endYear)), |
72760ca2fc2b
Sediment load: dispatch calculation modes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8037
diff
changeset
|
135 lastDec(Math.max(startYear, endYear))); |
72760ca2fc2b
Sediment load: dispatch calculation modes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8037
diff
changeset
|
136 } |
72760ca2fc2b
Sediment load: dispatch calculation modes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8037
diff
changeset
|
137 |
72760ca2fc2b
Sediment load: dispatch calculation modes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8037
diff
changeset
|
138 private static Date firstJan(int year) { |
72760ca2fc2b
Sediment load: dispatch calculation modes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8037
diff
changeset
|
139 Calendar cal = Calendar.getInstance(); |
72760ca2fc2b
Sediment load: dispatch calculation modes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8037
diff
changeset
|
140 cal.set(year, 1, 1, 0, 0, 0); |
72760ca2fc2b
Sediment load: dispatch calculation modes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8037
diff
changeset
|
141 return cal.getTime(); |
72760ca2fc2b
Sediment load: dispatch calculation modes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8037
diff
changeset
|
142 } |
72760ca2fc2b
Sediment load: dispatch calculation modes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8037
diff
changeset
|
143 |
72760ca2fc2b
Sediment load: dispatch calculation modes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8037
diff
changeset
|
144 private static Date lastDec(int year) { |
72760ca2fc2b
Sediment load: dispatch calculation modes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8037
diff
changeset
|
145 Calendar cal = Calendar.getInstance(); |
72760ca2fc2b
Sediment load: dispatch calculation modes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8037
diff
changeset
|
146 cal.set(year, 12, 31, 23, 59, 59); |
72760ca2fc2b
Sediment load: dispatch calculation modes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8037
diff
changeset
|
147 return cal.getTime(); |
72760ca2fc2b
Sediment load: dispatch calculation modes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8037
diff
changeset
|
148 } |
72760ca2fc2b
Sediment load: dispatch calculation modes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8037
diff
changeset
|
149 |
8037
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
150 public TimeRangeIntersects(Date a, Date b) { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
151 if (a.after(b)) { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
152 this.b = a; |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
153 this.a = b; |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
154 } else { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
155 this.a = a; |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
156 this.b = b; |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
157 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
158 } |
8060
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
159 |
8037
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
160 @Override |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
161 public boolean accept(Value value) { |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
162 Date c = value.getLoad().getStartTime(); |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
163 Date d = value.getLoad().getStopTime(); |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
164 return d == null |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
165 ? c.compareTo(a) >= 0 && c.compareTo(b) <= 0 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
166 : !(a.after(d) || c.after(b)); |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
167 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
168 } // class TimeRangeIntersects |
8060
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
169 |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
170 public static final class IsOfficial implements Filter { |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
171 |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
172 public static final IsOfficial INSTANCE = new IsOfficial(); |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
173 |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
174 private IsOfficial() { |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
175 } |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
176 |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
177 @Override |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
178 public boolean accept(Value value) { |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
179 return value.getLoad().getKind() == 1; |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
180 } |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
181 } // class IsOfficial |
8037
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
182 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
183 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
184 |