annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixLongitudinalAvSectorFacet.java @ 9415:9744ce3c3853

Rework of fixanalysis computation and dWt and WQ facets. Got rid of strange remapping and bitshifting code by explicitely saving the column information and using it in the facets. The facets also put the valid station range into their xml-metadata
author gernotbelger
date Thu, 16 Aug 2018 16:27:53 +0200
parents e4606eae8ea5
children 0a5239a1e46e
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: 3610
diff changeset
9 package org.dive4elements.river.artifacts.model.fixings;
3610
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
10
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
11 import org.apache.log4j.Logger;
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
12
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3610
diff changeset
13 import org.dive4elements.artifacts.Artifact;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3610
diff changeset
14 import org.dive4elements.artifacts.CallContext;
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
15 import org.dive4elements.river.artifacts.D4EArtifact;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3610
diff changeset
16 import org.dive4elements.river.artifacts.model.CalculationResult;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3610
diff changeset
17 import org.dive4elements.river.artifacts.model.DataFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3610
diff changeset
18 import org.dive4elements.river.artifacts.model.FacetTypes;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3610
diff changeset
19 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3610
diff changeset
20 import org.dive4elements.river.utils.KMIndex;
3610
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
21
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
22 public class FixLongitudinalAvSectorFacet
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
23 extends DataFacet
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
24 implements FacetTypes {
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
25
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
26 /** House log. */
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
27 private static Logger log =
3610
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
28 Logger.getLogger(FixLongitudinalAvSectorFacet.class);
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
29
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
30 /** Trivial Constructor. */
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
31 public FixLongitudinalAvSectorFacet() {
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
32 }
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
33
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
34
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
35 public FixLongitudinalAvSectorFacet(
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
36 int ndx,
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
37 String name,
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
38 String description)
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
39 {
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
40 super(
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
41 ndx,
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
42 name,
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
43 description,
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
44 ComputeType.ADVANCE,
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
45 null,
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
46 null);
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
47 }
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
48
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
49
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
50 /**
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
51 * Returns the data this facet requires.
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
52 *
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
53 * @param artifact the owner artifact.
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
54 * @param context the CallContext.
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
55 *
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
56 * @return the data as KMIndex.
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
57 */
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
58 @Override
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
59 public Object getData(Artifact artifact, CallContext context) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
60 log.debug("FixLongitudinalAvSectorFacet.getData");
3610
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
61
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
62 if (artifact instanceof D4EArtifact) {
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
63 D4EArtifact flys = (D4EArtifact)artifact;
3610
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
64
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
65 CalculationResult res =
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
66 (CalculationResult) flys.compute(context,
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
67 ComputeType.ADVANCE,
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
68 false);
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
69
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
70 FixAnalysisResult result = (FixAnalysisResult) res.getData();
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
71
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
72 KMIndex<AnalysisPeriod []> kmPeriods = result.getAnalysisPeriods();
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
73 if (kmPeriods == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
74 log.warn("No analysis periods found.");
3610
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
75 return null;
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
76 }
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
77 int periodNdx = index >> 2;
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
78 KMIndex<AnalysisPeriod> resPeriods =
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
79 new KMIndex<AnalysisPeriod>();
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
80 for (KMIndex.Entry<AnalysisPeriod[]> entry: kmPeriods) {
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
81 AnalysisPeriod ap = entry.getValue()[periodNdx];
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
82 resPeriods.add(entry.getKm(), ap);
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
83 }
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
84
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
85 return resPeriods;
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
86 }
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
87 else {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
88 log.warn("Artifact is no instance of D4EArtifact.");
3610
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
89 return null;
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
90 }
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
91 }
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
92
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
93
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
94 /**
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
95 * Create a deep copy of this Facet.
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
96 * @return a deep copy.
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
97 */
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
98 @Override
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
99 public FixLongitudinalAvSectorFacet deepCopy() {
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
100 FixLongitudinalAvSectorFacet copy = new FixLongitudinalAvSectorFacet();
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
101 copy.set(this);
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
102 return copy;
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
103 }
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
104 }
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
105 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org