Mercurial > dive4elements > river
diff flys-client/src/main/java/de/intevation/flys/client/server/DescribeCollectionServiceImpl.java @ 270:d01b0d81b92a
Parse the facets of a Collection and distinguish between an ordinary OutputMode and an ExportMode (new).
flys-client/trunk@1895 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 11 May 2011 09:11:40 +0000 |
parents | 924da6695800 |
children | ba238f917b94 |
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/server/DescribeCollectionServiceImpl.java Wed May 11 07:32:08 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/server/DescribeCollectionServiceImpl.java Wed May 11 09:11:40 2011 +0000 @@ -25,7 +25,10 @@ import de.intevation.flys.client.shared.model.CollectionItem; import de.intevation.flys.client.shared.model.DefaultCollection; import de.intevation.flys.client.shared.model.DefaultCollectionItem; +import de.intevation.flys.client.shared.model.DefaultFacet; import de.intevation.flys.client.shared.model.DefaultOutputMode; +import de.intevation.flys.client.shared.model.ExportMode; +import de.intevation.flys.client.shared.model.Facet; import de.intevation.flys.client.shared.model.OutputMode; import de.intevation.flys.client.client.services.DescribeCollectionService; @@ -46,6 +49,8 @@ public static final String ERROR_DESCRIBE_COLLECTION = "error_describe_collection"; + public static final String XPATH_FACETS = "art:facets/art:facet"; + public Collection describe(String uuid, String serverUrl, String locale) throws ServerException @@ -221,12 +226,48 @@ continue; } - // TODO Parse Facets + OutputMode outmode = null; + List<Facet> fs = extractFacets(tmp); - modes.add(new DefaultOutputMode(name, desc, mime)); + if (name.indexOf("export") > -1) { + outmode = new ExportMode(name, desc, mime, fs); + } + else { + outmode = new DefaultOutputMode(name, desc, mime, fs); + } + + modes.add(outmode); } return modes; } + + + protected static List<Facet> extractFacets(Node outmode) { + System.out.println("ArtifactDescriptionFactory - extractFacets()"); + + NodeList facetList = (NodeList) XMLUtils.xpath( + outmode, + XPATH_FACETS, + XPathConstants.NODESET, + ArtifactNamespaceContext.INSTANCE); + + int num = facetList != null ? facetList.getLength() : 0; + + List<Facet> facets = new ArrayList<Facet>(num); + + for (int i = 0; i < num; i++) { + Node facetNode = facetList.item(i); + + String name = XMLUtils.xpathString( + facetNode, "@art:name", ArtifactNamespaceContext.INSTANCE); + + if (name != null && name.length() > 0) { + facets.add(new DefaultFacet(name)); + } + } + + return facets; + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :