Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedDiffYearFilterFacet.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 | af13ceeba52a |
children | 8c169743f4d0 |
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:
4672
diff
changeset
|
9 package org.dive4elements.river.artifacts.model.minfo; |
4672
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
10 |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
11 import org.apache.log4j.Logger; |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
12 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4672
diff
changeset
|
13 import org.dive4elements.artifactdatabase.state.Facet; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4672
diff
changeset
|
14 import org.dive4elements.artifacts.Artifact; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4672
diff
changeset
|
15 import org.dive4elements.artifacts.CallContext; |
5867
59ff03ff48f1
River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5866
diff
changeset
|
16 import org.dive4elements.river.artifacts.D4EArtifact; |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4672
diff
changeset
|
17 import org.dive4elements.river.artifacts.access.RiverAccess; |
5866
9a6741ccf6d4
FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
18 import org.dive4elements.river.artifacts.context.RiverContext; |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4672
diff
changeset
|
19 import org.dive4elements.river.artifacts.model.CalculationResult; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4672
diff
changeset
|
20 import org.dive4elements.river.artifacts.model.DataFacet; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4672
diff
changeset
|
21 import org.dive4elements.river.artifacts.math.MovingAverage; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4672
diff
changeset
|
22 import org.dive4elements.river.artifacts.model.ZoomScale; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4672
diff
changeset
|
23 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; |
4672
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
24 |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
25 |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
26 public class BedDiffYearFilterFacet |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
27 extends DataFacet |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
28 { |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
29 private static Logger logger = Logger.getLogger(BedDiffYearFilterFacet.class); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
30 |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
31 public BedDiffYearFilterFacet() { |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
32 } |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
33 |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
34 public BedDiffYearFilterFacet(int idx, String name, String description, |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
35 ComputeType type, String stateId, String hash) { |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
36 super(idx, name, description, type, hash, stateId); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
37 } |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
38 |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
39 public Object getData(Artifact artifact, CallContext context) { |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
40 logger.debug("Get data for bed density at index: " + index); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
41 |
5867
59ff03ff48f1
River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5866
diff
changeset
|
42 D4EArtifact flys = (D4EArtifact) artifact; |
4672
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
43 |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
44 CalculationResult res = (CalculationResult) flys.compute(context, hash, |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
45 stateId, type, false); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
46 |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
47 BedDiffYearResult[] data = |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
48 (BedDiffYearResult[]) res.getData(); // TODO CAST TO SPECIFIC CLASS |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
49 Double start = (Double)context.getContextValue("startkm"); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
50 Double end = (Double)context.getContextValue("endkm"); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
51 if(start != null && end != null) { |
5866
9a6741ccf6d4
FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
52 RiverContext fc = (RiverContext)context.globalContext(); |
4672
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
53 ZoomScale scales = (ZoomScale)fc.get("zoomscale"); |
5867
59ff03ff48f1
River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5866
diff
changeset
|
54 RiverAccess access = new RiverAccess((D4EArtifact)artifact); |
4672
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
55 String river = access.getRiver(); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
56 |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
57 double radius = scales.getRadius(river, start, end); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
58 BedDiffYearResult oldData = data[index]; |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
59 BedDiffYearResult newData = new BedDiffYearResult(); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
60 newData.setStart(oldData.getStart()); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
61 newData.setEnd(oldData.getEnd()); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
62 double[][] diffs = MovingAverage.weighted(oldData.getDifferencesData(), radius); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
63 double[][] heights1 = MovingAverage.weighted(oldData.getHeights1Data(), radius); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
64 double[][] heights2 = MovingAverage.weighted(oldData.getHeights2Data(), radius); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
65 double[][] morph = oldData.getMorphWidthData(); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
66 double[][] year = MovingAverage.weighted(oldData.getHeightPerYearData(), radius); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
67 for(int j = 0; j < diffs[0].length; j++) { |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
68 newData.addKm(diffs[0][j]); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
69 newData.addBedHeights(year[1][j]); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
70 newData.addMorphWidth(morph[1][j]); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
71 newData.addDifference(diffs[1][j]); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
72 newData.addHeight1(heights1[1][j]); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
73 newData.addHeight2(heights2[1][j]); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
74 } |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
75 return newData; |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
76 } |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
77 return data != null && data.length > index ? data[index] : null; |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
78 } |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
79 |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
80 /** Copy deeply. */ |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
81 @Override |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
82 public Facet deepCopy() { |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
83 BedDiffYearFilterFacet copy = new BedDiffYearFilterFacet(); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
84 copy.set(this); |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
85 copy.type = type; |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
86 copy.hash = hash; |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
87 copy.stateId = stateId; |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
88 return copy; |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
89 } |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
90 } |
12e3da5724e6
Added new facets for filtered bed height diffs to have filtered and raw data.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
91 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |