Mercurial > dive4elements > river
diff 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 |
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/server/ArtifactDescriptionFactory.java Tue Jul 12 15:04:50 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/server/ArtifactDescriptionFactory.java Mon Jul 18 09:52:16 2011 +0000 @@ -6,6 +6,7 @@ import javax.xml.xpath.XPathConstants; import org.w3c.dom.Document; +import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; @@ -46,6 +47,9 @@ public static final String XPATH_STATIC_ITEM_NODE = "art:item"; + public static final String XPATH_RECOMMENDED_ARTIFACTS = + "/art:result/art:recommended-artifacts/art:artifact-factory"; + /** * This method creates the {@link ArtifactDescription} of the DESCRIBE * document <i>doc</i>. @@ -73,14 +77,16 @@ DataList currentData = extractCurrentData(dynamicNode, state); DataList[] old = extractOldData(staticNode); String[] states = extractReachableStates(reachable); - OutputMode[] outs = extractOutputModes(outputs); + OutputMode[] outs = extractOutputModes(outputs); + String[] recommended = extractRecommendedArtifacts(doc); return new DefaultArtifactDescription( old, currentData, state, states, - outs); + outs, + recommended); } @@ -464,5 +470,31 @@ return (OutputMode[]) outs.toArray(new OutputMode[size]); } + + + protected static String[] extractRecommendedArtifacts(Document doc) { + System.out.println("ArtifactDescriptionFactory - extract recommended."); + + NodeList list = (NodeList) XMLUtils.xpath( + doc, + XPATH_RECOMMENDED_ARTIFACTS, + XPathConstants.NODESET, + ArtifactNamespaceContext.INSTANCE); + + int num = list != null ? list.getLength() : 0; + + String[] factories = new String[num]; + + for (int i = 0; i < num; i++) { + Element e = (Element) list.item(i); + String f = e.getAttribute("name"); + + if (f != null && f.length() > 0) { + factories[i] = f; + } + } + + return factories; + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :