Mercurial > dive4elements > river
comparison gwt-client/src/main/java/org/dive4elements/river/client/shared/model/ToLoad.java @ 5838:5aa05a7a34b7
Rename modules to more fitting names.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 15:23:37 +0200 |
parents | flys-client/src/main/java/org/dive4elements/river/client/shared/model/ToLoad.java@821a02bbfb4e |
children | 172338b1407f |
comparison
equal
deleted
inserted
replaced
5837:d9901a08d0a6 | 5838:5aa05a7a34b7 |
---|---|
1 package org.dive4elements.river.client.shared.model; | |
2 | |
3 import java.util.ArrayList; | |
4 import java.util.List; | |
5 import java.util.Map; | |
6 import java.util.HashMap; | |
7 | |
8 import java.io.Serializable; | |
9 | |
10 public class ToLoad implements Serializable | |
11 { | |
12 | |
13 public class StringPair { | |
14 public String first; | |
15 public String second; | |
16 public StringPair(String first, String second) { | |
17 this.first = first; | |
18 this.second = second; | |
19 } | |
20 public int hashCode() { | |
21 return first.hashCode() + second.hashCode(); | |
22 } | |
23 public boolean equals(StringPair other) { | |
24 return (this.second.equals(other.second)) && (this.first.equals(other.first)); | |
25 } | |
26 } | |
27 public static final String SYNTHETIC_KEY = "key-"; | |
28 | |
29 protected Map<String, Map<StringPair, ArtifactFilter>> artifacts; | |
30 | |
31 public ToLoad() { | |
32 artifacts = new HashMap<String, Map<StringPair, ArtifactFilter>>(); | |
33 } | |
34 | |
35 public static final String uniqueKey(Map<?, ?> map) { | |
36 int idx = map.size(); | |
37 | |
38 String key = SYNTHETIC_KEY + idx; | |
39 while (map.containsKey(key)) { | |
40 key = SYNTHETIC_KEY + ++idx; | |
41 } | |
42 return key; | |
43 } | |
44 | |
45 public void add( | |
46 String artifactName, | |
47 String factory, | |
48 String out, | |
49 String name, | |
50 String ids, | |
51 String displayName | |
52 ) { | |
53 if (artifactName == null) { | |
54 artifactName = uniqueKey(artifacts); | |
55 } | |
56 | |
57 Map<StringPair, ArtifactFilter> artifact = artifacts.get(artifactName); | |
58 | |
59 if (artifact == null) { | |
60 artifact = new HashMap<StringPair, ArtifactFilter>(); | |
61 artifacts.put(artifactName, artifact); | |
62 } | |
63 | |
64 ArtifactFilter filter = artifact.get(factory); | |
65 if (filter == null) { | |
66 filter = new ArtifactFilter(factory); | |
67 artifact.put(new StringPair(factory, displayName), filter); | |
68 } | |
69 | |
70 filter.add(out, name, ids); | |
71 } | |
72 | |
73 public boolean isEmpty() { | |
74 return artifacts.isEmpty(); | |
75 } | |
76 | |
77 public List<Recommendation> toRecommendations() { | |
78 List<Recommendation> recommendations = new ArrayList<Recommendation>(); | |
79 | |
80 for (Map.Entry<String, Map<StringPair, ArtifactFilter>> all: | |
81 artifacts.entrySet() | |
82 ) { | |
83 String masterArtifact = all.getKey(); | |
84 | |
85 if (masterArtifact.startsWith(SYNTHETIC_KEY)) { // system data | |
86 masterArtifact = null; | |
87 } | |
88 | |
89 for (Map.Entry<StringPair, ArtifactFilter> entry: | |
90 all.getValue().entrySet() | |
91 ) { | |
92 StringPair pair = entry.getKey(); | |
93 String factory = pair.first; | |
94 ArtifactFilter artifactFilter = entry.getValue(); | |
95 | |
96 String ids; | |
97 Recommendation.Filter filter; | |
98 | |
99 if (masterArtifact == null) { // system data | |
100 ids = artifactFilter.collectIds(); | |
101 filter = null; | |
102 } | |
103 else { // user specific | |
104 ids = null; | |
105 filter = artifactFilter.toFilter(); | |
106 } | |
107 | |
108 Recommendation recommendation = new Recommendation( | |
109 factory, ids, masterArtifact, filter); | |
110 recommendation.setDisplayName(pair.second); | |
111 | |
112 recommendations.add(recommendation); | |
113 } | |
114 } | |
115 | |
116 return recommendations; | |
117 } | |
118 } | |
119 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |