1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.admincentral.badge;
35
36 import static info.magnolia.task.Task.Status.*;
37
38 import info.magnolia.context.Context;
39 import info.magnolia.event.EventBus;
40 import info.magnolia.event.HandlerRegistration;
41 import info.magnolia.i18nsystem.SimpleTranslator;
42 import info.magnolia.task.Task;
43 import info.magnolia.task.TasksManager;
44 import info.magnolia.task.event.TaskEvent;
45 import info.magnolia.task.event.TaskEventHandler;
46 import info.magnolia.ui.api.event.AdmincentralEventBus;
47 import info.magnolia.ui.api.location.DefaultLocation;
48 import info.magnolia.ui.api.location.Location;
49 import info.magnolia.ui.api.location.LocationController;
50 import info.magnolia.ui.api.shell.CloseAppEvent;
51
52 import java.util.Arrays;
53 import java.util.Collections;
54 import java.util.List;
55
56 import javax.inject.Inject;
57 import javax.inject.Named;
58
59
60
61
62 public class TaskBadge extends AbstractBadge implements TaskEventHandler {
63
64 private final TasksManager tasksManager;
65 private final HandlerRegistration registration;
66 static final List<Task.Status> CREATED = Collections.singletonList(Created);
67 static final List<Task.Status> ASSIGNED = Arrays.asList(InProgress, Scheduled);
68 private final EventBus eventBus;
69
70 @Inject
71 TaskBadge(LocationController controller, Context context, SimpleTranslator i18n, TasksManager tasksManager, @Named(AdmincentralEventBus.NAME) EventBus eventBus) {
72 super(controller, context, i18n);
73 this.tasksManager = tasksManager;
74 this.registration = eventBus.addHandler(TaskEvent.class,this);
75 this.eventBus = eventBus;
76
77 update();
78 }
79
80 @Override
81 Status getStatus() {
82 long newItems = tasksManager.getTasksAmountByUserAndStatus(getUserName(), CREATED);
83 int assignedItems = tasksManager.findTasksByAssigneeAndStatus(getUserName(), ASSIGNED).size();
84
85 String description = getI18n().translate("badge.task.description", newItems, assignedItems);
86
87 long grandTotal = newItems + assignedItems;
88 return new Status(newItems > 0, (int) grandTotal, description);
89 }
90
91 @Override
92 public String getCaption() {
93 return getI18n().translate("tasks.app.caption");
94 }
95
96 @Override
97 Location getLocation() {
98 return new DefaultLocation("app", "tasks-app");
99 }
100
101 @Override
102 public void taskClaimed(TaskEvent taskEvent) {
103 update();
104 }
105
106 @Override
107 public void taskAdded(TaskEvent taskEvent) {
108 update();
109 }
110
111 @Override
112 public void taskArchived(TaskEvent taskEvent) {
113 update();
114 }
115
116 @Override
117 public void taskResolved(TaskEvent taskEvent) {
118 update();
119 }
120
121 @Override
122 public void taskFailed(TaskEvent taskEvent) {
123 update();
124 }
125
126 @Override
127 public void taskRemoved(TaskEvent taskEvent) {
128 update();
129 }
130
131 @Override
132 public void taskScheduled(TaskEvent taskEvent) {
133 update();
134 }
135
136 @Override
137 public void detach() {
138 registration.removeHandler();
139 super.detach();
140 }
141
142 @Override
143 protected void onBadgeDeselected() {
144 eventBus.fireEvent(new CloseAppEvent());
145 }
146 }