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

http://dive4elements.wald.intevation.org