Mercurial > dive4elements > framework
comparison artifact-database/src/main/java/de/intevation/artifactdatabase/state/FacetActivity.java @ 405:e1738650bfca
FacetActivity: use Chain-of-responsibility pattern to figure out if facet should be active.
artifacts/trunk@5154 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sun, 29 Jul 2012 11:38:40 +0000 |
parents | 4c78c5d2b367 |
children | 15179c77aa1d |
comparison
equal
deleted
inserted
replaced
404:4c78c5d2b367 | 405:e1738650bfca |
---|---|
1 package de.intevation.artifactdatabase.state; | 1 package de.intevation.artifactdatabase.state; |
2 | 2 |
3 import de.intevation.artifacts.Artifact; | 3 import de.intevation.artifacts.Artifact; |
4 | 4 |
5 import java.util.ArrayList; | |
5 import java.util.HashMap; | 6 import java.util.HashMap; |
7 import java.util.List; | |
6 import java.util.Map; | 8 import java.util.Map; |
7 | 9 |
8 public interface FacetActivity | 10 public interface FacetActivity |
9 { | 11 { |
10 public static final FacetActivity ACTIVE = new FacetActivity() { | 12 public static final FacetActivity ACTIVE = new FacetActivity() { |
11 @Override | 13 @Override |
12 public boolean isInitialActive( | 14 public Boolean isInitialActive( |
13 Artifact artifact, | 15 Artifact artifact, |
14 Facet facet, | 16 Facet facet, |
15 String output | 17 String output |
16 ) { | 18 ) { |
17 return true; | 19 return Boolean.TRUE; |
18 } | 20 } |
19 }; | 21 }; |
20 | 22 |
21 public static final FacetActivity INACTIVE = new FacetActivity() { | 23 public static final FacetActivity INACTIVE = new FacetActivity() { |
22 @Override | 24 @Override |
23 public boolean isInitialActive( | 25 public Boolean isInitialActive( |
24 Artifact artifact, | 26 Artifact artifact, |
25 Facet facet, | 27 Facet facet, |
26 String output | 28 String output |
27 ) { | 29 ) { |
28 return false; | 30 return Boolean.FALSE; |
29 } | 31 } |
30 }; | 32 }; |
31 | 33 |
32 boolean isInitialActive(Artifact artifact, Facet facet, String output); | 34 Boolean isInitialActive(Artifact artifact, Facet facet, String output); |
33 | 35 |
34 public static final class Registry { | 36 public static final class Registry { |
35 | 37 |
36 private static final Registry INSTANCE = new Registry(); | 38 private static final Registry INSTANCE = new Registry(); |
37 | 39 |
38 private Map<String, FacetActivity> activities; | 40 private Map<String, List<FacetActivity>> activities; |
39 | 41 |
40 private Registry() { | 42 private Registry() { |
41 activities = new HashMap<String, FacetActivity>(); | 43 activities = new HashMap<String, List<FacetActivity>>(); |
42 } | 44 } |
43 | 45 |
44 public static Registry getInstance() { | 46 public static Registry getInstance() { |
45 return INSTANCE; | 47 return INSTANCE; |
46 } | 48 } |
47 | 49 |
48 public synchronized FacetActivity getActivity(String key) { | 50 public synchronized boolean isInitialActive( |
49 FacetActivity activity = activities.get(key); | 51 String key, |
50 return activity != null ? activity : ACTIVE; | 52 Artifact artifact, |
53 Facet facet, | |
54 String output | |
55 ) { | |
56 List<FacetActivity> activityList = activities.get(key); | |
57 if (activityList == null) { | |
58 return true; | |
59 } | |
60 for (FacetActivity activity: activityList) { | |
61 Boolean isActive = | |
62 activity.isInitialActive(artifact, facet, output); | |
63 if (isActive != null) { | |
64 return isActive; | |
65 } | |
66 } | |
67 return true; | |
51 } | 68 } |
52 | 69 |
53 public synchronized void register(String key, FacetActivity activity) { | 70 public synchronized void register(String key, FacetActivity activity) { |
54 activities.put(key, activity); | 71 List<FacetActivity> activityList = activities.get(key); |
72 if (activityList == null) { | |
73 activityList = new ArrayList<FacetActivity>(3); | |
74 activities.put(key, activityList); | |
75 } | |
76 activityList.add(activity); | |
55 } | 77 } |
56 } | 78 } |
57 } | 79 } |
58 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : | 80 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |