annotate flys-client/src/main/java/de/intevation/flys/client/shared/model/ToLoad.java @ 1271:3e7717b6e2bc

Implement equals und hashCode for Recommendation and associates. flys-client/trunk@2841 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Tue, 27 Sep 2011 13:46:33 +0000
parents e47ef0ca8f33
children 01b18db3b288
rev   line source
822
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.client.shared.model;
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2
846
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
3 import java.util.ArrayList;
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
4 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
5 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
6 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
7
822
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
8 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
9
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10 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
11 {
846
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
12 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
13
831
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
14 protected Map<String, Map<String, ArtifactFilter>> artifacts;
826
2f65c742803f Datacage: Aggregate items to load for easier filtering facets
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 822
diff changeset
15
831
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
16 public ToLoad() {
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
17 artifacts = new HashMap<String, Map<String, ArtifactFilter>>();
822
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18 }
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19
834
77469d7f3c93 Generate unique keys for anonymous artifacts (aka static data).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 831
diff changeset
20 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
21 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
22
846
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
23 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
24 while (map.containsKey(key)) {
846
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
25 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
26 }
77469d7f3c93 Generate unique keys for anonymous artifacts (aka static data).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 831
diff changeset
27 return key;
77469d7f3c93 Generate unique keys for anonymous artifacts (aka static data).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 831
diff changeset
28 }
77469d7f3c93 Generate unique keys for anonymous artifacts (aka static data).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 831
diff changeset
29
831
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
30 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
31 String artifactName,
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
32 String factory,
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
33 String out,
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
34 String name,
837
29966a53cfeb Datacage: Use 'ids' instead of 'num' in user specific part, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 834
diff changeset
35 String ids
831
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
36 ) {
834
77469d7f3c93 Generate unique keys for anonymous artifacts (aka static data).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 831
diff changeset
37 if (artifactName == null) {
77469d7f3c93 Generate unique keys for anonymous artifacts (aka static data).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 831
diff changeset
38 artifactName = uniqueKey(artifacts);
77469d7f3c93 Generate unique keys for anonymous artifacts (aka static data).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 831
diff changeset
39 }
826
2f65c742803f Datacage: Aggregate items to load for easier filtering facets
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 822
diff changeset
40
831
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
41 Map<String, 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
42
831
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
43 if (artifact == null) {
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
44 artifact = new HashMap<String, ArtifactFilter>();
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
45 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
46 }
2f65c742803f Datacage: Aggregate items to load for easier filtering facets
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 822
diff changeset
47
831
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
48 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
49 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
50 filter = new ArtifactFilter(factory);
9101b4d64666 Datacage: Re-written ToLoad to feature the new filter models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 826
diff changeset
51 artifact.put(factory, filter);
826
2f65c742803f Datacage: Aggregate items to load for easier filtering facets
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 822
diff changeset
52 }
822
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
53
837
29966a53cfeb Datacage: Use 'ids' instead of 'num' in user specific part, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 834
diff changeset
54 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
55 }
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
56
826
2f65c742803f Datacage: Aggregate items to load for easier filtering facets
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 822
diff changeset
57 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
58 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
59 }
846
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
60
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
61 public List<Recommendation> toRecommendations() {
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
62 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
63
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
64 for (Map.Entry<String, Map<String, ArtifactFilter>> all:
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
65 artifacts.entrySet()
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
66 ) {
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
67 String masterArtifact = all.getKey();
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
68
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
69 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
70 masterArtifact = null;
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
71 }
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
72
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
73 for (Map.Entry<String, ArtifactFilter> entry:
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
74 all.getValue().entrySet()
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
75 ) {
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
76 String factory = entry.getKey();
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
77 ArtifactFilter artifactFilter = entry.getValue();
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
78
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
79 String ids;
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
80 Recommendation.Filter filter;
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
81
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
82 if (masterArtifact == null) { // system data
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
83 ids = artifactFilter.collectIds();
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
84 filter = null;
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
85 }
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
86 else { // user specific
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
87 ids = null;
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
88 filter = artifactFilter.toFilter();
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
89 }
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 Recommendation recommendation = new Recommendation(
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
92 factory, ids, masterArtifact, filter);
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
93
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
94 recommendations.add(recommendation);
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 }
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
97
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
98 return recommendations;
e47ef0ca8f33 Compile a list of recommendations out of
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 837
diff changeset
99 }
822
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
100 }
ffb98b228b3c Add code to extract data to load from datacage tree.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
101 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org