Mercurial > dive4elements > river
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 } |