Mercurial > dive4elements > river
annotate flys-client/src/main/java/de/intevation/flys/client/shared/model/ToLoad.java @ 870:d5fb88ba99d2
Display status message and progress information in the WSPLGEN loading panel.
flys-client/trunk@2690 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Fri, 09 Sep 2011 15:08:15 +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 : |