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 :

http://dive4elements.wald.intevation.org