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;
35
36 import info.magnolia.context.Context;
37 import info.magnolia.i18nsystem.SimpleTranslator;
38 import info.magnolia.task.Task;
39 import info.magnolia.task.TasksManager;
40 import info.magnolia.task.app.data.TaskCategory;
41 import info.magnolia.task.app.view.TasksBrowserDescriptor;
42 import info.magnolia.ui.api.app.SubAppContext;
43 import info.magnolia.ui.api.app.SubAppDescriptor;
44 import info.magnolia.ui.contentapp.ContentBrowserSubApp;
45 import info.magnolia.ui.contentapp.configuration.BrowserDescriptor;
46
47 import java.util.Arrays;
48 import java.util.List;
49
50 import javax.inject.Inject;
51
52
53
54
55 public class TasksSubApp extends ContentBrowserSubApp {
56
57 private final TasksManager tasksManager;
58 private final SimpleTranslator simpleTranslator;
59 private final String userName;
60
61 @Inject
62 public TasksSubApp(SubAppContext subAppContext, TasksManager tasksManager, SimpleTranslator simpleTranslator, Context context, BrowserDescriptor browserDescriptor) {
63 super(subAppContext, browserDescriptor);
64 this.tasksManager = tasksManager;
65 this.simpleTranslator = simpleTranslator;
66 this.userName = context.getUser().getName();
67 }
68
69 @Override
70 public String getCaption() {
71 long unclearedTasksForUser = getUnclearedTasksForUser();
72 String unclearTasksAsString = unclearedTasksForUser >= 100 ? "99+" : String.valueOf(unclearedTasksForUser);
73
74 return simpleTranslator.translate(getSubAppContext().getSubAppDescriptor().getLabel(), unclearTasksAsString);
75 }
76
77 private long getUnclearedTasksForUser() {
78 TaskCategory category = getConfiguredCategory();
79
80 List<Task.Status> statuses = Arrays.asList(Task.Status.values());
81 if (category != null) {
82 statuses = Arrays.asList(category.getStatus().orElse(null));
83 }
84
85 return tasksManager.getTasksAmountByUserAndStatus(userName, statuses);
86 }
87
88 private TaskCategory getConfiguredCategory() {
89 SubAppDescriptor subAppDescriptor = getSubAppContext().getSubAppDescriptor();
90 if (subAppDescriptor instanceof TasksBrowserDescriptor) {
91 return ((TasksBrowserDescriptor) subAppDescriptor).getCategory();
92 }
93
94 return null;
95 }
96
97 public String getTitle() {
98 SubAppDescriptor subAppDescriptor = getSubAppContext().getSubAppDescriptor();
99 if (subAppDescriptor instanceof TasksBrowserDescriptor) {
100 return simpleTranslator.translate(((TasksBrowserDescriptor) subAppDescriptor).getTitle(), getUnclearedTasksForUser());
101 }
102
103 return getCaption();
104 }
105 }