Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java @ 1057:d4a5d3941cc0
Build out/facet filter from XML document passed at creation time.
flys-artifacts/trunk@2527 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 22 Aug 2011 16:37:12 +0000 |
parents | bd1b751deab3 |
children | fdb0f4ef96f0 |
comparison
equal
deleted
inserted
replaced
1056:bd1b751deab3 | 1057:d4a5d3941cc0 |
---|---|
4 import de.intevation.artifactdatabase.DefaultArtifact; | 4 import de.intevation.artifactdatabase.DefaultArtifact; |
5 | 5 |
6 import de.intevation.artifactdatabase.data.DefaultStateData; | 6 import de.intevation.artifactdatabase.data.DefaultStateData; |
7 import de.intevation.artifactdatabase.data.StateData; | 7 import de.intevation.artifactdatabase.data.StateData; |
8 | 8 |
9 import de.intevation.artifactdatabase.state.DefaultFacet; | |
9 import de.intevation.artifactdatabase.state.DefaultOutput; | 10 import de.intevation.artifactdatabase.state.DefaultOutput; |
10 import de.intevation.artifactdatabase.state.Facet; | 11 import de.intevation.artifactdatabase.state.Facet; |
11 import de.intevation.artifactdatabase.state.Output; | 12 import de.intevation.artifactdatabase.state.Output; |
12 import de.intevation.artifactdatabase.state.State; | 13 import de.intevation.artifactdatabase.state.State; |
13 import de.intevation.artifactdatabase.state.StateEngine; | 14 import de.intevation.artifactdatabase.state.StateEngine; |
73 public static final String XPATH_ADVANCE_TARGET = | 74 public static final String XPATH_ADVANCE_TARGET = |
74 "/art:action/art:target/@art:name"; | 75 "/art:action/art:target/@art:name"; |
75 | 76 |
76 public static final String XPATH_MODEL_ARTIFACT = | 77 public static final String XPATH_MODEL_ARTIFACT = |
77 "/art:action/art:template/@uuid"; | 78 "/art:action/art:template/@uuid"; |
79 | |
80 public static final String XPATH_FILTER = | |
81 "/art:action/art:filter/art:out"; | |
78 | 82 |
79 /** The constant string that shows that an operation was successful.*/ | 83 /** The constant string that shows that an operation was successful.*/ |
80 public static final String OPERATION_SUCCESSFUL = "SUCCESS"; | 84 public static final String OPERATION_SUCCESSFUL = "SUCCESS"; |
81 | 85 |
82 /** The constant string that shows that an operation failed.*/ | 86 /** The constant string that shows that an operation failed.*/ |
180 } | 184 } |
181 catch (ArtifactDatabaseException adbe) { | 185 catch (ArtifactDatabaseException adbe) { |
182 logger.error(adbe, adbe); | 186 logger.error(adbe, adbe); |
183 } | 187 } |
184 } | 188 } |
189 | |
190 filterFacets = buildFilterFacets(data); | |
185 } | 191 } |
186 | 192 |
187 | 193 |
188 protected void initialize( | 194 protected void initialize( |
189 Artifact artifact, | 195 Artifact artifact, |
190 Object context, | 196 Object context, |
191 CallMeta callMeta) | 197 CallMeta callMeta) |
192 { | 198 { |
193 // do nothing here | 199 // do nothing here |
200 } | |
201 | |
202 protected Map<String, List<Facet>> buildFilterFacets(Document document) { | |
203 | |
204 NodeList nodes = (NodeList)XMLUtils.xpath( | |
205 document, | |
206 XPATH_FILTER, | |
207 XPathConstants.NODESET, | |
208 ArtifactNamespaceContext.INSTANCE); | |
209 | |
210 if (nodes == null || nodes.getLength() == 0) { | |
211 return null; | |
212 } | |
213 | |
214 Map<String, List<Facet>> result = new HashMap<String, List<Facet>>(); | |
215 | |
216 for (int i = 0, N = nodes.getLength(); i < N; ++i) { | |
217 Element element = (Element)nodes.item(i); | |
218 String oName = element.getAttribute("name"); | |
219 if (oName.length() == 0) { | |
220 continue; | |
221 } | |
222 | |
223 List<Facet> facets = new ArrayList<Facet>(); | |
224 | |
225 NodeList facetNodes = element.getElementsByTagNameNS( | |
226 ArtifactNamespaceContext.NAMESPACE_URI, | |
227 "facet"); | |
228 | |
229 for (int j = 0, M = facetNodes.getLength(); j < M; ++j) { | |
230 Element facetElement = (Element)facetNodes.item(j); | |
231 | |
232 String fName = facetElement.getAttribute("name"); | |
233 | |
234 int index; | |
235 try { | |
236 index = Integer.parseInt(facetElement.getAttribute("index")); | |
237 } | |
238 catch (NumberFormatException nfe) { | |
239 logger.warn(nfe); | |
240 index = 0; | |
241 } | |
242 facets.add(new DefaultFacet(index, fName, "")); | |
243 } | |
244 | |
245 if (!facets.isEmpty()) { | |
246 result.put(oName, facets); | |
247 } | |
248 } | |
249 | |
250 return result; | |
194 } | 251 } |
195 | 252 |
196 | 253 |
197 /** | 254 /** |
198 * Insert new data included in <code>input</code> into the current state. | 255 * Insert new data included in <code>input</code> into the current state. |