annotate artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/predefinedchannel/PredefinedChannelArtifact.java @ 9506:8b7bf26b8782

Predefined artifact for standard vegetation zones. Some minor adaptions.
author gernotbelger
date Fri, 28 Sep 2018 13:44:12 +0200
parents 189cc8ededbd
children
rev   line source
9112
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
2 * Software engineering by
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
5 *
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
9 */
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
10
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
11 package org.dive4elements.river.artifacts.sinfo.predefinedchannel;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
12
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
13 import java.util.ArrayList;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
14 import java.util.List;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
15
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
16 import org.apache.log4j.Logger;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
17 import org.dive4elements.artifactdatabase.state.DefaultOutput;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
18 import org.dive4elements.artifactdatabase.state.Facet;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
19 import org.dive4elements.artifactdatabase.state.FacetActivity;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
20 import org.dive4elements.artifacts.Artifact;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
21 import org.dive4elements.artifacts.ArtifactFactory;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
22 import org.dive4elements.artifacts.CallMeta;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
23 import org.dive4elements.artifacts.common.utils.XMLUtils;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
24 import org.dive4elements.river.artifacts.AbstractStaticStateArtifact;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
25 import org.dive4elements.river.artifacts.D4EArtifact;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
26 import org.dive4elements.river.artifacts.model.FacetTypes;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
27 import org.dive4elements.river.artifacts.sinfo.common.PredefinedChannelDepthProcessor;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
28 import org.dive4elements.river.artifacts.sinfo.common.PredefinedChannelWidthProcessor;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
29 import org.dive4elements.river.artifacts.states.StaticState;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
30 import org.w3c.dom.Document;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
31
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
32 /**
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
33 * Display of a river channel data series loaded from database
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
34 *
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
35 * @author Matthias Schäfer
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
36 */
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
37 public class PredefinedChannelArtifact extends AbstractStaticStateArtifact implements FacetTypes {
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
38
9506
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9112
diff changeset
39 private static final long serialVersionUID = 1L;
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9112
diff changeset
40
9112
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
41 /** The log for this class. */
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
42 private static Logger log = Logger.getLogger(PredefinedChannelArtifact.class);
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
43
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
44 /** Artifact name. */
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
45 private static final String NAME = "channel";
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
46
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
47 static {
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
48 // TODO: Move to configuration.
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
49 FacetActivity.Registry.getInstance().register(NAME, FacetActivity.INACTIVE);
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
50 }
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
51
9506
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9112
diff changeset
52 private static final String STATIC_STATE_NAME = "state.predefined_channel.static";
9112
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
53
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
54 /**
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
55 * Trivial Constructor.
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
56 */
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
57 public PredefinedChannelArtifact() {
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
58 log.debug("new PredefinedChannelArtifact");
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
59 }
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
60
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
61 @Override
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
62 public String getName() {
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
63 return NAME;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
64 }
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
65
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
66 /**
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
67 * Gets called from factory, to set things up.
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
68 */
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
69 @Override
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
70 public void setup(final String identifier, final ArtifactFactory factory, final Object context, final CallMeta callMeta, final Document data,
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
71 final List<Class> loadFacets) {
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
72
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
73 log.debug("PredefinedChannelArtifact.setup");
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
74
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
75 if (log.isDebugEnabled()) {
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
76 log.debug(XMLUtils.toString(data));
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
77 }
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
78
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
79 final String code = getDatacageIDValue(data);
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
80 final String seriesName = (code.split("-").length >= 3) ? code.split("-", 3)[2] : "name?";
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
81
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
82 createFacets(callMeta, code, seriesName);
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
83
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
84 super.setup(identifier, factory, context, callMeta, data, loadFacets);
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
85 }
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
86
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
87 private void createFacets(final CallMeta callMeta, final String code, final String seriesName) {
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
88 if (code == null)
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
89 return;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
90 final String[] parts = code.split("-");
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
91 if (parts.length < 2) {
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
92 log.error("Invalid datacage ID '" + code + "'");
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
93 return;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
94 }
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
95 addStringData("channel_id", parts[1]);
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
96 final ArrayList<Facet> facets = new ArrayList<>(2);
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
97 facets.add(PredefinedChannelDepthProcessor.createFacet(callMeta, seriesName));
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
98 facets.add(PredefinedChannelWidthProcessor.createFacet(callMeta, seriesName));
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
99 addFacets(STATIC_STATE_NAME, facets);
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
100 }
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
101
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
102 @Override
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
103 protected void initStaticState() {
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
104
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
105 log.debug("initStaticState " + getName() + " " + identifier());
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
106
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
107 final StaticState state = new StaticState(STATIC_STATE_NAME);
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
108 final DefaultOutput output = new DefaultOutput("general", "general", "image/png", "chart");
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
109
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
110 final List<Facet> facets = getFacets(STATIC_STATE_NAME);
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
111 output.addFacets(facets);
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
112 state.addOutput(output);
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
113
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
114 setStaticState(state);
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
115 }
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
116
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
117 @Override
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
118 protected void initialize(final Artifact artifact, final Object context, final CallMeta meta) {
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
119 // do not clone facets, etc. from master artifact
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
120
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
121 log.debug("initialize");
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
122 importData((D4EArtifact) artifact, "river");
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
123 importData((D4EArtifact) artifact, "ld_from");
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
124 importData((D4EArtifact) artifact, "ld_to");
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
125
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
126 log.debug("ld_from " + getDataAsString("ld_from"));
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
127 log.debug("ld_to " + getDataAsString("ld_to"));
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
128 }
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
129 }

http://dive4elements.wald.intevation.org