annotate artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/predefinedchannel/PredefinedChannelArtifact.java @ 9112:189cc8ededbd

Added datacage select and chart display for river channel sizes loaded from database
author mschaefer
date Mon, 04 Jun 2018 08:36:09 +0200
parents
children 8b7bf26b8782
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 */
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
38 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
39
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
40 /** The log for this class. */
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
41 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
42
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
43 /** Artifact name. */
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
44 private static final String NAME = "channel";
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
45
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
46 static {
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
47 // TODO: Move to configuration.
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
48 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
49 }
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 public static final String STATIC_STATE_NAME = "state.predefined_channel.static";
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
52
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 * Trivial Constructor.
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
55 */
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
56 public PredefinedChannelArtifact() {
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
57 log.debug("new PredefinedChannelArtifact");
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
58 }
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 @Override
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
61 public String getName() {
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
62 return NAME;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
63 }
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 * 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
67 */
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
68 @Override
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
69 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
70 final List<Class> loadFacets) {
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
71
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
72 log.debug("PredefinedChannelArtifact.setup");
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
73
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
74 if (log.isDebugEnabled()) {
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
75 log.debug(XMLUtils.toString(data));
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
76 }
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 final String code = getDatacageIDValue(data);
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
79 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
80
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
81 createFacets(callMeta, code, seriesName);
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
82
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
83 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
84 }
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 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
87 if (code == null)
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
88 return;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
89 final String[] parts = code.split("-");
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
90 if (parts.length < 2) {
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
91 log.error("Invalid datacage ID '" + code + "'");
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
92 return;
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
93 }
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
94 addStringData("channel_id", parts[1]);
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
95 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
96 facets.add(PredefinedChannelDepthProcessor.createFacet(callMeta, seriesName));
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
97 facets.add(PredefinedChannelWidthProcessor.createFacet(callMeta, seriesName));
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
98 addFacets(STATIC_STATE_NAME, facets);
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
99 }
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 @Override
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
102 protected void initStaticState() {
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
103
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
104 log.debug("initStaticState " + getName() + " " + identifier());
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
105
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
106 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
107 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
108
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
109 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
110 output.addFacets(facets);
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
111 state.addOutput(output);
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
112
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
113 setStaticState(state);
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
114 }
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 @Override
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
117 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
118 // 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
119
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
120 log.debug("initialize");
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
121 importData((D4EArtifact) artifact, "river");
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
122 importData((D4EArtifact) artifact, "ld_from");
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
123 importData((D4EArtifact) artifact, "ld_to");
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
124
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
125 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
126 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
127 }
189cc8ededbd Added datacage select and chart display for river channel sizes loaded from database
mschaefer
parents:
diff changeset
128 }

http://dive4elements.wald.intevation.org