annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/PorosityFacet.java @ 8587:07c9ac22f611

(issue1755) Generalise BedQuality result handling The bedquality calculation now produces a result for each time period which has BedQualityResultValues for each specific result type. Formally this was split up in density, porosity and diameter classes with some bedload diameter classes mixed in for extra fun. The intent of this commit is to allow more shared code and generic access patterns to the BedQuality results.
author Andre Heinecke <andre.heinecke@intevation.de>
date Wed, 18 Mar 2015 18:42:08 +0100
parents e4606eae8ea5
children 0a5239a1e46e
rev   line source
7846
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
3 *
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
7 */
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
8
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
9 package org.dive4elements.river.artifacts.model.minfo;
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
10
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
11 import org.apache.log4j.Logger;
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
12
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
13 import org.dive4elements.artifactdatabase.state.Facet;
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
14 import org.dive4elements.artifactdatabase.state.StaticFacet;
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
15 import org.dive4elements.artifacts.Artifact;
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
16 import org.dive4elements.artifacts.CallContext;
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
17 import org.dive4elements.artifacts.CallMeta;
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
18 import org.dive4elements.artifacts.common.utils.XMLUtils;
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
19 import org.dive4elements.river.artifacts.D4EArtifact;
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
20 import org.dive4elements.river.artifacts.model.DataFacet;
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
21 import org.dive4elements.river.artifacts.model.FacetTypes;
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
22 import org.dive4elements.river.artifacts.resources.Resources;
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
23 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
24 import org.w3c.dom.Document;
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
25
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
26
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
27 public class PorosityFacet
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
28 extends DataFacet
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
29 implements FacetTypes, StaticFacet
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
30 {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7987
diff changeset
31 private static Logger log = Logger.getLogger(PorosityFacet.class);
7846
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
32
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
33 private static final String NAME = "porosity";
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
34
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
35 public PorosityFacet() {
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
36 }
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
37
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
38 public PorosityFacet(String facetName, String description) {
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
39 super(facetName, description);
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
40 }
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
41
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
42 public PorosityFacet(int idx, String name, String description,
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
43 ComputeType type, String stateId, String hash) {
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
44 super(idx, name, description, type, hash, stateId);
7894
42076d94977e Added metadata to facets.
Raimund Renkert <rrenkert@intevation.de>
parents: 7846
diff changeset
45 this.metaData.put("X", "chart.longitudinal.section.xaxis.label");
42076d94977e Added metadata to facets.
Raimund Renkert <rrenkert@intevation.de>
parents: 7846
diff changeset
46 this.metaData.put("Y", "chart.bedquality.yaxis.label.porosity");
7846
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
47 }
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
48
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
49 public Object getData(Artifact artifact, CallContext context) {
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
50
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
51 D4EArtifact flys = (D4EArtifact) artifact;
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
52 String porosity_id = flys.getDataAsString("porosity_id");
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
53
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
54 Porosity porosity =
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
55 PorosityFactory.getPorosity(Integer.valueOf(porosity_id));
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
56
7987
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents: 7981
diff changeset
57 return porosity.getAsArray();
7846
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
58 }
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
59
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
60 /** Copy deeply. */
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
61 @Override
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
62 public Facet deepCopy() {
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
63 PorosityFacet copy = new PorosityFacet();
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
64 copy.set(this);
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
65 copy.type = type;
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
66 copy.hash = hash;
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
67 copy.stateId = stateId;
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
68 return copy;
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
69 }
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
70
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
71 @Override
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
72 public void setup(Artifact artifact, Document data, CallMeta callMeta) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7987
diff changeset
73 log.debug("setup");
7846
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
74
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7987
diff changeset
75 if (log.isDebugEnabled()) {
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7987
diff changeset
76 log.debug(XMLUtils.toString(data));
7846
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
77 }
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
78
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
79 String code = D4EArtifact.getDatacageIDValue(data);
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
80
7881
f9e3ef5d38d0 Use description from database for i18n (completed revision dc8910e29dd4).
Raimund Renkert <rrenkert@intevation.de>
parents: 7846
diff changeset
81 String[] split = code.split(";");
f9e3ef5d38d0 Use description from database for i18n (completed revision dc8910e29dd4).
Raimund Renkert <rrenkert@intevation.de>
parents: 7846
diff changeset
82 String id = split[0];
f9e3ef5d38d0 Use description from database for i18n (completed revision dc8910e29dd4).
Raimund Renkert <rrenkert@intevation.de>
parents: 7846
diff changeset
83 String desc = "";
f9e3ef5d38d0 Use description from database for i18n (completed revision dc8910e29dd4).
Raimund Renkert <rrenkert@intevation.de>
parents: 7846
diff changeset
84 if (split.length >= 2) {
f9e3ef5d38d0 Use description from database for i18n (completed revision dc8910e29dd4).
Raimund Renkert <rrenkert@intevation.de>
parents: 7846
diff changeset
85 desc = split[1];
f9e3ef5d38d0 Use description from database for i18n (completed revision dc8910e29dd4).
Raimund Renkert <rrenkert@intevation.de>
parents: 7846
diff changeset
86 }
f9e3ef5d38d0 Use description from database for i18n (completed revision dc8910e29dd4).
Raimund Renkert <rrenkert@intevation.de>
parents: 7846
diff changeset
87
7846
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
88 if (code != null) {
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
89 this.name = NAME;
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
90 this.description = Resources.getMsg(
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
91 callMeta,
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
92 "facet.porosity",
7881
f9e3ef5d38d0 Use description from database for i18n (completed revision dc8910e29dd4).
Raimund Renkert <rrenkert@intevation.de>
parents: 7846
diff changeset
93 "Porosity",
f9e3ef5d38d0 Use description from database for i18n (completed revision dc8910e29dd4).
Raimund Renkert <rrenkert@intevation.de>
parents: 7846
diff changeset
94 new Object[] { desc });
7846
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
95 D4EArtifact d4e = (D4EArtifact) artifact;
7881
f9e3ef5d38d0 Use description from database for i18n (completed revision dc8910e29dd4).
Raimund Renkert <rrenkert@intevation.de>
parents: 7846
diff changeset
96 d4e.addStringData("porosity_id", id);
7846
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
97 }
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
98 }
e84726b48484 New Facet, datatype and data factory for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
99 }

http://dive4elements.wald.intevation.org