Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadDataValueFilter.java @ 8587:07c9ac22f611
(issue1755) Generalise BedQuality result handling
The bedquality calculation now produces a result for each time period
which has BedQualityResultValues for each specific result type.
Formally this was split up in density, porosity and diameter classes
with some bedload diameter classes mixed in for extra fun.
The intent of this commit is to allow more shared code and generic
access patterns to the BedQuality results.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Wed, 18 Mar 2015 18:42:08 +0100 |
parents | b207eeb66edd |
children | 5e38e2924c07 |
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 |
8186
a1ceacf15d3a
Removed NASTY package clash. We had too org.dive4elements.river.util packages.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8180
diff
changeset
|
15 import org.dive4elements.river.backend.utils.DateUtil; |
8180
00066d3add94
The existing implementation respects the fact that months are 0-based.
Tom Gottfried <tom@intevation.de>
parents:
8068
diff
changeset
|
16 |
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
|
17 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
|
18 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
|
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 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
|
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 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
|
23 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
24 |
8055
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
25 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
|
26 |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
27 private Filter parent; |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
28 |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
29 public Not(Filter parent) { |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
30 this.parent = parent; |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
31 } |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
32 |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
33 @Override |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
34 public boolean accept(Value value) { |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
35 return !parent.accept(value); |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
36 } |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
37 } // class Not |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
38 |
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
|
39 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
|
40 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
|
41 |
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 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
|
43 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
|
44 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
45 |
8068
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
46 public Composite(Filter filter) { |
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
47 this(); |
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
48 add(filter); |
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
49 } |
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
50 |
8055
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
51 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
|
52 filters.add(filter); |
8055
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
53 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
|
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 } |
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 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
|
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 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
|
60 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
61 |
8068
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
62 public And(Filter filter) { |
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
63 super(filter); |
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
64 } |
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
65 |
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
|
66 @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
|
67 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
|
68 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
|
69 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
|
70 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
|
71 } |
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 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
|
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 } // 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
|
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 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
|
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 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
|
80 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
81 |
8068
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
82 public Or(Composite filter) { |
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
83 super(filter); |
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
84 } |
9ecd6267323b
Sediment load: transform units for official epochs, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8060
diff
changeset
|
85 |
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
|
86 @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
|
87 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
|
88 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
|
89 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
|
90 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
|
91 } |
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 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
|
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 } // 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
|
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 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
|
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 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
|
100 |
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 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
|
102 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
|
103 } |
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 |
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 @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
|
106 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
|
107 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
|
108 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
|
109 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
|
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 } // 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
|
112 |
8238
be3c11bef6e8
(issue1448) Finally use the sq time interval as filter in the calculation.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8186
diff
changeset
|
113 public static final class SQTimeInterval implements Filter { |
be3c11bef6e8
(issue1448) Finally use the sq time interval as filter in the calculation.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8186
diff
changeset
|
114 |
8239
b207eeb66edd
(issue1448) Objectify sq_time_interval id.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8238
diff
changeset
|
115 private Integer sqTiId; |
8238
be3c11bef6e8
(issue1448) Finally use the sq time interval as filter in the calculation.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8186
diff
changeset
|
116 |
8239
b207eeb66edd
(issue1448) Objectify sq_time_interval id.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8238
diff
changeset
|
117 public SQTimeInterval(Integer sqTiId) { |
8238
be3c11bef6e8
(issue1448) Finally use the sq time interval as filter in the calculation.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8186
diff
changeset
|
118 this.sqTiId = sqTiId; |
be3c11bef6e8
(issue1448) Finally use the sq time interval as filter in the calculation.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8186
diff
changeset
|
119 } |
be3c11bef6e8
(issue1448) Finally use the sq time interval as filter in the calculation.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8186
diff
changeset
|
120 |
be3c11bef6e8
(issue1448) Finally use the sq time interval as filter in the calculation.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8186
diff
changeset
|
121 @Override |
be3c11bef6e8
(issue1448) Finally use the sq time interval as filter in the calculation.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8186
diff
changeset
|
122 public boolean accept(Value value) { |
8239
b207eeb66edd
(issue1448) Objectify sq_time_interval id.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8238
diff
changeset
|
123 if (sqTiId == null) { |
8238
be3c11bef6e8
(issue1448) Finally use the sq time interval as filter in the calculation.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8186
diff
changeset
|
124 /* Nothing set, nothing filtered */ |
be3c11bef6e8
(issue1448) Finally use the sq time interval as filter in the calculation.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8186
diff
changeset
|
125 return true; |
be3c11bef6e8
(issue1448) Finally use the sq time interval as filter in the calculation.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8186
diff
changeset
|
126 } |
8239
b207eeb66edd
(issue1448) Objectify sq_time_interval id.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8238
diff
changeset
|
127 if (value.getLoad().getSQRelationTimeIntervalId() == null) { |
8238
be3c11bef6e8
(issue1448) Finally use the sq time interval as filter in the calculation.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8186
diff
changeset
|
128 /* Loads without sqRelationTimeInterval are "Schwebstoffe" and should |
be3c11bef6e8
(issue1448) Finally use the sq time interval as filter in the calculation.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8186
diff
changeset
|
129 * be included. */ |
be3c11bef6e8
(issue1448) Finally use the sq time interval as filter in the calculation.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8186
diff
changeset
|
130 return true; |
be3c11bef6e8
(issue1448) Finally use the sq time interval as filter in the calculation.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8186
diff
changeset
|
131 } |
be3c11bef6e8
(issue1448) Finally use the sq time interval as filter in the calculation.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8186
diff
changeset
|
132 /* All other values should be filtered accordingly. */ |
8239
b207eeb66edd
(issue1448) Objectify sq_time_interval id.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8238
diff
changeset
|
133 return value.getLoad().getSQRelationTimeIntervalId().equals(sqTiId); |
8238
be3c11bef6e8
(issue1448) Finally use the sq time interval as filter in the calculation.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8186
diff
changeset
|
134 } |
be3c11bef6e8
(issue1448) Finally use the sq time interval as filter in the calculation.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8186
diff
changeset
|
135 } // class SQTimeInterval |
be3c11bef6e8
(issue1448) Finally use the sq time interval as filter in the calculation.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8186
diff
changeset
|
136 |
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
|
137 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
|
138 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
139 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
|
140 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
141 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
|
142 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
143 |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
144 @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
|
145 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
|
146 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
|
147 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
148 } // 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
|
149 |
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 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
|
151 |
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 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
|
153 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
|
154 |
8055
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
155 public TimeRangeIntersects(int year) { |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
156 this(year, year); |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
157 } |
cd35b76f1ef8
Sediment load. More off year based calculations.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8053
diff
changeset
|
158 |
8053
72760ca2fc2b
Sediment load: dispatch calculation modes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8037
diff
changeset
|
159 public TimeRangeIntersects(int startYear, int endYear) { |
8180
00066d3add94
The existing implementation respects the fact that months are 0-based.
Tom Gottfried <tom@intevation.de>
parents:
8068
diff
changeset
|
160 this(DateUtil.getStartDateFromYear(Math.min(startYear, endYear)), |
00066d3add94
The existing implementation respects the fact that months are 0-based.
Tom Gottfried <tom@intevation.de>
parents:
8068
diff
changeset
|
161 DateUtil.getEndDateFromYear(Math.max(startYear, endYear))); |
8053
72760ca2fc2b
Sediment load: dispatch calculation modes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8037
diff
changeset
|
162 } |
72760ca2fc2b
Sediment load: dispatch calculation modes.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8037
diff
changeset
|
163 |
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
|
164 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
|
165 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
|
166 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
|
167 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
|
168 } 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
|
169 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
|
170 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
|
171 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
172 } |
8060
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
173 |
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
|
174 @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
|
175 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
|
176 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
|
177 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
|
178 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
|
179 ? 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
|
180 : !(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
|
181 } |
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 } // class TimeRangeIntersects |
8060
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
183 |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
184 public static final class IsOfficial implements Filter { |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
185 |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
186 public static final IsOfficial INSTANCE = new IsOfficial(); |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
187 |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
188 private IsOfficial() { |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
189 } |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
190 |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
191 @Override |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
192 public boolean accept(Value value) { |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
193 return value.getLoad().getKind() == 1; |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
194 } |
25feef564d09
Sediment load: More of official epochs.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8055
diff
changeset
|
195 } // 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
|
196 } |
1de6256c9786
Added filters for loaded sediment data values. Year, Epochs (time ranges), And and Or.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
197 // 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
|
198 |