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.task.app.actions;
35
36 import info.magnolia.task.Task;
37 import info.magnolia.task.TasksManager;
38 import info.magnolia.task.schedule.TaskSchedulerService;
39 import info.magnolia.ui.api.action.AbstractAction;
40 import info.magnolia.ui.contentapp.browser.context.ValueContext;
41 import info.magnolia.ui.framework.datasource.components.SelectedItems;
42
43 import java.util.HashMap;
44 import java.util.Map;
45
46 import javax.inject.Inject;
47
48 import com.vaadin.ui.Notification;
49
50
51
52
53 public class AbortTasksAction extends AbstractAction<AbortTasksActionDefinition> {
54
55 private static final String DECISION = "decision";
56 private final SelectedItems<Task> selectedItems;
57 private final TasksManager tasksManager;
58 private final TaskSchedulerService schedulerService;
59 private final ValueContext<Task> valueContext;
60
61 @Inject
62 public AbortTasksAction(final AbortTasksActionDefinition definition, final SelectedItems<Task> selectedItems, final TasksManager taskManager, final TaskSchedulerService schedulerService, ValueContext<Task> valueContext) {
63 super(definition);
64 this.tasksManager = taskManager;
65 this.selectedItems = selectedItems;
66 this.schedulerService = schedulerService;
67 this.valueContext = valueContext;
68 }
69
70 @Override
71 public void execute() {
72 Map<String, Object> result = new HashMap<>();
73 result.put(DECISION, getDefinition().getDecision());
74 selectedItems.stream().forEach(task -> {
75 if (Task.Status.Scheduled.equals(task.getStatus())) {
76 schedulerService.unSchedule(task);
77 }
78 String taskId = task.getId();
79 tasksManager.resolve(taskId, result);
80 }
81 );
82 valueContext.current().set(SelectedItems.empty());
83 Notification.show(getDefinition().getSuccessMessage(), Notification.Type.HUMANIZED_MESSAGE);
84 }
85 }