Mercurial > dive4elements > river
comparison 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 |
comparison
equal
deleted
inserted
replaced
269:eb3c16df59db | 270:d01b0d81b92a |
---|---|
23 import de.intevation.flys.client.shared.exceptions.ServerException; | 23 import de.intevation.flys.client.shared.exceptions.ServerException; |
24 import de.intevation.flys.client.shared.model.Collection; | 24 import de.intevation.flys.client.shared.model.Collection; |
25 import de.intevation.flys.client.shared.model.CollectionItem; | 25 import de.intevation.flys.client.shared.model.CollectionItem; |
26 import de.intevation.flys.client.shared.model.DefaultCollection; | 26 import de.intevation.flys.client.shared.model.DefaultCollection; |
27 import de.intevation.flys.client.shared.model.DefaultCollectionItem; | 27 import de.intevation.flys.client.shared.model.DefaultCollectionItem; |
28 import de.intevation.flys.client.shared.model.DefaultFacet; | |
28 import de.intevation.flys.client.shared.model.DefaultOutputMode; | 29 import de.intevation.flys.client.shared.model.DefaultOutputMode; |
30 import de.intevation.flys.client.shared.model.ExportMode; | |
31 import de.intevation.flys.client.shared.model.Facet; | |
29 import de.intevation.flys.client.shared.model.OutputMode; | 32 import de.intevation.flys.client.shared.model.OutputMode; |
30 import de.intevation.flys.client.client.services.DescribeCollectionService; | 33 import de.intevation.flys.client.client.services.DescribeCollectionService; |
31 | 34 |
32 | 35 |
33 /** | 36 /** |
44 /** The error message key that is thrown if an error occured while | 47 /** The error message key that is thrown if an error occured while |
45 * describe() a Collection.*/ | 48 * describe() a Collection.*/ |
46 public static final String ERROR_DESCRIBE_COLLECTION = | 49 public static final String ERROR_DESCRIBE_COLLECTION = |
47 "error_describe_collection"; | 50 "error_describe_collection"; |
48 | 51 |
52 public static final String XPATH_FACETS = "art:facets/art:facet"; | |
53 | |
49 | 54 |
50 public Collection describe(String uuid, String serverUrl, String locale) | 55 public Collection describe(String uuid, String serverUrl, String locale) |
51 throws ServerException | 56 throws ServerException |
52 { | 57 { |
53 System.out.println("DescribeCollectionServiceImpl.describe"); | 58 System.out.println("DescribeCollectionServiceImpl.describe"); |
219 System.err.println("Found an invalid output mode."); | 224 System.err.println("Found an invalid output mode."); |
220 | 225 |
221 continue; | 226 continue; |
222 } | 227 } |
223 | 228 |
224 // TODO Parse Facets | 229 OutputMode outmode = null; |
225 | 230 List<Facet> fs = extractFacets(tmp); |
226 modes.add(new DefaultOutputMode(name, desc, mime)); | 231 |
232 if (name.indexOf("export") > -1) { | |
233 outmode = new ExportMode(name, desc, mime, fs); | |
234 } | |
235 else { | |
236 outmode = new DefaultOutputMode(name, desc, mime, fs); | |
237 } | |
238 | |
239 modes.add(outmode); | |
227 } | 240 } |
228 | 241 |
229 return modes; | 242 return modes; |
243 } | |
244 | |
245 | |
246 protected static List<Facet> extractFacets(Node outmode) { | |
247 System.out.println("ArtifactDescriptionFactory - extractFacets()"); | |
248 | |
249 NodeList facetList = (NodeList) XMLUtils.xpath( | |
250 outmode, | |
251 XPATH_FACETS, | |
252 XPathConstants.NODESET, | |
253 ArtifactNamespaceContext.INSTANCE); | |
254 | |
255 int num = facetList != null ? facetList.getLength() : 0; | |
256 | |
257 List<Facet> facets = new ArrayList<Facet>(num); | |
258 | |
259 for (int i = 0; i < num; i++) { | |
260 Node facetNode = facetList.item(i); | |
261 | |
262 String name = XMLUtils.xpathString( | |
263 facetNode, "@art:name", ArtifactNamespaceContext.INSTANCE); | |
264 | |
265 if (name != null && name.length() > 0) { | |
266 facets.add(new DefaultFacet(name)); | |
267 } | |
268 } | |
269 | |
270 return facets; | |
230 } | 271 } |
231 } | 272 } |
232 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 273 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |