1
2
3
4
5 package com.hack23.cia.web.viewfactory.impl.user;
6
7 import java.util.List;
8
9 import thinwire.ui.Component;
10 import thinwire.ui.Menu;
11
12 import com.hack23.cia.model.application.dto.common.UserSessionDTO;
13 import com.hack23.cia.model.application.impl.admin.MonitorActionEvent;
14 import com.hack23.cia.model.application.impl.common.Agency;
15 import com.hack23.cia.model.application.impl.common.User;
16 import com.hack23.cia.model.application.impl.common.UserSession;
17 import com.hack23.cia.model.application.impl.user.AbstractTopListActionEvent;
18 import com.hack23.cia.model.application.impl.user.UserAccountActionEvent;
19 import com.hack23.cia.model.application.impl.user.UserActionEvent;
20 import com.hack23.cia.model.sweden.impl.PoliticalParty;
21 import com.hack23.cia.web.action.admin.ConfigureAgencyAction;
22 import com.hack23.cia.web.action.admin.MonitorAdminAction;
23 import com.hack23.cia.web.action.admin.TaskAction;
24 import com.hack23.cia.web.action.user.CommitteeReportsAction;
25 import com.hack23.cia.web.action.user.PartyAction;
26 import com.hack23.cia.web.action.user.TopListAction;
27 import com.hack23.cia.web.action.user.UserAccountAction;
28 import com.hack23.cia.web.action.user.UserAction;
29 import com.hack23.cia.web.common.BeanLocator;
30
31 /***
32 * The Class MenuFactoryImpl.
33 */
34 public class MenuFactoryImpl implements MenuFactory {
35
36
37
38
39
40
41
42
43 @Override
44 public final Menu createApplicationMenu(
45 final UserSessionDTO userSessionDTO,
46 final List<PoliticalParty> politicalParties, final int topNumber) {
47 final UserSession userSession = userSessionDTO.getUserSession();
48 final User user = userSession.getUser();
49 final String portalName = userSession.getPortal().getName();
50 final Menu menu = new Menu();
51
52 final Menu.Item appItem = new Menu.Item(portalName);
53 menu.getRootItem().getChildren().add(appItem);
54
55 if (user.getUserRole().equals(User.UserRole.ANYNOMOUS)) {
56 final Menu.Item loginItem = new Menu.Item(userSessionDTO
57 .getLanguageResource(Agency.LanguageContentKey.LOGIN));
58 loginItem.setUserObject(new UserAccountAction(
59 UserAccountActionEvent.Operation.Login));
60 appItem.getChildren().add(loginItem);
61 } else if (user.getUserRole().equals(User.UserRole.USER)
62 || user.getUserRole().equals(User.UserRole.ADMIN)
63 || user.getUserRole().equals(User.UserRole.VIP)) {
64 final Menu.Item logoutItem = new Menu.Item(userSessionDTO
65 .getLanguageResource(Agency.LanguageContentKey.LOGOUT));
66 logoutItem.setUserObject(new UserAccountAction(
67 UserAccountActionEvent.Operation.Logout));
68 appItem.getChildren().add(logoutItem);
69 }
70
71 if (user.getUserRole().equals(User.UserRole.ADMIN)) {
72 final Menu.Item adminMenuItem = new Menu.Item(userSessionDTO
73 .getLanguageResource(Agency.LanguageContentKey.ADMIN_MENU));
74 menu.getRootItem().getChildren().add(adminMenuItem);
75
76 final Menu.Item startUpdateJobItem = new Menu.Item(
77 userSessionDTO
78 .getLanguageResource(Agency.LanguageContentKey.START_UPDATE_JOB));
79 startUpdateJobItem.setUserObject(new TaskAction());
80 adminMenuItem.getChildren().add(startUpdateJobItem);
81
82 final Menu.Item showResponseTimeItem = new Menu.Item(
83 userSessionDTO
84 .getLanguageResource(Agency.LanguageContentKey.SHOW_RESPONSE_TIME));
85 showResponseTimeItem.setUserObject(new MonitorAdminAction(
86 MonitorActionEvent.Operation.ResponseTime));
87 adminMenuItem.getChildren().add(showResponseTimeItem);
88
89 final Menu.Item showRecentActionsItem = new Menu.Item(
90 userSessionDTO
91 .getLanguageResource(Agency.LanguageContentKey.SHOW_RECENT_ACTIONS));
92 showRecentActionsItem.setUserObject(new MonitorAdminAction(
93 MonitorActionEvent.Operation.RecentActions));
94 adminMenuItem.getChildren().add(showRecentActionsItem);
95
96 final Menu.Item showTreeViewItem = new Menu.Item(
97 userSessionDTO
98 .getLanguageResource(Agency.LanguageContentKey.COMMITEE_REPORT));
99 showTreeViewItem.setUserObject(new CommitteeReportsAction());
100 adminMenuItem.getChildren().add(showTreeViewItem);
101
102 final Menu.Item configureAgencyViewItem = new Menu.Item(
103 userSessionDTO
104 .getLanguageResource(Agency.LanguageContentKey.CONFIGURE_AGENCY));
105 configureAgencyViewItem.setUserObject(new ConfigureAgencyAction());
106 adminMenuItem.getChildren().add(configureAgencyViewItem);
107 }
108
109
110 final Menu.Item parliamentMenuItem = new Menu.Item(
111 userSessionDTO
112 .getLanguageResource(Agency.LanguageContentKey.SWEDISH_PARLIAMENT_MENU));
113 menu.getRootItem().getChildren().add(parliamentMenuItem);
114
115 if (politicalParties != null) {
116 createTopListMenuItem(
117 userSessionDTO,
118 parliamentMenuItem,
119 politicalParties,
120 topNumber,
121 AbstractTopListActionEvent.Operation.TopRebels,
122 userSessionDTO
123 .getLanguageResource(Agency.LanguageContentKey.PARLIAMENT_MEMBERS_REBELS));
124 createTopListMenuItem(
125 userSessionDTO,
126 parliamentMenuItem,
127 politicalParties,
128 topNumber,
129 AbstractTopListActionEvent.Operation.TopLoyals,
130 userSessionDTO
131 .getLanguageResource(Agency.LanguageContentKey.PARLIAMENT_MEMBERS_LOYAL));
132
133 createTopListMenuItem(
134 userSessionDTO,
135 parliamentMenuItem,
136 politicalParties,
137 topNumber,
138 AbstractTopListActionEvent.Operation.TopWinners,
139 userSessionDTO
140 .getLanguageResource(Agency.LanguageContentKey.PARLIAMENT_MEMBERS_WINNERS));
141 createTopListMenuItem(
142 userSessionDTO,
143 parliamentMenuItem,
144 politicalParties,
145 topNumber,
146 AbstractTopListActionEvent.Operation.TopLosers,
147 userSessionDTO
148 .getLanguageResource(Agency.LanguageContentKey.PARLIAMENT_MEMBERS_LOSERS));
149
150 createTopListMenuItem(
151 userSessionDTO,
152 parliamentMenuItem,
153 politicalParties,
154 topNumber,
155 AbstractTopListActionEvent.Operation.TopAbsent,
156 userSessionDTO
157 .getLanguageResource(Agency.LanguageContentKey.PARLIAMENT_MEMBERS_ABSENCE));
158 createTopListMenuItem(
159 userSessionDTO,
160 parliamentMenuItem,
161 politicalParties,
162 topNumber,
163 AbstractTopListActionEvent.Operation.TopPresent,
164 userSessionDTO
165 .getLanguageResource(Agency.LanguageContentKey.PARLIAMENT_MEMBERS_PRESENCE));
166 }
167
168 final Menu.Item historyMenuItem = new Menu.Item(userSessionDTO
169 .getLanguageResource(Agency.LanguageContentKey.USER_HISTORY));
170 menu.getRootItem().getChildren().add(historyMenuItem);
171
172 final Menu.Item showUserHistoryItem = new Menu.Item(
173 userSessionDTO
174 .getLanguageResource(Agency.LanguageContentKey.SHOW_USER_HISTORY));
175 showUserHistoryItem.setUserObject(new UserAction(
176 UserActionEvent.Operation.UserHistory));
177 historyMenuItem.getChildren().add(showUserHistoryItem);
178
179 menu.addActionListener(Component.ACTION_CLICK, BeanLocator
180 .getApplicationActionListener());
181 return menu;
182 }
183
184 /***
185 * Creates the top list menu item.
186 *
187 * @param userSessionDTO the user session dto
188 * @param parliamentMenuItem the parliament menu item
189 * @param politicalParties the political parties
190 * @param topNumber the top number
191 * @param operation the operation
192 * @param menuTitle the menu title
193 */
194 private void createTopListMenuItem(final UserSessionDTO userSessionDTO,
195 final Menu.Item parliamentMenuItem,
196 final List<PoliticalParty> politicalParties, final int topNumber,
197 final AbstractTopListActionEvent.Operation operation,
198 final String menuTitle) {
199 final Menu.Item absenceItem = new Menu.Item(menuTitle);
200 parliamentMenuItem.getChildren().add(absenceItem);
201
202 final Menu.Item showTopSlackerItem = new Menu.Item(userSessionDTO
203 .getLanguageResource(Agency.LanguageContentKey.SHOW_TOP)
204 + " " + topNumber);
205 showTopSlackerItem.setUserObject(new TopListAction(operation));
206 absenceItem.getChildren().add(showTopSlackerItem);
207
208 final Menu.Item partyItem = new Menu.Item(
209 userSessionDTO
210 .getLanguageResource(Agency.LanguageContentKey.SHOW_TOP)
211 + " "
212 + topNumber
213 + " "
214 + userSessionDTO
215 .getLanguageResource(Agency.LanguageContentKey.PER_PARTY));
216 absenceItem.getChildren().add(partyItem);
217
218 for (final PoliticalParty politicalParty : politicalParties) {
219 final Menu.Item partyMenuItem = new Menu.Item(politicalParty.getName());
220 partyMenuItem.setUserObject(new PartyAction(operation,
221 politicalParty.getShortCode()));
222 partyItem.getChildren().add(partyMenuItem);
223 }
224 }
225 }