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.ui.admincentral.shellapp.pulse.task;
35
36 import info.magnolia.context.Context;
37 import info.magnolia.task.Task;
38 import info.magnolia.task.TasksManager;
39 import info.magnolia.ui.admincentral.shellapp.pulse.data.LazyPulseListContainer;
40 import info.magnolia.ui.admincentral.shellapp.pulse.item.detail.PulseItemCategory;
41 import info.magnolia.ui.admincentral.shellapp.pulse.task.data.TaskQueryDefinition;
42 import info.magnolia.ui.admincentral.shellapp.pulse.task.data.TaskQueryFactory;
43
44 import java.util.Arrays;
45 import java.util.List;
46
47 import javax.inject.Inject;
48 import javax.inject.Provider;
49
50 import com.google.common.collect.Iterables;
51
52
53
54
55
56 public class TasksContainer extends LazyPulseListContainer<Task.Status, TaskQueryDefinition, TaskQueryFactory> {
57
58 private TasksManager tasksManager;
59
60 @Inject
61 public TasksContainer(TasksManager tasksManager,
62 TaskQueryDefinition taskQueryDefinition,
63 Provider<TaskQueryFactory> taskQueryFactoryProvider,
64 Context ctx) {
65 super(taskQueryDefinition, taskQueryFactoryProvider, ctx.getUser().getName());
66 this.tasksManager = tasksManager;
67 }
68
69 @Override
70 public long size() {
71 return tasksManager.getTasksAmountByUserAndStatus(getUserName(), getQueryDefinition().types());
72 }
73
74 @Override
75 public void filterByItemCategory(PulseItemCategory category) {
76
77 Task.Status[] statuses;
78
79 switch (category) {
80 case UNCLAIMED:
81 statuses = new Task.Status[]{Task.Status.Created};
82 break;
83 case ONGOING:
84 statuses = new Task.Status[]{Task.Status.InProgress};
85 break;
86 case DONE:
87 statuses = new Task.Status[]{Task.Status.Resolved};
88 break;
89 case FAILED:
90 statuses = new Task.Status[]{Task.Status.Failed};
91 break;
92 case SCHEDULED:
93 statuses = new Task.Status[]{Task.Status.Scheduled};
94 break;
95 default:
96 statuses = Task.Status.values();
97 }
98
99 List<Task.Status> newStatuses = Arrays.asList(statuses);
100 if (!Iterables.elementsEqual(newStatuses, getQueryDefinition().types())) {
101 getQueryDefinition().setTypes(newStatuses);
102 refresh();
103 }
104 }
105 }