annotate artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/InfrastructureArtifact.java @ 9115:a165cd63099f

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

http://dive4elements.wald.intevation.org