annotate artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/DatacagePairSelectState.java @ 9580:839b2aa84dd0

minuend/subtrahend-UI-switch
author gernotbelger
date Tue, 08 Jan 2019 17:01:09 +0100
parents 5294114b1df4
children
rev   line source
8951
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
2 * Software engineering by Intevation GmbH
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
3 *
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
7 */
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
8
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
9 package org.dive4elements.river.artifacts.sinfo.common;
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
10
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
11 import java.util.List;
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
12
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
13 import org.apache.log4j.Logger;
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
14 import org.dive4elements.artifactdatabase.ProtocolUtils;
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
15 import org.dive4elements.artifactdatabase.state.Facet;
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
16 import org.dive4elements.artifacts.Artifact;
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
17 import org.dive4elements.artifacts.CallContext;
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
18 import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator;
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
19 import org.dive4elements.river.artifacts.D4EArtifact;
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
20 import org.dive4elements.river.artifacts.model.FacetTypes;
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
21 import org.dive4elements.river.artifacts.resources.Resources;
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
22 import org.dive4elements.river.artifacts.states.DefaultState;
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
23 import org.dive4elements.river.artifacts.states.WaterlevelPairSelectState;
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
24 import org.w3c.dom.Element;
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
25
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
26 /**
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
27 * Copy of {@link WaterlevelPairSelectState}. We must copy instead of crate an abstraction, else we break the
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
28 * serialization of {@link WaterlevelPairSelectState}.
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
29 * State in which the user selects 1 to n pairs of Waterlevels and alikes.
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
30 */
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
31 public abstract class DatacagePairSelectState extends DefaultState implements FacetTypes {
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
32
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
33 private static final long serialVersionUID = 1L;
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
34
9580
839b2aa84dd0 minuend/subtrahend-UI-switch
gernotbelger
parents: 9040
diff changeset
35 private final boolean minuendSubtrahendUiReversed;
839b2aa84dd0 minuend/subtrahend-UI-switch
gernotbelger
parents: 9040
diff changeset
36
8951
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
37 /** The log that is used in this state. */
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
38 private static Logger log = Logger.getLogger(DatacagePairSelectState.class);
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
39
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
40 private final String dataId;
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
41
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
42 private final String uiProvider;
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
43
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
44 /**
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
45 * Name of the state data this state is responsible for.
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
46 */
9580
839b2aa84dd0 minuend/subtrahend-UI-switch
gernotbelger
parents: 9040
diff changeset
47 public DatacagePairSelectState(final String uiProvider, final String dataId, final boolean minuendSubtrahendUiReversed) {
8951
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
48 this.uiProvider = uiProvider;
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
49 this.dataId = dataId;
9580
839b2aa84dd0 minuend/subtrahend-UI-switch
gernotbelger
parents: 9040
diff changeset
50 this.minuendSubtrahendUiReversed = minuendSubtrahendUiReversed;
8951
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
51 }
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
52
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
53 /** Specify to display a datacage_twin_panel. */
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
54 @Override
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
55 protected final String getUIProvider() {
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
56 return this.uiProvider;
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
57 }
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
58
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
59 /**
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
60 * Overridden to do nothing.
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
61 */
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
62 @Override
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
63 public final Object computeAdvance(final D4EArtifact artifact, final String hash, final CallContext context, final List<Facet> facets, final Object old) {
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
64 // Get data and do stuff, do not calculate
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
65 return "";
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
66 }
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
67
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
68 /**
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
69 * Create elements for document (prepopulated with data, if any).
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
70 *
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
71 * @param artifact
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
72 * D4EArtifact to get data from.
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
73 * @param name
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
74 * DataName, expceted to be dataId given in constructor.
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
75 */
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
76 @Override
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
77 protected final Element[] createItems(final ElementCreator cr, final Artifact artifact, final String name, final CallContext context) {
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
78 log.debug("createItems: " + name);
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
79
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
80 if (name.equals(this.dataId)) {
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
81 final Element item = ProtocolUtils.createArtNode(cr, "item", null, null);
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
82 final Element label = ProtocolUtils.createArtNode(cr, "label", null, null);
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
83 final Element value = ProtocolUtils.createArtNode(cr, "value", null, null);
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
84
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
85 final D4EArtifact flys = (D4EArtifact) artifact;
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
86
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
87 final String s = flys.getDataAsString(name);
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
88 value.setTextContent(s);
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
89 item.appendChild(label);
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
90 item.appendChild(value);
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
91 return new Element[] { item };
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
92 }
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
93
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
94 return new Element[] {};
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
95 }
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
96
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
97 /**
9040
5294114b1df4 Fixed/changed some FIXMEs/TODOs
gernotbelger
parents: 8951
diff changeset
98 * Creates the data element used for the static part of DESCRIBE document.
8951
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
99 */
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
100 @Override
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
101 protected final Element createStaticData(final D4EArtifact flys, final ElementCreator creator, final CallContext cc, final String name, final String value,
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
102 final String type) {
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
103 final Element dataElement = creator.create("data");
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
104 creator.addAttr(dataElement, "name", name, true);
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
105 creator.addAttr(dataElement, "type", type, true);
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
106
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
107 final Element itemElement = creator.create("item");
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
108 creator.addAttr(itemElement, "value", value, true);
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
109
9580
839b2aa84dd0 minuend/subtrahend-UI-switch
gernotbelger
parents: 9040
diff changeset
110 final String[] labels = WaterlevelPairSelectState.getLabels(cc, value, this.minuendSubtrahendUiReversed);
8951
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
111 final Object[] obj = new Object[] { labels[0] };
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
112
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
113 final String attrValue = Resources.getMsg(cc.getMeta(), "wsp.selected.string", "wsp.selected.string", obj);
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
114
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
115 creator.addAttr(itemElement, "label", attrValue, true);
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
116 dataElement.appendChild(itemElement);
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
117
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
118 return dataElement;
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
119 }
322b0e6298ea Work on SINFO FlowDepth-Development
gernotbelger
parents:
diff changeset
120 }

http://dive4elements.wald.intevation.org