annotate artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/predefinedflowdepth/PredefinedFlowDepthArtifact.java @ 9035:c16e90a0baf7

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

http://dive4elements.wald.intevation.org