annotate gwt-client/src/main/java/org/dive4elements/river/client/shared/model/ToLoad.java @ 5861:172338b1407f

GWT client: Added copyright header.
author Sascha L. Teichmann <teichmann@intevation.de>
date Sun, 28 Apr 2013 14:30:15 +0200
parents 5aa05a7a34b7
children ea9eef426962
rev   line source
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
6 * documentation coming with Dive4Elements River for details.
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
9 package org.dive4elements.river.client.shared.model;
822
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10
846
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
11 import java.util.ArrayList;
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
12 import java.util.List;
826
2f65c742803f Datacage: Aggregate items to load for easier filtering facets
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 822
diff changeset
13 import java.util.Map;
2f65c742803f Datacage: Aggregate items to load for easier filtering facets
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 822
diff changeset
14 import java.util.HashMap;
2f65c742803f Datacage: Aggregate items to load for easier filtering facets
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 822
diff changeset
15
822
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16 import java.io.Serializable;
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18 public class ToLoad implements Serializable
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19 {
1352
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
20
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
21 public class StringPair {
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
22 public String first;
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
23 public String second;
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
24 public StringPair(String first, String second) {
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
25 this.first = first;
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
26 this.second = second;
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
27 }
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
28 public int hashCode() {
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
29 return first.hashCode() + second.hashCode();
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
30 }
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
31 public boolean equals(StringPair other) {
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
32 return (this.second.equals(other.second)) && (this.first.equals(other.first));
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
33 }
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
34 }
846
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
35 public static final String SYNTHETIC_KEY = "key-";
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
36
1352
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
37 protected Map<String, Map<StringPair, ArtifactFilter>> artifacts;
826
2f65c742803f Datacage: Aggregate items to load for easier filtering facets
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 822
diff changeset
38
831
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
39 public ToLoad() {
1352
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
40 artifacts = new HashMap<String, Map<StringPair, ArtifactFilter>>();
822
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41 }
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
42
834
77469d7f3c93 Generate unique keys for anonymous artifacts (aka static data).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 831
diff changeset
43 public static final String uniqueKey(Map<?, ?> map) {
77469d7f3c93 Generate unique keys for anonymous artifacts (aka static data).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 831
diff changeset
44 int idx = map.size();
77469d7f3c93 Generate unique keys for anonymous artifacts (aka static data).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 831
diff changeset
45
846
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
46 String key = SYNTHETIC_KEY + idx;
834
77469d7f3c93 Generate unique keys for anonymous artifacts (aka static data).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 831
diff changeset
47 while (map.containsKey(key)) {
846
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
48 key = SYNTHETIC_KEY + ++idx;
834
77469d7f3c93 Generate unique keys for anonymous artifacts (aka static data).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 831
diff changeset
49 }
77469d7f3c93 Generate unique keys for anonymous artifacts (aka static data).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 831
diff changeset
50 return key;
77469d7f3c93 Generate unique keys for anonymous artifacts (aka static data).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 831
diff changeset
51 }
77469d7f3c93 Generate unique keys for anonymous artifacts (aka static data).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 831
diff changeset
52
831
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
53 public void add(
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
54 String artifactName,
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
55 String factory,
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
56 String out,
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
57 String name,
1352
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
58 String ids,
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
59 String displayName
831
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
60 ) {
834
77469d7f3c93 Generate unique keys for anonymous artifacts (aka static data).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 831
diff changeset
61 if (artifactName == null) {
77469d7f3c93 Generate unique keys for anonymous artifacts (aka static data).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 831
diff changeset
62 artifactName = uniqueKey(artifacts);
77469d7f3c93 Generate unique keys for anonymous artifacts (aka static data).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 831
diff changeset
63 }
826
2f65c742803f Datacage: Aggregate items to load for easier filtering facets
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 822
diff changeset
64
1352
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
65 Map<StringPair, ArtifactFilter> artifact = artifacts.get(artifactName);
826
2f65c742803f Datacage: Aggregate items to load for easier filtering facets
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 822
diff changeset
66
831
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
67 if (artifact == null) {
1352
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
68 artifact = new HashMap<StringPair, ArtifactFilter>();
831
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
69 artifacts.put(artifactName, artifact);
826
2f65c742803f Datacage: Aggregate items to load for easier filtering facets
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 822
diff changeset
70 }
2f65c742803f Datacage: Aggregate items to load for easier filtering facets
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 822
diff changeset
71
831
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
72 ArtifactFilter filter = artifact.get(factory);
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
73 if (filter == null) {
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
74 filter = new ArtifactFilter(factory);
1352
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
75 artifact.put(new StringPair(factory, displayName), filter);
826
2f65c742803f Datacage: Aggregate items to load for easier filtering facets
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 822
diff changeset
76 }
822
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
77
837
29966a53cfeb Datacage: Use 'ids' instead of 'num' in user specific part, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 834
diff changeset
78 filter.add(out, name, ids);
822
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
79 }
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
80
826
2f65c742803f Datacage: Aggregate items to load for easier filtering facets
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 822
diff changeset
81 public boolean isEmpty() {
831
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
82 return artifacts.isEmpty();
822
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
83 }
846
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
84
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
85 public List<Recommendation> toRecommendations() {
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
86 List<Recommendation> recommendations = new ArrayList<Recommendation>();
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
87
1352
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
88 for (Map.Entry<String, Map<StringPair, ArtifactFilter>> all:
846
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
89 artifacts.entrySet()
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
90 ) {
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
91 String masterArtifact = all.getKey();
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
92
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
93 if (masterArtifact.startsWith(SYNTHETIC_KEY)) { // system data
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
94 masterArtifact = null;
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
95 }
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
96
1352
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
97 for (Map.Entry<StringPair, ArtifactFilter> entry:
846
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
98 all.getValue().entrySet()
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
99 ) {
1352
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
100 StringPair pair = entry.getKey();
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
101 String factory = pair.first;
846
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
102 ArtifactFilter artifactFilter = entry.getValue();
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
103
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
104 String ids;
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
105 Recommendation.Filter filter;
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
106
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
107 if (masterArtifact == null) { // system data
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
108 ids = artifactFilter.collectIds();
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
109 filter = null;
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
110 }
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
111 else { // user specific
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
112 ids = null;
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
113 filter = artifactFilter.toFilter();
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
114 }
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
115
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
116 Recommendation recommendation = new Recommendation(
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
117 factory, ids, masterArtifact, filter);
1352
01b18db3b288 In WDiff datacage input make names survive backjumps.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 846
diff changeset
118 recommendation.setDisplayName(pair.second);
846
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
119
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
120 recommendations.add(recommendation);
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
121 }
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
122 }
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
123
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
124 return recommendations;
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
125 }
822
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
126 }
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
127 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org