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

http://dive4elements.wald.intevation.org