Mercurial > dive4elements > river
comparison flys-client/src/main/java/de/intevation/flys/client/server/DescribeCollectionServiceImpl.java @ 809:e9337488bac3
The Collection now knows its already loaded recommendations - the CollectionView will not load recommendations that have already been loaded before.
flys-client/trunk@2397 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Fri, 22 Jul 2011 12:23:36 +0000 |
parents | 374712890b94 |
children | 112f95d7b286 |
comparison
equal
deleted
inserted
replaced
808:3187b268b311 | 809:e9337488bac3 |
---|---|
29 import de.intevation.flys.client.shared.model.Collection; | 29 import de.intevation.flys.client.shared.model.Collection; |
30 import de.intevation.flys.client.shared.model.CollectionItem; | 30 import de.intevation.flys.client.shared.model.CollectionItem; |
31 import de.intevation.flys.client.shared.model.DefaultCollection; | 31 import de.intevation.flys.client.shared.model.DefaultCollection; |
32 import de.intevation.flys.client.shared.model.DefaultCollectionItem; | 32 import de.intevation.flys.client.shared.model.DefaultCollectionItem; |
33 import de.intevation.flys.client.shared.model.DefaultFacet; | 33 import de.intevation.flys.client.shared.model.DefaultFacet; |
34 import de.intevation.flys.client.shared.model.DefaultRecommendation; | |
34 import de.intevation.flys.client.shared.model.DefaultTheme; | 35 import de.intevation.flys.client.shared.model.DefaultTheme; |
35 import de.intevation.flys.client.shared.model.ChartMode; | 36 import de.intevation.flys.client.shared.model.ChartMode; |
36 import de.intevation.flys.client.shared.model.ExportMode; | 37 import de.intevation.flys.client.shared.model.ExportMode; |
37 import de.intevation.flys.client.shared.model.MapMode; | 38 import de.intevation.flys.client.shared.model.MapMode; |
38 import de.intevation.flys.client.shared.model.ReportMode; | 39 import de.intevation.flys.client.shared.model.ReportMode; |
39 import de.intevation.flys.client.shared.model.Facet; | 40 import de.intevation.flys.client.shared.model.Facet; |
40 import de.intevation.flys.client.shared.model.OutputMode; | 41 import de.intevation.flys.client.shared.model.OutputMode; |
42 import de.intevation.flys.client.shared.model.Recommendation; | |
41 import de.intevation.flys.client.shared.model.Theme; | 43 import de.intevation.flys.client.shared.model.Theme; |
42 import de.intevation.flys.client.shared.model.ThemeList; | 44 import de.intevation.flys.client.shared.model.ThemeList; |
43 import de.intevation.flys.client.client.services.DescribeCollectionService; | 45 import de.intevation.flys.client.client.services.DescribeCollectionService; |
44 | 46 |
45 | 47 |
59 public static final String ERROR_DESCRIBE_COLLECTION = | 61 public static final String ERROR_DESCRIBE_COLLECTION = |
60 "error_describe_collection"; | 62 "error_describe_collection"; |
61 | 63 |
62 public static final String XPATH_FACETS = "art:facets/art:facet"; | 64 public static final String XPATH_FACETS = "art:facets/art:facet"; |
63 | 65 |
66 public static final String XPATH_LOADED_RECOMMENDATIONS = | |
67 "/art:artifact-collection/art:attribute/art:loaded-recommendations/art:recommendation"; | |
68 | |
64 | 69 |
65 public Collection describe(String uuid, String serverUrl, String locale) | 70 public Collection describe(String uuid, String serverUrl, String locale) |
66 throws ServerException | 71 throws ServerException |
67 { | 72 { |
68 System.out.println("DescribeCollectionServiceImpl.describe"); | 73 System.out.println("DescribeCollectionServiceImpl.describe"); |
135 catch (NumberFormatException nfe) { | 140 catch (NumberFormatException nfe) { |
136 // do nothing | 141 // do nothing |
137 } | 142 } |
138 | 143 |
139 Map<String, ThemeList> themeList = parseThemeLists(description); | 144 Map<String, ThemeList> themeList = parseThemeLists(description); |
145 List<Recommendation> recommended = parseRecommendations(description); | |
140 | 146 |
141 Collection c = !themeList.isEmpty() | 147 Collection c = !themeList.isEmpty() |
142 ? new DefaultCollection(uuid, ttl, themeList) | 148 ? new DefaultCollection(uuid, ttl, recommended, themeList) |
143 : new DefaultCollection(uuid, ttl); | 149 : new DefaultCollection(uuid, ttl, recommended); |
144 | 150 |
145 NodeList items = (NodeList) XMLUtils.xpath( | 151 NodeList items = (NodeList) XMLUtils.xpath( |
146 description, | 152 description, |
147 "art:artifact-collection/art:artifacts/art:artifact", | 153 "art:artifact-collection/art:artifacts/art:artifact", |
148 XPathConstants.NODESET, | 154 XPathConstants.NODESET, |
359 return modes; | 365 return modes; |
360 } | 366 } |
361 | 367 |
362 | 368 |
363 protected static List<Facet> extractFacets(Element outmode) { | 369 protected static List<Facet> extractFacets(Element outmode) { |
364 System.out.println("ArtifactDescriptionFactory - extractFacets()"); | 370 System.out.println("DescribeCollectionServiceImpl - extractFacets()"); |
365 | 371 |
366 NodeList facetList = (NodeList) XMLUtils.xpath( | 372 NodeList facetList = (NodeList) XMLUtils.xpath( |
367 outmode, | 373 outmode, |
368 XPATH_FACETS, | 374 XPATH_FACETS, |
369 XPathConstants.NODESET, | 375 XPathConstants.NODESET, |
387 } | 393 } |
388 } | 394 } |
389 | 395 |
390 return facets; | 396 return facets; |
391 } | 397 } |
398 | |
399 | |
400 public static List<Recommendation> parseRecommendations(Document doc) { | |
401 System.out.println("DescribeCollectionServiceImpl.parseRecommendations"); | |
402 | |
403 NodeList list = (NodeList) XMLUtils.xpath( | |
404 doc, | |
405 XPATH_LOADED_RECOMMENDATIONS, | |
406 XPathConstants.NODESET, | |
407 ArtifactNamespaceContext.INSTANCE); | |
408 | |
409 int num = list != null ? list.getLength() : 0; | |
410 | |
411 List<Recommendation> recs = new ArrayList<Recommendation>(num); | |
412 | |
413 String uri = ArtifactNamespaceContext.NAMESPACE_URI; | |
414 | |
415 for (int i = 0; i < num; i++) { | |
416 Element rec = (Element) list.item(i); | |
417 | |
418 String factory = rec.getAttributeNS(uri, "factory"); | |
419 String dbids = rec.getAttributeNS(uri, "db-ids"); | |
420 | |
421 if (factory != null && factory.length() > 0) { | |
422 recs.add(new DefaultRecommendation(factory, dbids)); | |
423 } | |
424 } | |
425 | |
426 return recs; | |
427 } | |
392 } | 428 } |
393 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 429 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |