annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedDensitySubFacet.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 98ca61cb58fb
children e4606eae8ea5
rev   line source
7987
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
3 *
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
7 */
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
8
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
9 package org.dive4elements.river.artifacts.model.minfo;
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
10
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
11 import org.apache.log4j.Logger;
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
12
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
13 import org.dive4elements.artifactdatabase.state.Facet;
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
14 import org.dive4elements.artifacts.Artifact;
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
15 import org.dive4elements.artifacts.CallContext;
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
16 import org.dive4elements.river.artifacts.D4EArtifact;
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
17 import org.dive4elements.river.artifacts.model.CalculationResult;
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
18 import org.dive4elements.river.artifacts.model.DataFacet;
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
19 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
20
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
21
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
22 /**
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
23 * Facet for serving bed density data.
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
24 *
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
25 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
26 */
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
27 public class BedDensitySubFacet extends DataFacet {
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
28
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
29 private static final long serialVersionUID = 1L;
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
30
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
31 private static Logger logger = Logger.getLogger(BedDensitySubFacet.class);
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
32
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
33 public BedDensitySubFacet() {
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
34 }
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
35
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
36 public BedDensitySubFacet(int idx, String name, String description,
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
37 ComputeType type, String stateId, String hash) {
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
38 super(idx, name, description, type, hash, stateId);
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
39 this.metaData.put("X", "chart.longitudinal.section.xaxis.label");
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
40 this.metaData.put("Y", "chart.bedquality.yaxis.label.density");
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
41 }
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
42
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
43 public Object getData(Artifact artifact, CallContext context) {
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
44 logger.debug("Get data for bed density at index: " + index);
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
45
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
46 D4EArtifact flys = (D4EArtifact) artifact;
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
47
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
48 CalculationResult res = (CalculationResult) flys.compute(context, hash,
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
49 stateId, type, false);
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
50
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
51 int ndx = index >> 8;
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
52 BedParametersResult[] data =
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
53 ((BedQualityResult[]) res.getData())[ndx].getParameters(); // TODO CAST TO SPECIFIC CLASS
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
54
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
55 int ndy = index & 255;
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
56 if (data != null && data.length > ndy) {
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
57 BedParametersResult result = data[ndy];
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
58 return result.getDensitySubData();
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
59 }
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
60 return null;
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
61 }
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
62
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
63 /** Copy deeply. */
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
64 @Override
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
65 public Facet deepCopy() {
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
66 BedDensitySubFacet copy = new BedDensitySubFacet();
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
67 copy.set(this);
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
68 copy.type = type;
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
69 copy.hash = hash;
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
70 copy.stateId = stateId;
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
71 return copy;
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
72 }
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
73 }
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
74 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org