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 :

http://dive4elements.wald.intevation.org