Mercurial > dive4elements > river
diff flys-client/src/main/java/de/intevation/flys/client/shared/model/ToLoad.java @ 846:e47ef0ca8f33
Compile a list of recommendations out of
flys-client/trunk@2570 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 24 Aug 2011 16:52:40 +0000 |
parents | 29966a53cfeb |
children | 01b18db3b288 |
line wrap: on
line diff
--- 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<String, Map<String, ArtifactFilter>> 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<Recommendation> toRecommendations() { + List<Recommendation> recommendations = new ArrayList<Recommendation>(); + + for (Map.Entry<String, Map<String, ArtifactFilter>> all: + artifacts.entrySet() + ) { + String masterArtifact = all.getKey(); + + if (masterArtifact.startsWith(SYNTHETIC_KEY)) { // system data + masterArtifact = null; + } + + for (Map.Entry<String, ArtifactFilter> 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 :