Mercurial > dive4elements > river
comparison flys-client/src/main/java/de/intevation/flys/client/server/ArtifactDescriptionFactory.java @ 803:653ae84533e7
Read/create recommended Artifacts and add them to the current Collection.
flys-client/trunk@2350 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Mon, 18 Jul 2011 09:52:16 +0000 |
parents | a078ba1c139d |
children | 6f65e70fa11d |
comparison
equal
deleted
inserted
replaced
802:d45ad7fd3027 | 803:653ae84533e7 |
---|---|
4 import java.util.List; | 4 import java.util.List; |
5 | 5 |
6 import javax.xml.xpath.XPathConstants; | 6 import javax.xml.xpath.XPathConstants; |
7 | 7 |
8 import org.w3c.dom.Document; | 8 import org.w3c.dom.Document; |
9 import org.w3c.dom.Element; | |
9 import org.w3c.dom.Node; | 10 import org.w3c.dom.Node; |
10 import org.w3c.dom.NodeList; | 11 import org.w3c.dom.NodeList; |
11 | 12 |
12 import de.intevation.artifacts.common.ArtifactNamespaceContext; | 13 import de.intevation.artifacts.common.ArtifactNamespaceContext; |
13 import de.intevation.artifacts.common.utils.ClientProtocolUtils; | 14 import de.intevation.artifacts.common.utils.ClientProtocolUtils; |
44 | 45 |
45 public static final String XPATH_STATIC_DATA_NODE = "art:data"; | 46 public static final String XPATH_STATIC_DATA_NODE = "art:data"; |
46 | 47 |
47 public static final String XPATH_STATIC_ITEM_NODE = "art:item"; | 48 public static final String XPATH_STATIC_ITEM_NODE = "art:item"; |
48 | 49 |
50 public static final String XPATH_RECOMMENDED_ARTIFACTS = | |
51 "/art:result/art:recommended-artifacts/art:artifact-factory"; | |
52 | |
49 /** | 53 /** |
50 * This method creates the {@link ArtifactDescription} of the DESCRIBE | 54 * This method creates the {@link ArtifactDescription} of the DESCRIBE |
51 * document <i>doc</i>. | 55 * document <i>doc</i>. |
52 * | 56 * |
53 * @param doc A DESCRIBE document. | 57 * @param doc A DESCRIBE document. |
71 System.out.println("Current state name: " + state); | 75 System.out.println("Current state name: " + state); |
72 | 76 |
73 DataList currentData = extractCurrentData(dynamicNode, state); | 77 DataList currentData = extractCurrentData(dynamicNode, state); |
74 DataList[] old = extractOldData(staticNode); | 78 DataList[] old = extractOldData(staticNode); |
75 String[] states = extractReachableStates(reachable); | 79 String[] states = extractReachableStates(reachable); |
76 OutputMode[] outs = extractOutputModes(outputs); | 80 OutputMode[] outs = extractOutputModes(outputs); |
81 String[] recommended = extractRecommendedArtifacts(doc); | |
77 | 82 |
78 return new DefaultArtifactDescription( | 83 return new DefaultArtifactDescription( |
79 old, | 84 old, |
80 currentData, | 85 currentData, |
81 state, | 86 state, |
82 states, | 87 states, |
83 outs); | 88 outs, |
89 recommended); | |
84 } | 90 } |
85 | 91 |
86 | 92 |
87 /** | 93 /** |
88 * This method extracts the data that the user is able to enter in the | 94 * This method extracts the data that the user is able to enter in the |
462 } | 468 } |
463 } | 469 } |
464 | 470 |
465 return (OutputMode[]) outs.toArray(new OutputMode[size]); | 471 return (OutputMode[]) outs.toArray(new OutputMode[size]); |
466 } | 472 } |
473 | |
474 | |
475 protected static String[] extractRecommendedArtifacts(Document doc) { | |
476 System.out.println("ArtifactDescriptionFactory - extract recommended."); | |
477 | |
478 NodeList list = (NodeList) XMLUtils.xpath( | |
479 doc, | |
480 XPATH_RECOMMENDED_ARTIFACTS, | |
481 XPathConstants.NODESET, | |
482 ArtifactNamespaceContext.INSTANCE); | |
483 | |
484 int num = list != null ? list.getLength() : 0; | |
485 | |
486 String[] factories = new String[num]; | |
487 | |
488 for (int i = 0; i < num; i++) { | |
489 Element e = (Element) list.item(i); | |
490 String f = e.getAttribute("name"); | |
491 | |
492 if (f != null && f.length() > 0) { | |
493 factories[i] = f; | |
494 } | |
495 } | |
496 | |
497 return factories; | |
498 } | |
467 } | 499 } |
468 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 500 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |