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 :

http://dive4elements.wald.intevation.org