Mercurial > dive4elements > river
comparison 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 |
comparison
equal
deleted
inserted
replaced
845:4db672cdacb2 | 846:e47ef0ca8f33 |
---|---|
1 package de.intevation.flys.client.shared.model; | 1 package de.intevation.flys.client.shared.model; |
2 | 2 |
3 import java.util.ArrayList; | |
4 import java.util.List; | |
3 import java.util.Map; | 5 import java.util.Map; |
4 import java.util.HashMap; | 6 import java.util.HashMap; |
5 | 7 |
6 import java.io.Serializable; | 8 import java.io.Serializable; |
7 | 9 |
8 public class ToLoad implements Serializable | 10 public class ToLoad implements Serializable |
9 { | 11 { |
12 public static final String SYNTHETIC_KEY = "key-"; | |
13 | |
10 protected Map<String, Map<String, ArtifactFilter>> artifacts; | 14 protected Map<String, Map<String, ArtifactFilter>> artifacts; |
11 | 15 |
12 public ToLoad() { | 16 public ToLoad() { |
13 artifacts = new HashMap<String, Map<String, ArtifactFilter>>(); | 17 artifacts = new HashMap<String, Map<String, ArtifactFilter>>(); |
14 } | 18 } |
15 | 19 |
16 public static final String uniqueKey(Map<?, ?> map) { | 20 public static final String uniqueKey(Map<?, ?> map) { |
17 int idx = map.size(); | 21 int idx = map.size(); |
18 | 22 |
19 String key = "key-" + idx; | 23 String key = SYNTHETIC_KEY + idx; |
20 while (map.containsKey(key)) { | 24 while (map.containsKey(key)) { |
21 key = "key-" + ++idx; | 25 key = SYNTHETIC_KEY + ++idx; |
22 } | 26 } |
23 return key; | 27 return key; |
24 } | 28 } |
25 | 29 |
26 public void add( | 30 public void add( |
51 } | 55 } |
52 | 56 |
53 public boolean isEmpty() { | 57 public boolean isEmpty() { |
54 return artifacts.isEmpty(); | 58 return artifacts.isEmpty(); |
55 } | 59 } |
60 | |
61 public List<Recommendation> toRecommendations() { | |
62 List<Recommendation> recommendations = new ArrayList<Recommendation>(); | |
63 | |
64 for (Map.Entry<String, Map<String, ArtifactFilter>> all: | |
65 artifacts.entrySet() | |
66 ) { | |
67 String masterArtifact = all.getKey(); | |
68 | |
69 if (masterArtifact.startsWith(SYNTHETIC_KEY)) { // system data | |
70 masterArtifact = null; | |
71 } | |
72 | |
73 for (Map.Entry<String, ArtifactFilter> entry: | |
74 all.getValue().entrySet() | |
75 ) { | |
76 String factory = entry.getKey(); | |
77 ArtifactFilter artifactFilter = entry.getValue(); | |
78 | |
79 String ids; | |
80 Recommendation.Filter filter; | |
81 | |
82 if (masterArtifact == null) { // system data | |
83 ids = artifactFilter.collectIds(); | |
84 filter = null; | |
85 } | |
86 else { // user specific | |
87 ids = null; | |
88 filter = artifactFilter.toFilter(); | |
89 } | |
90 | |
91 Recommendation recommendation = new Recommendation( | |
92 factory, ids, masterArtifact, filter); | |
93 | |
94 recommendations.add(recommendation); | |
95 } | |
96 } | |
97 | |
98 return recommendations; | |
99 } | |
56 } | 100 } |
57 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 101 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |