Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadFacet.java @ 6665:b7945db8a43b
issue1413: Only show unknown sediment loads of selected unit type.
Therefore, adjusted the factory to take the units name. Unfortunately,
names in db do not match values of data items. Thus do manual replacing.
In Facet and Calculate, take the chosen unit via access and to the string
replacement.
In Facet, do not transform data (we assume it comes in unit as labeled in
the db), and removed the possibility of m3/a-data of unknown yields in a
t/a diagram and vice versa.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Thu, 25 Jul 2013 15:08:13 +0200 |
parents | c74261e05a62 |
children | 0c593745bcd6 |
rev | line source |
---|---|
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
2 * Software engineering by Intevation GmbH |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
3 * |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5867
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5867
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
7 */ |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
8 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5778
diff
changeset
|
9 package org.dive4elements.river.artifacts.model.minfo; |
5778
4a1bd43e7aa6
Removed obsolete imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5744
diff
changeset
|
10 |
6382
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
11 import gnu.trove.TDoubleArrayList; |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
12 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5778
diff
changeset
|
13 import org.dive4elements.artifactdatabase.state.Facet; |
5778
4a1bd43e7aa6
Removed obsolete imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5744
diff
changeset
|
14 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5778
diff
changeset
|
15 import org.dive4elements.artifacts.Artifact; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5778
diff
changeset
|
16 import org.dive4elements.artifacts.CallContext; |
5778
4a1bd43e7aa6
Removed obsolete imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5744
diff
changeset
|
17 |
5867
59ff03ff48f1
River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5865
diff
changeset
|
18 import org.dive4elements.river.artifacts.D4EArtifact; |
5778
4a1bd43e7aa6
Removed obsolete imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5744
diff
changeset
|
19 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5778
diff
changeset
|
20 import org.dive4elements.river.artifacts.model.CalculationResult; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5778
diff
changeset
|
21 import org.dive4elements.river.artifacts.model.DataFacet; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5778
diff
changeset
|
22 import org.dive4elements.river.artifacts.model.FacetTypes; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5778
diff
changeset
|
23 |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5778
diff
changeset
|
24 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5778
diff
changeset
|
25 |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5778
diff
changeset
|
26 import org.dive4elements.river.model.MeasurementStation; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5778
diff
changeset
|
27 |
5865
73da40528cf2
River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
28 import org.dive4elements.river.utils.RiverUtils; |
4372
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
29 |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
30 import java.util.ArrayList; |
5653
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
31 import java.util.Collections; |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
32 import java.util.List; |
5653
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
33 import java.util.Map; |
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
34 import java.util.TreeMap; |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
35 |
5778
4a1bd43e7aa6
Removed obsolete imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5744
diff
changeset
|
36 import org.apache.log4j.Logger; |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
37 |
4372
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
38 |
5647
ddb2a4e982b8
Doc and cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5645
diff
changeset
|
39 /** Facet to access various sediment loads. */ |
4372
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
40 public class SedimentLoadFacet |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
41 extends DataFacet |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
42 { |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
43 /** Very own logger. */ |
4372
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
44 private static Logger logger = Logger.getLogger(SedimentLoadFacet.class); |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
45 |
5647
ddb2a4e982b8
Doc and cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5645
diff
changeset
|
46 /** Used as tolerance value when fetching measurement stations. */ |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
47 private static double EPSILON = 1e-5; |
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
48 |
5647
ddb2a4e982b8
Doc and cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5645
diff
changeset
|
49 |
4372
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
50 public SedimentLoadFacet() { |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
51 } |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
52 |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
53 public SedimentLoadFacet(int idx, String name, String description, |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
54 ComputeType type, String stateId, String hash) { |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
55 super(idx, name, description, type, hash, stateId); |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
56 } |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
57 |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
58 public Object getData(Artifact artifact, CallContext context) { |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
59 logger.debug("Get data for sediment load at index: " + index); |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
60 |
5867
59ff03ff48f1
River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5865
diff
changeset
|
61 D4EArtifact flys = (D4EArtifact) artifact; |
4372
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
62 |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
63 CalculationResult res = (CalculationResult) flys.compute(context, hash, |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
64 stateId, type, false); |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
65 |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
66 Object[] data = |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
67 (SedimentLoadResult[]) res.getData(); // TODO CAST TO SPECIFIC CLASS |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
68 |
5865
73da40528cf2
River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
69 List<MeasurementStation> allStations = RiverUtils.getRiver(flys).getMeasurementStations(); |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
70 SedimentLoadResult result = data != null && data.length > index ? (SedimentLoadResult)data[index] : null; |
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
71 if (result == null) { |
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
72 return null; |
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
73 } |
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
74 |
6382
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
75 // These complicated calculations were necessary because |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
76 // SedimentLoad/Fraction did not contain the ranges of the given |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
77 // values. Since this changed, the code is somewhat obsolete, but stable. |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
78 // For an example of easier calculation, see the "total" part below. |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
79 |
5653
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
80 List<Double> sortedStarts = new ArrayList<Double>(); |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
81 // Filter stations according to type. |
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
82 List<MeasurementStation> stations = new ArrayList<MeasurementStation>(); |
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
83 for (MeasurementStation station: allStations) { |
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
84 if (station.getRange() == null || station.getMeasurementType() == null) { |
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
85 continue; |
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
86 } |
6412
c74261e05a62
issue1235: revert some changes, use correct Schwebstoff/Geschiebe-measurement-stations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6382
diff
changeset
|
87 if (this.getName().contains("susp_sediment") |
c74261e05a62
issue1235: revert some changes, use correct Schwebstoff/Geschiebe-measurement-stations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6382
diff
changeset
|
88 && station.getMeasurementType().equals("Schwebstoff")) { |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
89 stations.add(station); |
5653
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
90 sortedStarts.add(station.getStation()); |
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
91 } |
6412
c74261e05a62
issue1235: revert some changes, use correct Schwebstoff/Geschiebe-measurement-stations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6382
diff
changeset
|
92 else if (!this.getName().contains("susp_sediment") |
c74261e05a62
issue1235: revert some changes, use correct Schwebstoff/Geschiebe-measurement-stations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6382
diff
changeset
|
93 && station.getMeasurementType().equals("Geschiebe")) { |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
94 stations.add(station); |
5653
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
95 sortedStarts.add(station.getStation()); |
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
96 } |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
97 } |
5653
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
98 Collections.sort(sortedStarts); |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
99 |
6382
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
100 // Handle sediment load differently, as it respects already |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
101 // the ranges that were added to SedimentLoad/Fraction. |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
102 if (getName().equals(FacetTypes.SEDIMENT_LOAD_TOTAL)) { |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
103 SedimentLoad load = result.getLoad(); |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
104 TDoubleArrayList xPos = new TDoubleArrayList(); |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
105 TDoubleArrayList yPos = new TDoubleArrayList(); |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
106 double lastX = -1d; |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
107 for (double km: load.getKms()) { |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
108 SedimentLoadFraction fraction = load.getFraction(km); |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
109 if (fraction.getTotal() != 0) { |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
110 if (Math.abs(lastX-km) >= EPSILON) { |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
111 xPos.add(Double.NaN); |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
112 yPos.add(Double.NaN); |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
113 } |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
114 xPos.add(km); |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
115 yPos.add(fraction.getTotal()); |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
116 xPos.add(fraction.getTotalRange().getEnd()); |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
117 yPos.add(fraction.getTotal()); |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
118 lastX = fraction.getTotalRange().getEnd(); |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
119 } |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
120 } |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
121 return new double[][] {xPos.toNativeArray(), yPos.toNativeArray()}; |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
122 } |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
123 |
43ef4943e0c2
SedimentLoadFacet: Now that we have total load values with correct ranges in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6343
diff
changeset
|
124 // Access data according to type (except total - see above). |
5648
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
125 double[][] sd = getLoadData(result); |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
126 |
5653
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
127 // Sort by km. |
6340
fbe2d4c2b2dd
In prep for 1235: Renamed variables for improved readability.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5994
diff
changeset
|
128 TreeMap<Double, Double> sortedKmLoad = new TreeMap<Double,Double>(); |
5653
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
129 |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
130 double[] km = sd[0]; |
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
131 double[] load = sd[1]; |
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
132 |
6342
b8cd8e2d0c35
SedimentLoadFacet, issue1235: Ignore values not measured at measurement stations
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6341
diff
changeset
|
133 // Build map of km->load, but directly exclude the ones which do |
b8cd8e2d0c35
SedimentLoadFacet, issue1235: Ignore values not measured at measurement stations
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6341
diff
changeset
|
134 // not match against a measurements station ranges start. |
5653
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
135 for (int i = 0 ; i < km.length; i++) { |
6342
b8cd8e2d0c35
SedimentLoadFacet, issue1235: Ignore values not measured at measurement stations
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6341
diff
changeset
|
136 for (MeasurementStation station: stations) { |
b8cd8e2d0c35
SedimentLoadFacet, issue1235: Ignore values not measured at measurement stations
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6341
diff
changeset
|
137 if (Math.abs(station.getStation() - km[i]) <= EPSILON) { |
b8cd8e2d0c35
SedimentLoadFacet, issue1235: Ignore values not measured at measurement stations
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6341
diff
changeset
|
138 sortedKmLoad.put(km[i], load[i]); |
b8cd8e2d0c35
SedimentLoadFacet, issue1235: Ignore values not measured at measurement stations
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6341
diff
changeset
|
139 continue; |
b8cd8e2d0c35
SedimentLoadFacet, issue1235: Ignore values not measured at measurement stations
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6341
diff
changeset
|
140 } |
b8cd8e2d0c35
SedimentLoadFacet, issue1235: Ignore values not measured at measurement stations
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6341
diff
changeset
|
141 } |
5653
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
142 } |
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
143 |
6341
3ec08ff0f497
Comment.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6340
diff
changeset
|
144 // [0] -> x, [1] -> y |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
145 double[][] values = new double[2][]; |
6342
b8cd8e2d0c35
SedimentLoadFacet, issue1235: Ignore values not measured at measurement stations
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6341
diff
changeset
|
146 values[0] = new double[sortedKmLoad.size()*3]; |
b8cd8e2d0c35
SedimentLoadFacet, issue1235: Ignore values not measured at measurement stations
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6341
diff
changeset
|
147 values[1] = new double[sortedKmLoad.size()*3]; |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
148 |
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
149 // Find station via its station (km). |
5653
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
150 // TODO use a binarySearch instead of linear absdiff approach |
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
151 int i = 0; |
6340
fbe2d4c2b2dd
In prep for 1235: Renamed variables for improved readability.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5994
diff
changeset
|
152 for (Map.Entry<Double, Double> kmLoad: sortedKmLoad.entrySet()) { |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
153 boolean matchFound = false; |
6343
588e99129883
issue1235: Values are valid until next measurements station range start.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6342
diff
changeset
|
154 for (int k = 0; k < stations.size(); k++) { |
588e99129883
issue1235: Values are valid until next measurements station range start.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6342
diff
changeset
|
155 MeasurementStation station = stations.get(k); |
588e99129883
issue1235: Values are valid until next measurements station range start.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6342
diff
changeset
|
156 if (Math.abs(station.getStation() - kmLoad.getKey()) < EPSILON) { |
588e99129883
issue1235: Values are valid until next measurements station range start.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6342
diff
changeset
|
157 // Value has been taken at measurement station. |
588e99129883
issue1235: Values are valid until next measurements station range start.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6342
diff
changeset
|
158 values[0][i*3] = station.getRange().getA().doubleValue() + EPSILON; |
588e99129883
issue1235: Values are valid until next measurements station range start.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6342
diff
changeset
|
159 values[1][i*3] = kmLoad.getValue(); |
588e99129883
issue1235: Values are valid until next measurements station range start.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6342
diff
changeset
|
160 double endValue = 0d; |
588e99129883
issue1235: Values are valid until next measurements station range start.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6342
diff
changeset
|
161 // Valid until next measurements stations begin of range, |
588e99129883
issue1235: Values are valid until next measurements station range start.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6342
diff
changeset
|
162 // or end of current range if last value. |
588e99129883
issue1235: Values are valid until next measurements station range start.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6342
diff
changeset
|
163 if (k+2 <= stations.size()) { |
588e99129883
issue1235: Values are valid until next measurements station range start.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6342
diff
changeset
|
164 endValue = stations.get(k+1).getRange().getA().doubleValue(); |
588e99129883
issue1235: Values are valid until next measurements station range start.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6342
diff
changeset
|
165 } |
588e99129883
issue1235: Values are valid until next measurements station range start.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6342
diff
changeset
|
166 else { |
588e99129883
issue1235: Values are valid until next measurements station range start.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6342
diff
changeset
|
167 endValue = station.getRange().getB().doubleValue(); |
588e99129883
issue1235: Values are valid until next measurements station range start.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6342
diff
changeset
|
168 } |
588e99129883
issue1235: Values are valid until next measurements station range start.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6342
diff
changeset
|
169 values[0][i*3+1] = endValue; |
6340
fbe2d4c2b2dd
In prep for 1235: Renamed variables for improved readability.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5994
diff
changeset
|
170 values[1][i*3+1] = kmLoad.getValue(); |
6343
588e99129883
issue1235: Values are valid until next measurements station range start.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6342
diff
changeset
|
171 values[0][i*3+2] = endValue; |
6340
fbe2d4c2b2dd
In prep for 1235: Renamed variables for improved readability.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5994
diff
changeset
|
172 values[1][i*3+2] = kmLoad.getValue(); |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
173 matchFound = true; |
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
174 } |
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
175 } |
5653
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
176 // Store points without match for later assessment. |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
177 if (!matchFound) { |
6340
fbe2d4c2b2dd
In prep for 1235: Renamed variables for improved readability.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5994
diff
changeset
|
178 logger.warn("measurement without station ("+kmLoad.getKey()+")!"); |
5653
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
179 } |
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
180 i++; |
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
181 } |
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
182 |
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
183 for (int x = 0; x < values[0].length-1; x++) { |
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
184 // Introduce gaps where no data in measurement station. |
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
185 if (Math.abs(values[0][x+1] - values[0][x]) > 3*EPSILON |
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
186 && values[1][x+1] != values[1][x]) { |
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
187 values[0][x] = Double.NaN; |
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
188 values[1][x] = Double.NaN; |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
189 } |
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
190 } |
5653
5231e6b849ce
issue1077: Handle overlapping measurement station ranges, refactored Generator,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5648
diff
changeset
|
191 |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
192 return values; |
4372
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
193 } |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
194 |
5645
696d710470f5
flys/issue1077: Show loads as step line, therefore transform data in
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4372
diff
changeset
|
195 |
5648
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
196 /** Get data according to type of facet. */ |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
197 private double[][] getLoadData(SedimentLoadResult result) { |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
198 if (getName().equals(FacetTypes.SEDIMENT_LOAD_SAND)) |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
199 return result.getSandData(); |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
200 else if (getName().equals(FacetTypes.SEDIMENT_LOAD_COARSE)) |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
201 return result.getCoarseData(); |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
202 else if (getName().equals(FacetTypes.SEDIMENT_LOAD_FINEMIDDLE)) |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
203 return result.getFineMiddleData(); |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
204 else if (getName().equals(FacetTypes.SEDIMENT_LOAD_SUSP_SAND)) |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
205 return result.getSuspSandData(); |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
206 else if (getName().equals(FacetTypes.SEDIMENT_LOAD_SUSP_SAND_BED)) |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
207 return result.getSuspSandBedData(); |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
208 else if (getName().equals(FacetTypes.SEDIMENT_LOAD_SUSP_SEDIMENT)) |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
209 return result.getSuspSedimentData(); |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
210 else if (getName().equals(FacetTypes.SEDIMENT_LOAD_TOTAL_LOAD)) |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
211 return result.getTotalLoadData(); |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
212 else if (getName().equals(FacetTypes.SEDIMENT_LOAD_TOTAL)) |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
213 return result.getTotalData(); |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
214 else { |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
215 logger.error("SedimentLoadFacet " + getName() + " cannot determine data type."); |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
216 return null; |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
217 } |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
218 } |
4feda81c38bc
SedimentLoadFacet: Minor refactor.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5647
diff
changeset
|
219 |
4372
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
220 /** Copy deeply. */ |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
221 @Override |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
222 public Facet deepCopy() { |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
223 SedimentLoadFacet copy = new SedimentLoadFacet(); |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
224 copy.set(this); |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
225 copy.type = type; |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
226 copy.hash = hash; |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
227 copy.stateId = stateId; |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
228 return copy; |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
229 } |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
230 } |
19772b414d46
New facet and result set for sediment load.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
231 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |