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.message;
35
36 import info.magnolia.context.Context;
37 import info.magnolia.ui.admincentral.shellapp.pulse.data.LazyPulseListContainer;
38 import info.magnolia.ui.admincentral.shellapp.pulse.item.detail.PulseItemCategory;
39 import info.magnolia.ui.admincentral.shellapp.pulse.message.data.MessageQueryDefinition;
40 import info.magnolia.ui.admincentral.shellapp.pulse.message.data.MessageQueryFactory;
41 import info.magnolia.ui.api.message.MessageType;
42 import info.magnolia.ui.framework.message.MessagesManager;
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 MessagesContainer extends LazyPulseListContainer<MessageType, MessageQueryDefinition, MessageQueryFactory> {
57
58 private final MessagesManager messagesManager;
59
60 @Inject
61 public MessagesContainer(MessagesManager messagesManager, Context ctx,
62 MessageQueryDefinition messageQueryDefinition,
63 Provider<MessageQueryFactory> messageQueryFactoryProvider) {
64 super(messageQueryDefinition, messageQueryFactoryProvider, ctx.getUser().getName());
65 this.messagesManager = messagesManager;
66 }
67
68 @Override
69 public void filterByItemCategory(PulseItemCategory category) {
70 MessageType[] newVisibleTypes;
71 switch (category) {
72 case PROBLEM:
73 newVisibleTypes = new MessageType[]{MessageType.ERROR, MessageType.WARNING};
74 break;
75 case INFO:
76 newVisibleTypes = new MessageType[]{MessageType.INFO};
77 break;
78 default:
79 newVisibleTypes = MessageType.values();
80 }
81
82 List<MessageType> newVisibleTypeList = Arrays.asList(newVisibleTypes);
83 if (!Iterables.elementsEqual(newVisibleTypeList, getQueryDefinition().types())) {
84 getQueryDefinition().setTypes(newVisibleTypeList);
85 refresh();
86 }
87 }
88
89 @Override
90 public long size() {
91 return messagesManager.getMessagesAmount(getUserName(), getQueryDefinition().types());
92 }
93 }
94