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.data;
35
36 import info.magnolia.objectfactory.Components;
37 import info.magnolia.task.Task;
38 import info.magnolia.task.TasksManager;
39 import info.magnolia.task.definition.registry.TaskDefinitionRegistry;
40 import info.magnolia.ui.admincentral.shellapp.pulse.data.LazyPulseQuery;
41 import info.magnolia.ui.admincentral.shellapp.pulse.data.PulseConstants;
42 import info.magnolia.ui.admincentral.shellapp.pulse.task.TaskTypeHelper;
43
44 import java.util.Date;
45 import java.util.List;
46
47 import javax.inject.Inject;
48
49 import org.apache.commons.lang3.StringUtils;
50 import org.slf4j.Logger;
51 import org.slf4j.LoggerFactory;
52
53 import com.vaadin.data.Item;
54 import com.vaadin.data.util.ObjectProperty;
55
56
57
58
59 public class TaskQuery extends LazyPulseQuery<Task.Status, Task> {
60
61 private static final Logger log = LoggerFactory.getLogger(TaskQuery.class);
62
63 private TasksManager tasksManager;
64
65 private TaskTypeHelper taskTypeHelper;
66
67 @Inject
68 public TaskQuery(TasksManager tasksManager, TaskQueryDefinition queryDefinition, TaskTypeHelper taskTypeHelper) {
69 super(queryDefinition);
70 this.tasksManager = tasksManager;
71 this.taskTypeHelper = taskTypeHelper;
72 }
73
74
75
76
77 @Deprecated
78 public TaskQuery(TasksManager tasksManager, TaskDefinitionRegistry taskDefinitionRegistry, TaskQueryDefinition queryDefinition) {
79 this(tasksManager, queryDefinition, Components.getComponent(TaskTypeHelper.class));
80 }
81
82 @Override
83 @SuppressWarnings("unchecked")
84 protected void mapObjectToItem(Task task, Item item) {
85 item.addItemProperty(TaskConstants.ID, new ObjectProperty(task.getId()));
86 item.addItemProperty(TaskConstants.STATUS_PROPERTY_ID, new ObjectProperty(task.getStatus()));
87 item.addItemProperty(TaskConstants.NEW_PROPERTY_ID, new ObjectProperty(task.getStatus() == Task.Status.Created, Boolean.class));
88 item.addItemProperty(TaskConstants.TASK_PROPERTY_ID, new ObjectProperty(taskTypeHelper.getTitle(task), String.class));
89 item.addItemProperty(TaskConstants.SENDER_PROPERTY_ID, new ObjectProperty(task.getRequestor(), String.class));
90 item.addItemProperty(TaskConstants.LAST_CHANGE_PROPERTY_ID, new ObjectProperty(task.getModificationDate(), Date.class));
91
92 item.addItemProperty(TaskConstants.ASSIGNED_TO_PROPERTY_ID, new ObjectProperty(StringUtils.defaultString(task.getActorId()), String.class));
93
94 String sentTo = "";
95 if (task.getGroupIds() != null && task.getGroupIds().size() > 0) {
96 sentTo += StringUtils.join(task.getGroupIds(), ",");
97 }
98 if (task.getActorIds() != null && task.getActorIds().size() > 0) {
99 sentTo += StringUtils.join(task.getActorIds(), ",");
100 }
101 item.addItemProperty(TaskConstants.SENT_TO_PROPERTY_ID, new ObjectProperty(sentTo, String.class));
102 }
103
104 @Override
105 protected long getEntriesAmount(List<Task.Status> types) {
106 return tasksManager.getTasksAmountByUserAndStatus(getQueryDefinition().userName(), types);
107 }
108
109 @Override
110 protected List<Task> getEntries(List<Task.Status> types, int limit, int offset) {
111 long timeMs = System.currentTimeMillis();
112 List<Task> tasksCollection = tasksManager.findTasksByUserAndStatus(getQueryDefinition().userName(), types, getSortCriteria(), limit, offset);
113 log.debug("Fetched {} object list from {} in {}ms", limit, offset, System.currentTimeMillis() - timeMs);
114 return tasksCollection;
115 }
116
117 @Override
118 protected Task createGroupingEntry(Task.Status type) {
119 Task groupingTask = new Task();
120 groupingTask.setId(PulseConstants.GROUP_PLACEHOLDER_ITEMID + type.name());
121 groupingTask.setStatus(type);
122 return groupingTask;
123 }
124
125
126
127
128 @Deprecated
129 protected String getTaskTitle(Task task) {
130 return taskTypeHelper.getTitle(task);
131 }
132 }