Mercurial > dive4elements > river
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 } |