Mercurial > dive4elements > river
diff 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 |
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/server/DescribeCollectionServiceImpl.java Thu Jul 21 16:06:29 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/server/DescribeCollectionServiceImpl.java Fri Jul 22 12:23:36 2011 +0000 @@ -31,6 +31,7 @@ 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.DefaultRecommendation; import de.intevation.flys.client.shared.model.DefaultTheme; import de.intevation.flys.client.shared.model.ChartMode; import de.intevation.flys.client.shared.model.ExportMode; @@ -38,6 +39,7 @@ import de.intevation.flys.client.shared.model.ReportMode; import de.intevation.flys.client.shared.model.Facet; import de.intevation.flys.client.shared.model.OutputMode; +import de.intevation.flys.client.shared.model.Recommendation; import de.intevation.flys.client.shared.model.Theme; import de.intevation.flys.client.shared.model.ThemeList; import de.intevation.flys.client.client.services.DescribeCollectionService; @@ -61,6 +63,9 @@ public static final String XPATH_FACETS = "art:facets/art:facet"; + public static final String XPATH_LOADED_RECOMMENDATIONS = + "/art:artifact-collection/art:attribute/art:loaded-recommendations/art:recommendation"; + public Collection describe(String uuid, String serverUrl, String locale) throws ServerException @@ -137,10 +142,11 @@ } Map<String, ThemeList> themeList = parseThemeLists(description); + List<Recommendation> recommended = parseRecommendations(description); Collection c = !themeList.isEmpty() - ? new DefaultCollection(uuid, ttl, themeList) - : new DefaultCollection(uuid, ttl); + ? new DefaultCollection(uuid, ttl, recommended, themeList) + : new DefaultCollection(uuid, ttl, recommended); NodeList items = (NodeList) XMLUtils.xpath( description, @@ -361,7 +367,7 @@ protected static List<Facet> extractFacets(Element outmode) { - System.out.println("ArtifactDescriptionFactory - extractFacets()"); + System.out.println("DescribeCollectionServiceImpl - extractFacets()"); NodeList facetList = (NodeList) XMLUtils.xpath( outmode, @@ -389,5 +395,35 @@ return facets; } + + + public static List<Recommendation> parseRecommendations(Document doc) { + System.out.println("DescribeCollectionServiceImpl.parseRecommendations"); + + NodeList list = (NodeList) XMLUtils.xpath( + doc, + XPATH_LOADED_RECOMMENDATIONS, + XPathConstants.NODESET, + ArtifactNamespaceContext.INSTANCE); + + int num = list != null ? list.getLength() : 0; + + List<Recommendation> recs = new ArrayList<Recommendation>(num); + + String uri = ArtifactNamespaceContext.NAMESPACE_URI; + + for (int i = 0; i < num; i++) { + Element rec = (Element) list.item(i); + + String factory = rec.getAttributeNS(uri, "factory"); + String dbids = rec.getAttributeNS(uri, "db-ids"); + + if (factory != null && factory.length() > 0) { + recs.add(new DefaultRecommendation(factory, dbids)); + } + } + + return recs; + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :