Mercurial > dive4elements > framework
annotate artifact-database/src/main/java/de/intevation/artifactdatabase/state/FacetActivity.java @ 436:15179c77aa1d flys-2.9.3
Documentation, so that readers know a tiny bit more what is going on.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Tue, 16 Oct 2012 15:08:43 +0200 |
parents | e1738650bfca |
children | f3bf22423c95 |
rev | line source |
---|---|
403
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.artifactdatabase.state; |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
2 |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
3 import de.intevation.artifacts.Artifact; |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
4 |
405
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
5 import java.util.ArrayList; |
403
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
6 import java.util.HashMap; |
405
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
7 import java.util.List; |
403
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
8 import java.util.Map; |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
9 |
436
15179c77aa1d
Documentation, so that readers know a tiny bit more what is going on.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
405
diff
changeset
|
10 |
15179c77aa1d
Documentation, so that readers know a tiny bit more what is going on.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
405
diff
changeset
|
11 /** Magical system. */ |
403
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
12 public interface FacetActivity |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
13 { |
436
15179c77aa1d
Documentation, so that readers know a tiny bit more what is going on.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
405
diff
changeset
|
14 /** Static 'activity' that lets all facets be active. */ |
403
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
15 public static final FacetActivity ACTIVE = new FacetActivity() { |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
16 @Override |
405
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
17 public Boolean isInitialActive( |
403
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
18 Artifact artifact, |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
19 Facet facet, |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
20 String output |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
21 ) { |
405
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
22 return Boolean.TRUE; |
403
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
23 } |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
24 }; |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
25 |
436
15179c77aa1d
Documentation, so that readers know a tiny bit more what is going on.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
405
diff
changeset
|
26 /** Static 'activity' that lets all facets be inactive. */ |
403
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
27 public static final FacetActivity INACTIVE = new FacetActivity() { |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
28 @Override |
405
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
29 public Boolean isInitialActive( |
403
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
30 Artifact artifact, |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
31 Facet facet, |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
32 String output |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
33 ) { |
405
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
34 return Boolean.FALSE; |
403
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
35 } |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
36 }; |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
37 |
405
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
38 Boolean isInitialActive(Artifact artifact, Facet facet, String output); |
403
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
39 |
436
15179c77aa1d
Documentation, so that readers know a tiny bit more what is going on.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
405
diff
changeset
|
40 /** Singleton registry, that maps artifact names to the activities, which |
15179c77aa1d
Documentation, so that readers know a tiny bit more what is going on.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
405
diff
changeset
|
41 * decide whether or not a facet should be (initially) active. */ |
403
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
42 public static final class Registry { |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
43 |
436
15179c77aa1d
Documentation, so that readers know a tiny bit more what is going on.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
405
diff
changeset
|
44 /** Singleton instance. */ |
403
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
45 private static final Registry INSTANCE = new Registry(); |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
46 |
405
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
47 private Map<String, List<FacetActivity>> activities; |
403
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
48 |
436
15179c77aa1d
Documentation, so that readers know a tiny bit more what is going on.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
405
diff
changeset
|
49 /** Private singleton constructor for the Facet-Activity-Registry. */ |
403
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
50 private Registry() { |
405
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
51 activities = new HashMap<String, List<FacetActivity>>(); |
403
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
52 } |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
53 |
436
15179c77aa1d
Documentation, so that readers know a tiny bit more what is going on.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
405
diff
changeset
|
54 /** Access Singleton instance. */ |
404
4c78c5d2b367
FacetActivity: Made Registry.getInstance() access static.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
403
diff
changeset
|
55 public static Registry getInstance() { |
403
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
56 return INSTANCE; |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
57 } |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
58 |
436
15179c77aa1d
Documentation, so that readers know a tiny bit more what is going on.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
405
diff
changeset
|
59 /** Queries whether a given facet should be active or not. */ |
405
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
60 public synchronized boolean isInitialActive( |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
61 String key, |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
62 Artifact artifact, |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
63 Facet facet, |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
64 String output |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
65 ) { |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
66 List<FacetActivity> activityList = activities.get(key); |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
67 if (activityList == null) { |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
68 return true; |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
69 } |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
70 for (FacetActivity activity: activityList) { |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
71 Boolean isActive = |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
72 activity.isInitialActive(artifact, facet, output); |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
73 if (isActive != null) { |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
74 return isActive; |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
75 } |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
76 } |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
77 return true; |
403
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
78 } |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
79 |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
80 public synchronized void register(String key, FacetActivity activity) { |
405
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
81 List<FacetActivity> activityList = activities.get(key); |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
82 if (activityList == null) { |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
83 activityList = new ArrayList<FacetActivity>(3); |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
84 activities.put(key, activityList); |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
85 } |
e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
404
diff
changeset
|
86 activityList.add(activity); |
403
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
87 } |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
88 } |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
89 } |
bd76529d612b
FacetActivity: Added interface and registry to decide if a facet should initially active or not.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
90 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |