comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/BedHeightsArtifact.java @ 3614:68beaa827751

MINFO: Implemented UI and facet/artifact stack for bed height differences. flys-artifacts/trunk@5276 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Raimund Renkert <raimund.renkert@intevation.de>
date Tue, 28 Aug 2012 11:45:23 +0000
parents
children a66df8e8d3df
comparison
equal deleted inserted replaced
3613:dd6e25980c91 3614:68beaa827751
1 package de.intevation.flys.artifacts;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import org.apache.log4j.Logger;
7 import org.w3c.dom.Document;
8
9 import de.intevation.artifactdatabase.state.Facet;
10 import de.intevation.artifactdatabase.state.FacetActivity;
11 import de.intevation.artifactdatabase.state.State;
12 import de.intevation.artifacts.ArtifactFactory;
13 import de.intevation.artifacts.CallMeta;
14 import de.intevation.artifacts.common.utils.XMLUtils;
15 import de.intevation.flys.artifacts.model.FacetTypes;
16 import de.intevation.flys.artifacts.model.minfo.BedHeight;
17 import de.intevation.flys.artifacts.model.minfo.BedHeightFacet;
18 import de.intevation.flys.artifacts.model.minfo.BedHeightFactory;
19 import de.intevation.flys.artifacts.states.StaticState;
20
21 public class BedHeightsArtifact
22 extends StaticFLYSArtifact
23 implements FacetTypes
24 {
25 /** The logger for this class. */
26 private static Logger logger =
27 Logger.getLogger(BedHeightsArtifact.class);
28
29 private static final String NAME = "bedheights";
30
31 static {
32 // TODO: Move to configuration.
33 FacetActivity.Registry.getInstance()
34 .register(NAME, FacetActivity.INACTIVE);
35 }
36
37 public static final String STATIC_STATE_NAME =
38 "state.additional_bedheights.static";
39
40 /** Data Item name to know whether we are Heighmarks and reveive
41 * some data slightly different. */
42 public static final String DATA_HEIGHT_TYPE =
43 "height_marks";
44
45 /** One and only state to be in. */
46 protected transient State state = null;
47
48
49 /**
50 * Trivial Constructor.
51 */
52 public BedHeightsArtifact() {
53 logger.debug("BedHeightsArtifact.BedHeightsArtifact");
54 }
55
56 @Override
57 public String getName() {
58 return NAME;
59 }
60
61 /**
62 * Gets called from factory, to set things up.
63 */
64 @Override
65 public void setup(
66 String identifier,
67 ArtifactFactory factory,
68 Object context,
69 CallMeta callMeta,
70 Document data)
71 {
72 logger.debug("BedHeightsArtifact.setup");
73
74 state = new StaticState(STATIC_STATE_NAME);
75
76 if (logger.isDebugEnabled()) {
77 logger.debug(XMLUtils.toString(data));
78 }
79
80 List<Facet> fs = new ArrayList<Facet>();
81 String code = getDatacageIDValue(data);
82
83 if (code != null) {
84 String [] parts = code.split("-");
85
86 if (parts.length >= 4) {
87 if (parts[0].equals("bedheight")) {
88 addStringData("type", parts[1]);
89 addStringData("height_id", parts[2]);
90 addStringData("time", parts[3]);
91 }
92 int hId = Integer.parseInt(parts[2]);
93 String bedHName = BedHeightFactory.getHeightName(parts[1], hId);
94
95 Facet bedHFacet = new BedHeightFacet(
96 "bedheight",
97 bedHName);
98
99 fs.add(bedHFacet);
100 facets.put(state.getID(), fs);
101 }
102 }
103
104 //spawnState();
105 super.setup(identifier, factory, context, callMeta, data);
106 }
107
108 /**
109 * Get a list containing the one and only State.
110 * @param context ignored.
111 * @return list with one and only state.
112 */
113 @Override
114 protected List<State> getStates(Object context) {
115 ArrayList<State> states = new ArrayList<State>();
116 states.add(getState());
117 return states;
118 }
119
120 /**
121 * Get the "current" state (there is but one).
122 * @param cc ignored.
123 * @return the "current" (only possible) state.
124 */
125 @Override
126 public State getCurrentState(Object cc) {
127 return getState();
128 }
129
130
131 /**
132 * Get the only possible state.
133 * @return the state.
134 */
135 protected State getState() {
136 return getState(null, null);
137 }
138
139
140 /**
141 * Get the state.
142 * @param context ignored.
143 * @param stateID ignored.
144 * @return the state.
145 */
146 @Override
147 protected State getState(Object context, String stateID) {
148 return (state != null)
149 ? state
150 : new StaticState(STATIC_STATE_NAME);
151 }
152
153 /**
154 * Get WKms from factory.
155 * @param idx param is not needed (TODO?)
156 * @return WKms according to parameterization (can be null);
157 */
158 public BedHeight getHeight() {
159 return BedHeightFactory.getHeight(
160 getDataAsString("type"),
161 Integer.parseInt(getDataAsString("height_id")),
162 Integer.parseInt(getDataAsString("time")));
163 }
164
165 }

http://dive4elements.wald.intevation.org