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 fr.paris.lutece.portal.web.features;
35
36 import fr.paris.lutece.portal.business.right.FeatureGroup;
37 import fr.paris.lutece.portal.business.right.FeatureGroupHome;
38 import fr.paris.lutece.portal.business.right.Right;
39 import fr.paris.lutece.portal.business.right.RightHome;
40 import fr.paris.lutece.portal.service.i18n.I18nService;
41 import fr.paris.lutece.portal.service.message.AdminMessage;
42 import fr.paris.lutece.portal.service.message.AdminMessageService;
43 import fr.paris.lutece.portal.service.template.AppTemplateService;
44 import fr.paris.lutece.portal.web.admin.AdminFeaturesPageJspBean;
45 import fr.paris.lutece.portal.web.constants.Messages;
46 import fr.paris.lutece.util.ReferenceList;
47 import fr.paris.lutece.util.html.HtmlTemplate;
48 import fr.paris.lutece.util.url.UrlItem;
49
50 import java.io.Serializable;
51
52 import java.util.ArrayList;
53 import java.util.Collection;
54 import java.util.HashMap;
55 import java.util.List;
56 import java.util.Locale;
57 import java.util.Map;
58
59 import javax.servlet.http.HttpServletRequest;
60
61
62
63
64
65 public class FeaturesGroupJspBean extends AdminFeaturesPageJspBean
66 {
67 public static final String RIGHT_FEATURES_MANAGEMENT = "CORE_FEATURES_MANAGEMENT";
68 private static final long serialVersionUID = -8573499137269541850L;
69 private static final String TEMPLATE_MANAGE_FEATURES = "admin/features/manage_features.html";
70 private static final String TEMPLATE_MANAGE_GROUPS = "admin/features/manage_groups.html";
71 private static final String TEMPLATE_DISPATCH_FEATURES = "admin/features/dispatch_features.html";
72 private static final String TEMPLATE_CREATE_GROUP = "admin/features/create_group.html";
73 private static final String TEMPLATE_MODIFY_GROUP = "admin/features/modify_group.html";
74 private static final String PARAMETER_GROUP_ID = "group_id";
75 private static final String PARAMETER_GROUP_NAME = "group_name";
76 private static final String PARAMETER_GROUP_DESCRIPTION = "group_description";
77 private static final String PARAMETER_GROUP_ORDER = "group_order";
78 private static final String PARAMETER_ORDER_ID = "order_id";
79 private static final String PARAMETER_RIGHT_ID = "right_id";
80 private static final String JSP_DISPATCH_FEATURES = "DispatchFeatures.jsp";
81 private static final String JSP_MANAGE_GROUPS = "ManageGroups.jsp";
82 private static final String MESSAGE_CONFIRM_DELETE = "portal.features.message.confirmDeleteGroup";
83 private static final String MESSAGE_RIGHT_ALREADY_ASSIGN = "portal.features.message.rightAlreadyAssign";
84 private static final String MARK_GROUPS_LIST = "groups_list";
85 private static final String MARK_RIGHT_LIST = "feature_list";
86 private static final String MARK_ORDER_IS_OK = "order_list_state";
87 private static final String MARK_FEATURE_NO_GROUP = "no_group";
88 private static final String MARK_FEATURE_GROUP_LIST = "feature_group_list";
89 private static final String MARK_ORDER_LIST = "order_list";
90 private static final String MARK_FEATURE_GROUP = "feature_group";
91 private static final String MARK_DEFAULT_ORDER = "order_default";
92 private static final String NO_GROUP_DESCRIPTION = "portal.features.nogroup.description";
93 private static final String NO_GROUP_LABEL = "portal.features.nogroup.label";
94 private static final int NO_GROUP_ORDER = 0;
95 private static final String NO_GROUP_ID = null;
96 private static final String REGEX_ID = "^[\\d]+$";
97
98
99
100
101
102
103 public String getManageFeatures( HttpServletRequest request )
104 {
105 HtmlTemplate t = AppTemplateService.getTemplate( TEMPLATE_MANAGE_FEATURES );
106
107 return getAdminPage( t.getHtml( ) );
108 }
109
110
111
112
113
114
115 public String getManageGroups( HttpServletRequest request )
116 {
117 List<FeatureGroup> listGroups = FeatureGroupHome.getFeatureGroupsList( );
118 Map<String, Object> model = new HashMap<String, Object>( );
119 model.put( MARK_ORDER_LIST, getOrderRefList( ) );
120 model.put( MARK_GROUPS_LIST, listGroups );
121
122 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_MANAGE_GROUPS, getLocale( ), model );
123
124 return getAdminPage( template.getHtml( ) );
125 }
126
127
128
129
130
131
132 public String getDispatchFeatures( HttpServletRequest request )
133 {
134 Locale locale = getLocale( );
135
136 Map<String, Object> model = new HashMap<String, Object>( );
137 model.put( MARK_FEATURE_NO_GROUP, getNoGroup( locale ) );
138 model.put( MARK_FEATURE_GROUP_LIST, getRefListFeatureGroups( locale ) );
139
140 HtmlTemplate tPage = AppTemplateService.getTemplate( TEMPLATE_DISPATCH_FEATURES, locale, model );
141
142 return getAdminPage( tPage.getHtml( ) );
143 }
144
145
146
147
148
149
150
151 private Map<String, Object> getNoGroup( Locale locale )
152 {
153 FeatureGroup noGroup = new FeatureGroup( );
154 noGroup.setLocale( locale );
155 noGroup.setId( NO_GROUP_ID );
156 noGroup.setOrder( NO_GROUP_ORDER );
157 noGroup.setDescriptionKey( NO_GROUP_DESCRIPTION );
158 noGroup.setLabelKey( NO_GROUP_LABEL );
159
160 Map<String, Object> groupMap = new HashMap<String, Object>( );
161 groupMap.put( MARK_FEATURE_GROUP, noGroup );
162 groupMap.put( MARK_RIGHT_LIST,
163 I18nService.localizeCollection( RightHome.getRightsList( noGroup.getId( ) ), locale ) );
164 groupMap.put( MARK_ORDER_IS_OK, RightHome.checkFeatureOrders( noGroup.getId( ) ) );
165
166 return groupMap;
167 }
168
169
170
171
172
173
174
175 private Collection<HashMap<String, Object>> getRefListFeatureGroups( Locale locale )
176 {
177 Collection<HashMap<String, Object>> colGroupMap = new ArrayList<HashMap<String, Object>>( );
178 Collection<FeatureGroup> colGroups = FeatureGroupHome.getFeatureGroupsList( );
179
180 for ( FeatureGroup fg : colGroups )
181 {
182 HashMap<String, Object> groupMap = new HashMap<String, Object>( );
183 groupMap.put( MARK_FEATURE_GROUP, fg );
184 groupMap.put( MARK_RIGHT_LIST,
185 I18nService.localizeCollection( RightHome.getRightsList( fg.getId( ) ), locale ) );
186 groupMap.put( MARK_ORDER_IS_OK, RightHome.checkFeatureOrders( fg.getId( ) ) );
187 colGroupMap.add( groupMap );
188 }
189
190 return colGroupMap;
191 }
192
193
194
195
196
197
198 public String doDispatchFeature( HttpServletRequest request )
199 {
200 String strRightId = request.getParameter( PARAMETER_RIGHT_ID );
201 String strGroupName = request.getParameter( PARAMETER_GROUP_NAME );
202 String strOrderId = request.getParameter( PARAMETER_ORDER_ID );
203 Right right = RightHome.findByPrimaryKey( strRightId );
204 UrlItem url = new UrlItem( JSP_DISPATCH_FEATURES );
205
206 if ( ( strGroupName != null ) )
207 {
208
209 url.setAnchor( right.getFeatureGroup( ) );
210 right.setFeatureGroup( strGroupName.equals( "" ) ? null : strGroupName );
211 }
212
213 if ( ( strOrderId != null ) && strOrderId.matches( REGEX_ID ) )
214 {
215 right.setOrder( Integer.parseInt( strOrderId ) );
216 }
217
218 RightHome.update( right );
219
220 return url.getUrl( );
221 }
222
223
224
225
226
227
228
229 public String doDispatchFeatureGroup( HttpServletRequest request )
230 {
231 String strGroupId = request.getParameter( PARAMETER_GROUP_ID );
232 String strOrderId = request.getParameter( PARAMETER_ORDER_ID );
233 FeatureGroup featureGroup = FeatureGroupHome.findByPrimaryKey( strGroupId );
234 UrlItem url = new UrlItem( JSP_MANAGE_GROUPS );
235
236 if ( ( strOrderId != null ) && strOrderId.matches( REGEX_ID ) )
237 {
238 featureGroup.setOrder( Integer.parseInt( strOrderId ) );
239 }
240
241 FeatureGroupHome.update( featureGroup );
242
243 return url.getUrl( );
244 }
245
246
247
248
249
250
251 public String doReinitFeatures( HttpServletRequest request )
252 {
253 String strGroupId = request.getParameter( PARAMETER_GROUP_ID );
254 RightHome.reinitFeatureOrders( strGroupId );
255
256 UrlItem url = new UrlItem( JSP_DISPATCH_FEATURES );
257
258 if ( ( strGroupId != null ) )
259 {
260 url.setAnchor( strGroupId );
261 }
262
263 return url.getUrl( );
264 }
265
266
267
268
269
270
271 public String getCreateGroup( HttpServletRequest request )
272 {
273 int nCount = FeatureGroupHome.getFeatureGroupsCount( ) + 1;
274
275 Map<String, Serializable> model = new HashMap<String, Serializable>( );
276 model.put( MARK_ORDER_LIST, getOrderRefList( ) );
277 model.put( MARK_DEFAULT_ORDER, String.valueOf( nCount ) );
278
279 HtmlTemplate t = AppTemplateService.getTemplate( TEMPLATE_CREATE_GROUP, getLocale( ), model );
280
281 return getAdminPage( t.getHtml( ) );
282 }
283
284
285
286
287
288
289 public String getModifyGroup( HttpServletRequest request )
290 {
291 String strGroupId = request.getParameter( PARAMETER_GROUP_ID );
292
293 FeatureGroup group = FeatureGroupHome.findByPrimaryKey( strGroupId );
294
295 if ( group == null )
296 {
297 return getManageGroups( request );
298 }
299
300 Map<String, Object> model = new HashMap<String, Object>( );
301 model.put( MARK_ORDER_LIST, getOrderRefList( ) );
302 model.put( MARK_FEATURE_GROUP, group );
303
304 HtmlTemplate t = AppTemplateService.getTemplate( TEMPLATE_MODIFY_GROUP, getLocale( ), model );
305
306 return getAdminPage( t.getHtml( ) );
307 }
308
309
310
311
312
313
314 public String doCreateGroup( HttpServletRequest request )
315 {
316 String strGroupId = request.getParameter( PARAMETER_GROUP_ID );
317 String strGroupName = request.getParameter( PARAMETER_GROUP_NAME );
318 String strGroupDescription = request.getParameter( PARAMETER_GROUP_DESCRIPTION );
319 String strGroupOrder = request.getParameter( PARAMETER_GROUP_ORDER );
320
321
322 if ( strGroupId.equals( "" ) || strGroupName.equals( "" ) || strGroupDescription.equals( "" ) )
323 {
324 return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
325 }
326
327 FeatureGroup group = new FeatureGroup( );
328 group.setId( strGroupId );
329 group.setLabelKey( strGroupName );
330 group.setDescriptionKey( strGroupDescription );
331
332 FeatureGroupHome.create( group );
333 group.setOrder( Integer.parseInt( strGroupOrder ) );
334 FeatureGroupHome.update( group );
335
336 return JSP_MANAGE_GROUPS;
337 }
338
339
340
341
342
343
344 public String doModifyGroup( HttpServletRequest request )
345 {
346 String strGroupId = request.getParameter( PARAMETER_GROUP_ID );
347 String strGroupName = request.getParameter( PARAMETER_GROUP_NAME );
348 String strGroupDescription = request.getParameter( PARAMETER_GROUP_DESCRIPTION );
349 String strGroupOrder = request.getParameter( PARAMETER_GROUP_ORDER );
350
351
352 if ( strGroupId.equals( "" ) || strGroupName.equals( "" ) || strGroupDescription.equals( "" ) )
353 {
354 return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
355 }
356
357 FeatureGroup group = FeatureGroupHome.findByPrimaryKey( strGroupId );
358 group.setLabelKey( strGroupName );
359 group.setDescriptionKey( strGroupDescription );
360 group.setOrder( Integer.parseInt( strGroupOrder ) );
361 FeatureGroupHome.update( group );
362
363 return JSP_MANAGE_GROUPS;
364 }
365
366
367
368
369
370 private ReferenceList getOrderRefList( )
371 {
372 int nGroupsCount = FeatureGroupHome.getFeatureGroupsCount( );
373 ReferenceList listOrders = new ReferenceList( );
374
375 for ( int i = 0; i < nGroupsCount; i++ )
376 {
377 listOrders.addItem( i + 1, Integer.toString( i + 1 ) );
378 }
379
380 return listOrders;
381 }
382
383
384
385
386
387
388 public String getRemoveGroup( HttpServletRequest request )
389 {
390 String strGroupId = request.getParameter( PARAMETER_GROUP_ID );
391
392 String strUrl = "jsp/admin/features/DoRemoveGroup.jsp?" + PARAMETER_GROUP_ID + "=" + strGroupId;
393 FeatureGroup group = FeatureGroupHome.findByPrimaryKey( strGroupId );
394 group.setLocale( getUser( ).getLocale( ) );
395
396 Object[] messageArgs = { group.getLabel( ) };
397
398 return AdminMessageService.getMessageUrl( request, MESSAGE_CONFIRM_DELETE, messageArgs, null, strUrl, "",
399 AdminMessage.TYPE_CONFIRMATION );
400 }
401
402
403
404
405
406
407 public String doRemoveGroup( HttpServletRequest request )
408 {
409 String strGroupId = request.getParameter( PARAMETER_GROUP_ID );
410
411 if ( RightHome.getRightsList( strGroupId ).size( ) > 0 )
412 {
413 return AdminMessageService.getMessageUrl( request, MESSAGE_RIGHT_ALREADY_ASSIGN, AdminMessage.TYPE_STOP );
414 }
415
416 FeatureGroupHome.remove( strGroupId );
417
418 return JSP_MANAGE_GROUPS;
419 }
420 }