Java Reference
In-Depth Information
1. import java.util.ArrayList;
2. import java.util.ListIterator;
3. public class Task implements ProjectItem{
4. private String name;
5. private ArrayList projectItems = new ArrayList();
6. private Contact owner;
7. private String details;
8. private ProjectItem parent;
9. private boolean primaryTask;
10.
11. public Task(ProjectItem newParent){
12. this(newParent, "", "", null, false);
13. }
14. public Task(ProjectItem newParent, String newName,
15. String newDetails, Contact newOwner, boolean newPrimaryTask){
16. parent = newParent;
17. name = newName;
18. owner = newOwner;
19. details = newDetails;
20. primaryTask = newPrimaryTask;
21. }
22.
23. public Contact getOwner(){
24. if (owner == null){
25. return parent.getOwner();
26. }
27. else{
28. return owner;
29. }
30. }
31.
32. public String getDetails(){
33. if (primaryTask){
34. return details;
35. }
36. else{
37. return parent.getDetails() + EOL_STRING + "\t" + details;
38. }
39. }
40.
41. public String getName(){ return name; }
42. public ArrayList getProjectItems(){ return projectItems; }
43. public ProjectItem getParent(){ return parent; }
44. public boolean isPrimaryTask(){ return primaryTask; }
45.
46. public void setName(String newName){ name = newName; }
47. public void setOwner(Contact newOwner){ owner = newOwner; }
48. public void setParent(ProjectItem newParent){ parent = newParent; }
49. public void setPrimaryTask(boolean newPrimaryTask){ primaryTask = newPrimaryTask; }
50. public void setDetails(String newDetails){ details = newDetails; }
51.
52. public void addProjectItem(ProjectItem element){
53. if (!projectItems.contains(element)){
54. projectItems.add(element);
55. }
56. }
57.
58. public void removeProjectItem(ProjectItem element){
59. projectItems.remove(element);
60. }
61.
62. public String toString(){
63. return name;
64. }
65. }
The Chain of Responsibility behavior is manifested in the getOwner and getDetails methods of Task . For
getOwner , a Task will either return its internally referenced owner (if non-null), or that of its parent. If the parent
was a Task and its owner was null as well, the method call is passed on to the next parent until it eventually
encountered a non-null owner or it reaches the Project itself. This makes it easy to set up a group of Tasks
where the same individual is the designated owner, responsible for the completion of a Task and all subtasks of
Tasks .
The getDetails method is another example of Chain of Responsibility behavior, but it behaves somewhat
differently. It calls the getDetails method of each parent until it reaches a Task or Project that is identified as
Search WWH ::




Custom Search