# HG changeset patch # User Sascha L. Teichmann # Date 1314204760 0 # Node ID e47ef0ca8f3373e179261c85dbba374527f1a7f0 # Parent 4db672cdacb24d565b5a2be8cd8fdf6ae94dabbd Compile a list of recommendations out of flys-client/trunk@2570 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 4db672cdacb2 -r e47ef0ca8f33 flys-client/ChangeLog --- a/flys-client/ChangeLog Wed Aug 24 16:06:48 2011 +0000 +++ b/flys-client/ChangeLog Wed Aug 24 16:52:40 2011 +0000 @@ -1,3 +1,14 @@ +2011-08-24 Sascha L. Teichmann + + * src/main/java/de/intevation/flys/client/shared/model/ToLoad.java + (toRecommendations): Compile a list of recommendations out of + datacage tree selections. A lot of model conversions. :-/ + + * src/main/java/de/intevation/flys/client/shared/model/ArtifactFilter.java, + src/main/java/de/intevation/flys/client/shared/model/FacetFilter.java, + src/main/java/de/intevation/flys/client/shared/model/OutFilter.java: + Added code to convert the models. + 2011-08-24 Sascha L. Teichmann * src/main/java/de/intevation/flys/client/client/services/ArtifactService.java, diff -r 4db672cdacb2 -r e47ef0ca8f33 flys-client/src/main/java/de/intevation/flys/client/shared/model/ArtifactFilter.java --- a/flys-client/src/main/java/de/intevation/flys/client/shared/model/ArtifactFilter.java Wed Aug 24 16:06:48 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/shared/model/ArtifactFilter.java Wed Aug 24 16:52:40 2011 +0000 @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.Map; +import java.util.List; public class ArtifactFilter implements Serializable @@ -42,5 +43,22 @@ } outFilter.add(name, num); } + + public String collectIds() { + StringBuilder sb = new StringBuilder(); + for (OutFilter outFilter: outFilters.values()) { + outFilter.collectIds(sb); + } + return sb.toString(); + } + + public Recommendation.Filter toFilter() { + Recommendation.Filter rf = new Recommendation.Filter(); + for (Map.Entry entry: outFilters.entrySet()) { + List facets = entry.getValue().toFacets(); + rf.add(entry.getKey(), facets); + } + return rf; + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r 4db672cdacb2 -r e47ef0ca8f33 flys-client/src/main/java/de/intevation/flys/client/shared/model/FacetFilter.java --- a/flys-client/src/main/java/de/intevation/flys/client/shared/model/FacetFilter.java Wed Aug 24 16:06:48 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/shared/model/FacetFilter.java Wed Aug 24 16:52:40 2011 +0000 @@ -46,5 +46,18 @@ FacetFilter o = (FacetFilter)other; return equals(o.name, name) && equals(o.ids, ids); } + + public void collectIds(StringBuilder sb) { + if (ids != null) { + if (sb.length() > 0) { + sb.append(' '); + } + sb.append(ids); + } + } + + public Recommendation.Facet toFacet() { + return new Recommendation.Facet(name, ids); + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r 4db672cdacb2 -r e47ef0ca8f33 flys-client/src/main/java/de/intevation/flys/client/shared/model/OutFilter.java --- a/flys-client/src/main/java/de/intevation/flys/client/shared/model/OutFilter.java Wed Aug 24 16:06:48 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/shared/model/OutFilter.java Wed Aug 24 16:52:40 2011 +0000 @@ -43,5 +43,20 @@ public void setFacetFilters(List facetFilters) { this.facetFilters = facetFilters; } + + public void collectIds(StringBuilder sb) { + for (FacetFilter facetFilter: facetFilters) { + facetFilter.collectIds(sb); + } + } + + public List toFacets() { + List facets = + new ArrayList(facetFilters.size()); + for (FacetFilter facetFilter: facetFilters) { + facets.add(facetFilter.toFacet()); + } + return facets; + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r 4db672cdacb2 -r e47ef0ca8f33 flys-client/src/main/java/de/intevation/flys/client/shared/model/ToLoad.java --- a/flys-client/src/main/java/de/intevation/flys/client/shared/model/ToLoad.java Wed Aug 24 16:06:48 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/shared/model/ToLoad.java Wed Aug 24 16:52:40 2011 +0000 @@ -1,5 +1,7 @@ package de.intevation.flys.client.shared.model; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.HashMap; @@ -7,6 +9,8 @@ public class ToLoad implements Serializable { + public static final String SYNTHETIC_KEY = "key-"; + protected Map> artifacts; public ToLoad() { @@ -16,9 +20,9 @@ public static final String uniqueKey(Map map) { int idx = map.size(); - String key = "key-" + idx; + String key = SYNTHETIC_KEY + idx; while (map.containsKey(key)) { - key = "key-" + ++idx; + key = SYNTHETIC_KEY + ++idx; } return key; } @@ -53,5 +57,45 @@ public boolean isEmpty() { return artifacts.isEmpty(); } + + public List toRecommendations() { + List recommendations = new ArrayList(); + + for (Map.Entry> all: + artifacts.entrySet() + ) { + String masterArtifact = all.getKey(); + + if (masterArtifact.startsWith(SYNTHETIC_KEY)) { // system data + masterArtifact = null; + } + + for (Map.Entry entry: + all.getValue().entrySet() + ) { + String factory = entry.getKey(); + ArtifactFilter artifactFilter = entry.getValue(); + + String ids; + Recommendation.Filter filter; + + if (masterArtifact == null) { // system data + ids = artifactFilter.collectIds(); + filter = null; + } + else { // user specific + ids = null; + filter = artifactFilter.toFilter(); + } + + Recommendation recommendation = new Recommendation( + factory, ids, masterArtifact, filter); + + recommendations.add(recommendation); + } + } + + return recommendations; + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :