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.plugins.profiles.web.views;
35
36 import fr.paris.lutece.api.user.User;
37 import fr.paris.lutece.plugins.profiles.business.Profile;
38 import fr.paris.lutece.plugins.profiles.business.ProfileFilter;
39 import fr.paris.lutece.plugins.profiles.business.views.View;
40 import fr.paris.lutece.plugins.profiles.business.views.ViewAction;
41 import fr.paris.lutece.plugins.profiles.business.views.ViewFilter;
42 import fr.paris.lutece.plugins.profiles.service.IProfilesService;
43 import fr.paris.lutece.plugins.profiles.service.action.IViewActionService;
44 import fr.paris.lutece.plugins.profiles.service.views.IViewsService;
45 import fr.paris.lutece.plugins.profiles.service.views.ViewsResourceIdService;
46 import fr.paris.lutece.plugins.profiles.utils.constants.ProfilesConstants;
47 import fr.paris.lutece.portal.business.dashboard.DashboardFactory;
48 import fr.paris.lutece.portal.business.rbac.RBAC;
49 import fr.paris.lutece.portal.service.dashboard.DashboardService;
50 import fr.paris.lutece.portal.service.dashboard.IDashboardComponent;
51 import fr.paris.lutece.portal.service.message.AdminMessage;
52 import fr.paris.lutece.portal.service.message.AdminMessageService;
53 import fr.paris.lutece.portal.service.rbac.RBACService;
54 import fr.paris.lutece.portal.service.spring.SpringContextService;
55 import fr.paris.lutece.portal.service.template.AppTemplateService;
56 import fr.paris.lutece.portal.service.util.AppLogService;
57 import fr.paris.lutece.portal.service.util.AppPathService;
58 import fr.paris.lutece.portal.service.util.AppPropertiesService;
59 import fr.paris.lutece.portal.web.admin.PluginAdminPageJspBean;
60 import fr.paris.lutece.portal.web.constants.Messages;
61 import fr.paris.lutece.portal.web.constants.Parameters;
62 import fr.paris.lutece.portal.web.util.LocalizedPaginator;
63 import fr.paris.lutece.util.ReferenceItem;
64 import fr.paris.lutece.util.ReferenceList;
65 import fr.paris.lutece.util.html.AbstractPaginator;
66 import fr.paris.lutece.util.html.HtmlTemplate;
67 import fr.paris.lutece.util.html.ItemNavigator;
68 import fr.paris.lutece.util.sort.AttributeComparator;
69 import fr.paris.lutece.util.string.StringUtil;
70 import fr.paris.lutece.util.url.UrlItem;
71
72 import java.util.ArrayList;
73 import java.util.Collections;
74 import java.util.HashMap;
75 import java.util.List;
76 import java.util.Map;
77
78 import javax.servlet.http.HttpServletRequest;
79
80 import org.apache.commons.lang3.StringUtils;
81
82
83
84
85
86
87 public class ViewsJspBean extends PluginAdminPageJspBean
88 {
89
90 public static final String RIGHT_MANAGE_VIEWS = "PROFILES_VIEWS_MANAGEMENT";
91
92 private static final long serialVersionUID = -17732197055870793L;
93
94
95 private static final String TEMPLATE_MANAGE_VIEWS = "admin/plugins/profiles/views/manage_views.html";
96 private static final String TEMPLATE_CREATE_VIEW = "admin/plugins/profiles/views/create_view.html";
97 private static final String TEMPLATE_MODIFY_VIEW = "admin/plugins/profiles/views/modify_view.html";
98 private static final String TEMPLATE_ASSIGN_PROFILES_VIEW = "admin/plugins/profiles/views/assign_profiles_view.html";
99 private static final String TEMPLATE_MANAGE_DASHBOARDS = "admin/plugins/profiles/views/manage_dashboards.html";
100
101
102 private static final String JSP_MANAGE_VIEWS = "ManageViews.jsp";
103 private static final String JSP_URL_DO_REMOVE_VIEW = "jsp/admin/plugins/profiles/DoRemoveView.jsp";
104 private static final String JSP_URL_MODIFY_VIEW = "jsp/admin/plugins/profiles/ModifyView.jsp";
105 private static final String JSP_URL_ASSIGN_PROFILES_VIEW = "jsp/admin/plugins/profiles/AssignProfilesView.jsp";
106 private static final String JSP_ASSIGN_PROFILES_VIEW = "AssignProfilesView.jsp";
107 private static final String JSP_URL_MANAGE_DASHBOARDS = "jsp/admin/plugins/profiles/ManageDashboards.jsp";
108 private static final String JSP_MANAGE_DASHBOARDS = "ManageDashboards.jsp";
109
110
111 private int _nItemsPerPage;
112 private int _nDefaultItemsPerPage;
113 private String _strCurrentPageIndex;
114 private Map<String, ItemNavigator> _itemNavigators = new HashMap<>( );
115 private IViewsService _viewsService = SpringContextService.getBean( ProfilesConstants.BEAN_VIEWS_SERVICE );
116 private IViewActionService _viewActionService = SpringContextService.getBean( ProfilesConstants.BEAN_VIEW_ACTION_SERVICE );
117 private IProfilesService _profilesService = SpringContextService.getBean( ProfilesConstants.BEAN_PROFILES_SERVICE );
118 private ViewFilter _vFilter;
119
120
121
122
123
124
125
126
127 public String getManageViews( HttpServletRequest request )
128 {
129 setPageTitleProperty( ProfilesConstants.PROPERTY_MANAGE_VIEWS_PAGETITLE );
130
131
132 reinitItemNavigators( );
133
134
135 _vFilter = new ViewFilter( );
136
137 boolean bIsSearch = _vFilter.setFilter( request );
138
139 List<View> filteredViews = _viewsService.findViewsByFilter( _vFilter, getPlugin( ) );
140
141
142 String strSortedAttributeName = request.getParameter( Parameters.SORTED_ATTRIBUTE_NAME );
143 String strAscSort = null;
144
145 if ( strSortedAttributeName != null )
146 {
147 strAscSort = request.getParameter( Parameters.SORTED_ASC );
148
149 boolean bIsAscSort = Boolean.parseBoolean( strAscSort );
150
151 Collections.sort( filteredViews, new AttributeComparator( strSortedAttributeName, bIsAscSort ) );
152 }
153
154 _strCurrentPageIndex = AbstractPaginator.getPageIndex( request, AbstractPaginator.PARAMETER_PAGE_INDEX, _strCurrentPageIndex );
155 _nDefaultItemsPerPage = AppPropertiesService.getPropertyInt( ProfilesConstants.PROPERTY_ITEM_PER_PAGE, 50 );
156 _nItemsPerPage = AbstractPaginator.getItemsPerPage( request, AbstractPaginator.PARAMETER_ITEMS_PER_PAGE, _nItemsPerPage, _nDefaultItemsPerPage );
157
158 String strURL = getHomeUrl( request );
159 UrlItem url = new UrlItem( strURL );
160
161 if ( strSortedAttributeName != null )
162 {
163 url.addParameter( Parameters.SORTED_ATTRIBUTE_NAME, strSortedAttributeName );
164 }
165
166 if ( strAscSort != null )
167 {
168 url.addParameter( Parameters.SORTED_ASC, strAscSort );
169 }
170
171 String strSortSearchAttribute = StringUtils.EMPTY;
172
173 if ( bIsSearch )
174 {
175 _vFilter.setUrlAttributes( url );
176 strSortSearchAttribute = ProfilesConstants.AMPERSAND + _vFilter.getUrlAttributes( );
177 }
178
179
180 LocalizedPaginator<View> paginator = new LocalizedPaginator<>( filteredViews, _nItemsPerPage, url.getUrl( ), AbstractPaginator.PARAMETER_PAGE_INDEX,
181 _strCurrentPageIndex, getLocale( ) );
182
183
184 for ( View view : filteredViews )
185 {
186 List<ViewAction> listActions = _viewActionService.selectActionsList( getLocale( ), getPlugin( ) );
187 listActions = (List<ViewAction>) RBACService.getAuthorizedActionsCollection( listActions, view, (User) getUser( ) );
188 view.setActions( listActions );
189 }
190
191 boolean bPermission = RBACService.isAuthorized( View.RESOURCE_TYPE, RBAC.WILDCARD_RESOURCES_ID, ViewsResourceIdService.PERMISSION_CREATE_VIEW,
192 (User) getUser( ) );
193
194 Map<String, Object> model = new HashMap<>( );
195 model.put( ProfilesConstants.MARK_NB_ITEMS_PER_PAGE, StringUtils.EMPTY + _nItemsPerPage );
196 model.put( ProfilesConstants.MARK_PAGINATOR, paginator );
197 model.put( ProfilesConstants.MARK_LIST_VIEWS, paginator.getPageItems( ) );
198 model.put( ProfilesConstants.MARK_SEARCH_FILTER, _vFilter );
199 model.put( ProfilesConstants.MARK_SEARCH_IS_SEARCH, bIsSearch );
200 model.put( ProfilesConstants.MARK_SORT_SEARCH_ATTRIBUTE, strSortSearchAttribute );
201 model.put( ProfilesConstants.MARK_PERMISSION, bPermission );
202
203 HtmlTemplate templateList = AppTemplateService.getTemplate( TEMPLATE_MANAGE_VIEWS, getLocale( ), model );
204
205 return getAdminPage( templateList.getHtml( ) );
206 }
207
208
209
210
211
212
213
214
215
216
217 public String getCreateView( HttpServletRequest request )
218 {
219 setPageTitleProperty( ProfilesConstants.PROPERTY_CREATE_VIEW_PAGETITLE );
220
221 Map<String, Object> model = new HashMap<>( );
222
223 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_CREATE_VIEW, getLocale( ), model );
224
225 return getAdminPage( template.getHtml( ) );
226 }
227
228
229
230
231
232
233
234
235 public String doCreateView( HttpServletRequest request )
236 {
237 if ( !RBACService.isAuthorized( View.RESOURCE_TYPE, RBAC.WILDCARD_RESOURCES_ID, ViewsResourceIdService.PERMISSION_CREATE_VIEW, (User) getUser( ) ) )
238 {
239 return AdminMessageService.getMessageUrl( request, Messages.USER_ACCESS_DENIED, AdminMessage.TYPE_STOP );
240 }
241
242 String strKey = request.getParameter( ProfilesConstants.PARAMETER_VIEW_KEY );
243 String strDescription = request.getParameter( ProfilesConstants.PARAMETER_VIEW_DESCRIPTION );
244
245 if ( StringUtils.isBlank( strKey ) )
246 {
247 return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
248 }
249
250 if ( StringUtils.isBlank( strDescription ) )
251 {
252 return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
253 }
254
255
256 if ( _viewsService.checkExistView( strKey, getPlugin( ) ) )
257 {
258 return AdminMessageService.getMessageUrl( request, ProfilesConstants.MESSAGE_VIEW_ALREADY_EXISTS, AdminMessage.TYPE_STOP );
259 }
260
261
262 if ( !StringUtil.checkCodeKey( strKey ) )
263 {
264 return AdminMessageService.getMessageUrl( request, ProfilesConstants.MESSAGE_ACCENTUATED_CHARACTER, AdminMessage.TYPE_STOP );
265 }
266
267 View/plugins/profiles/business/views/View.html#View">View view = new View( );
268 view.setKey( strKey.trim( ) );
269 view.setDescription( strDescription );
270 _viewsService.create( view, getPlugin( ) );
271
272 return JSP_MANAGE_VIEWS;
273 }
274
275
276
277
278
279
280
281
282
283
284 public String getConfirmRemoveView( HttpServletRequest request )
285 {
286 String strViewKey = request.getParameter( ProfilesConstants.PARAMETER_VIEW_KEY );
287
288 UrlItem url = new UrlItem( JSP_URL_DO_REMOVE_VIEW );
289 url.addParameter( ProfilesConstants.PARAMETER_VIEW_KEY, strViewKey );
290
291 return AdminMessageService.getMessageUrl( request, ProfilesConstants.MESSAGE_CONFIRM_REMOVE_VIEW, url.getUrl( ), AdminMessage.TYPE_CONFIRMATION );
292 }
293
294
295
296
297
298
299
300
301 public String doRemoveView( HttpServletRequest request )
302 {
303 String strViewKey = request.getParameter( ProfilesConstants.PARAMETER_VIEW_KEY );
304
305 if ( !RBACService.isAuthorized( View.RESOURCE_TYPE, strViewKey, ViewsResourceIdService.PERMISSION_DELETE_VIEW, (User) getUser( ) ) )
306 {
307 return AdminMessageService.getMessageUrl( request, Messages.USER_ACCESS_DENIED, AdminMessage.TYPE_STOP );
308 }
309
310 _viewsService.removeProfiles( strViewKey, getPlugin( ) );
311 _viewsService.removeDashboards( strViewKey, getPlugin( ) );
312 _viewsService.remove( strViewKey, getPlugin( ) );
313
314 return JSP_MANAGE_VIEWS;
315 }
316
317
318
319
320
321
322
323
324
325
326 public String getModifyView( HttpServletRequest request )
327 {
328 setPageTitleProperty( ProfilesConstants.PROPERTY_MODIFY_PROFILE_PAGETITLE );
329
330 String strViewKey = request.getParameter( ProfilesConstants.PARAMETER_VIEW_KEY );
331 View view = _viewsService.findByPrimaryKey( strViewKey, getPlugin( ) );
332
333 String strPermission = ViewsResourceIdService.PERMISSION_MODIFY_VIEW;
334 boolean bPermission = RBACService.isAuthorized( View.RESOURCE_TYPE, strViewKey, strPermission, (User) getUser( ) );
335 String strBaseUrl = AppPathService.getBaseUrl( request ) + JSP_URL_MODIFY_VIEW;
336 UrlItem url = new UrlItem( strBaseUrl );
337
338
339 setItemNavigator( ProfilesConstants.PARAMETER_MODIFY_VIEW, view, url );
340
341
342 List<ViewAction> listActions = _viewsService.getListActions( getUser( ), view, strPermission, getLocale( ), getPlugin( ) );
343 view.setActions( listActions );
344
345 Map<String, Object> model = new HashMap<>( );
346 model.put( ProfilesConstants.MARK_VIEW, view );
347 model.put( ProfilesConstants.MARK_ITEM_NAVIGATOR, _itemNavigators.get( ProfilesConstants.PARAMETER_MODIFY_VIEW ) );
348 model.put( ProfilesConstants.MARK_PERMISSION, bPermission );
349
350 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_MODIFY_VIEW, getLocale( ), model );
351
352 return getAdminPage( template.getHtml( ) );
353 }
354
355
356
357
358
359
360
361
362 public String doModifyView( HttpServletRequest request )
363 {
364 String strViewKey = request.getParameter( ProfilesConstants.PARAMETER_VIEW_KEY );
365
366 if ( !RBACService.isAuthorized( View.RESOURCE_TYPE, strViewKey, ViewsResourceIdService.PERMISSION_MODIFY_VIEW, (User) getUser( ) ) )
367 {
368 return AdminMessageService.getMessageUrl( request, Messages.USER_ACCESS_DENIED, AdminMessage.TYPE_STOP );
369 }
370
371 String strDescription = request.getParameter( ProfilesConstants.PARAMETER_VIEW_DESCRIPTION );
372
373 if ( StringUtils.isBlank( strDescription ) )
374 {
375 return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
376 }
377
378 View/plugins/profiles/business/views/View.html#View">View view = new View( );
379 view.setKey( strViewKey.trim( ) );
380 view.setDescription( strDescription );
381 _viewsService.update( view, getPlugin( ) );
382
383 return JSP_MANAGE_VIEWS;
384 }
385
386
387
388
389
390
391
392
393
394
395 public String getAssignProfilesView( HttpServletRequest request )
396 {
397 Map<String, Object> model = new HashMap<>( );
398 setPageTitleProperty( ProfilesConstants.PROPERTY_ASSIGN_PROFILES_VIEW_PAGETITLE );
399
400 String strBaseUrl = AppPathService.getBaseUrl( request ) + JSP_URL_ASSIGN_PROFILES_VIEW;
401 UrlItem url = new UrlItem( strBaseUrl );
402
403
404 String strViewKey = request.getParameter( ProfilesConstants.PARAMETER_VIEW_KEY );
405 View view = _viewsService.findByPrimaryKey( strViewKey, getPlugin( ) );
406
407
408 List<Profile> listAssignedProfiles = new ArrayList<>( );
409
410 for ( Profile profile : _viewsService.getProfilesListForView( strViewKey, getPlugin( ) ) )
411 {
412 profile = _profilesService.findByPrimaryKey( profile.getKey( ), getPlugin( ) );
413 listAssignedProfiles.add( profile );
414 }
415
416
417 ProfileFilterfiles/business/ProfileFilter.html#ProfileFilter">ProfileFilter pFilter = new ProfileFilter( );
418 List<Profile> listFilteredProfiles = new ArrayList<>( );
419 boolean bIsSearch = pFilter.setFilter( request );
420
421 for ( Profile filteredProfile : _profilesService.findProfilesByFilter( pFilter, getPlugin( ) ) )
422 {
423 for ( Profile profile : listAssignedProfiles )
424 {
425 if ( filteredProfile.getKey( ).equals( profile.getKey( ) ) )
426 {
427 listFilteredProfiles.add( profile );
428 }
429 }
430 }
431
432 String strSortSearchAttribute = StringUtils.EMPTY;
433
434 if ( bIsSearch )
435 {
436 pFilter.setUrlAttributes( url );
437 strSortSearchAttribute = ProfilesConstants.AMPERSAND + pFilter.getUrlAttributes( );
438 }
439
440
441 ReferenceList listAvailableProfiles = new ReferenceList( );
442 ReferenceItem itemProfile = null;
443 boolean bAssigned;
444
445 for ( Profile profile : _profilesService.findAll( getPlugin( ) ) )
446 {
447 itemProfile = new ReferenceItem( );
448 itemProfile.setCode( profile.getKey( ) );
449 itemProfile.setName( profile.getKey( ) );
450 bAssigned = false;
451
452 for ( Profile assignedProfile : listAssignedProfiles )
453 {
454 if ( assignedProfile.getKey( ).equals( itemProfile.getCode( ) ) )
455 {
456 bAssigned = true;
457
458 break;
459 }
460 }
461
462 if ( !bAssigned )
463 {
464 listAvailableProfiles.add( itemProfile );
465 }
466 }
467
468
469 String strSortedAttributeName = request.getParameter( Parameters.SORTED_ATTRIBUTE_NAME );
470 String strAscSort = null;
471
472 if ( strSortedAttributeName != null )
473 {
474 strAscSort = request.getParameter( Parameters.SORTED_ASC );
475
476 boolean bIsAscSort = Boolean.parseBoolean( strAscSort );
477
478 Collections.sort( listFilteredProfiles, new AttributeComparator( strSortedAttributeName, bIsAscSort ) );
479 }
480
481 _strCurrentPageIndex = AbstractPaginator.getPageIndex( request, AbstractPaginator.PARAMETER_PAGE_INDEX, _strCurrentPageIndex );
482 _nDefaultItemsPerPage = AppPropertiesService.getPropertyInt( ProfilesConstants.PROPERTY_ITEM_PER_PAGE, 50 );
483 _nItemsPerPage = AbstractPaginator.getItemsPerPage( request, AbstractPaginator.PARAMETER_ITEMS_PER_PAGE, _nItemsPerPage, _nDefaultItemsPerPage );
484
485 if ( strSortedAttributeName != null )
486 {
487 url.addParameter( Parameters.SORTED_ATTRIBUTE_NAME, strSortedAttributeName );
488 }
489
490 if ( strAscSort != null )
491 {
492 url.addParameter( Parameters.SORTED_ASC, strAscSort );
493 }
494
495 String strPermission = ViewsResourceIdService.PERMISSION_MANAGE_PROFILES_ASSIGNMENT;
496 boolean bPermission = RBACService.isAuthorized( View.RESOURCE_TYPE, strViewKey, strPermission, (User) getUser( ) );
497
498
499 setItemNavigator( ProfilesConstants.PARAMETER_ASSIGN_PROFILE, view, url );
500
501
502 url.addParameter( ProfilesConstants.PARAMETER_PROFILE_KEY, view.getKey( ) );
503
504 LocalizedPaginator<Profile> paginator = new LocalizedPaginator<>( listFilteredProfiles, _nItemsPerPage, url.getUrl( ),
505 AbstractPaginator.PARAMETER_PAGE_INDEX, _strCurrentPageIndex, getLocale( ) );
506
507
508 List<ViewAction> listActions = _viewsService.getListActions( getUser( ), view, strPermission, getLocale( ), getPlugin( ) );
509 view.setActions( listActions );
510
511 model.put( ProfilesConstants.MARK_VIEW, view );
512 model.put( ProfilesConstants.MARK_AVAILABLE_LIST, listAvailableProfiles );
513 model.put( ProfilesConstants.MARK_ASSIGNED_LIST, paginator.getPageItems( ) );
514 model.put( ProfilesConstants.MARK_ASSIGNED_NUMBER, listAssignedProfiles.size( ) );
515 model.put( ProfilesConstants.MARK_ITEM_NAVIGATOR, _itemNavigators.get( ProfilesConstants.PARAMETER_ASSIGN_PROFILE ) );
516 model.put( ProfilesConstants.MARK_NB_ITEMS_PER_PAGE, StringUtils.EMPTY + _nItemsPerPage );
517 model.put( ProfilesConstants.MARK_PAGINATOR, paginator );
518 model.put( ProfilesConstants.MARK_PERMISSION, bPermission );
519 model.put( ProfilesConstants.MARK_SEARCH_FILTER, pFilter );
520 model.put( ProfilesConstants.MARK_SEARCH_IS_SEARCH, bIsSearch );
521 model.put( ProfilesConstants.MARK_LOCALE, getUser( ).getLocale( ) );
522 model.put( ProfilesConstants.MARK_SORT_SEARCH_ATTRIBUTE, strSortSearchAttribute );
523
524 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_ASSIGN_PROFILES_VIEW, getLocale( ), model );
525
526 return getAdminPage( template.getHtml( ) );
527 }
528
529
530
531
532
533
534
535
536 public String doAssignProfilesView( HttpServletRequest request )
537 {
538 String strReturn;
539
540 String strActionCancel = request.getParameter( ProfilesConstants.PARAMETER_CANCEL );
541
542 if ( strActionCancel != null )
543 {
544 strReturn = JSP_MANAGE_VIEWS;
545 }
546 else
547 {
548 String strViewKey = request.getParameter( ProfilesConstants.PARAMETER_VIEW_KEY );
549
550 if ( !RBACService.isAuthorized( View.RESOURCE_TYPE, strViewKey, ViewsResourceIdService.PERMISSION_MANAGE_PROFILES_ASSIGNMENT, (User) getUser( ) ) )
551 {
552 return AdminMessageService.getMessageUrl( request, Messages.USER_ACCESS_DENIED, AdminMessage.TYPE_STOP );
553 }
554
555
556 String [ ] arrayProfileKeys = request.getParameterValues( ProfilesConstants.PARAMETER_PROFILES_LIST );
557
558 if ( arrayProfileKeys != null )
559 {
560 for ( int i = 0; i < arrayProfileKeys.length; i++ )
561 {
562 String strProfileKey = arrayProfileKeys [i];
563 Profile profile = _profilesService.findByPrimaryKey( strProfileKey, getPlugin( ) );
564
565 if ( !_viewsService.hasView( strProfileKey, getPlugin( ) ) )
566 {
567 _viewsService.addProfileForView( strViewKey, strProfileKey, getPlugin( ) );
568 }
569 else
570 {
571 Object [ ] args = {
572 profile.getKey( )
573 };
574
575 return AdminMessageService.getMessageUrl( request, ProfilesConstants.PROPERTY_NO_MULTIPLE_VIEWS, args, AdminMessage.TYPE_STOP );
576 }
577 }
578 }
579
580 strReturn = JSP_ASSIGN_PROFILES_VIEW + ProfilesConstants.INTERROGATION_MARK + ProfilesConstants.PARAMETER_VIEW_KEY + ProfilesConstants.EQUAL
581 + strViewKey;
582 }
583
584 return strReturn;
585 }
586
587
588
589
590
591
592
593
594 public String doUnassignProfileView( HttpServletRequest request )
595 {
596 String strViewKey = request.getParameter( ProfilesConstants.PARAMETER_VIEW_KEY );
597
598 if ( !RBACService.isAuthorized( View.RESOURCE_TYPE, strViewKey, ViewsResourceIdService.PERMISSION_MANAGE_PROFILES_ASSIGNMENT, (User) getUser( ) ) )
599 {
600 return AdminMessageService.getMessageUrl( request, Messages.USER_ACCESS_DENIED, AdminMessage.TYPE_STOP );
601 }
602
603 String strProfileKey = request.getParameter( ProfilesConstants.PARAMETER_PROFILE_KEY );
604 String strAnchor = request.getParameter( ProfilesConstants.PARAMETER_ANCHOR );
605
606
607 _viewsService.removeProfileFromView( strViewKey, strProfileKey, getPlugin( ) );
608
609 return JSP_ASSIGN_PROFILES_VIEW + ProfilesConstants.INTERROGATION_MARK + ProfilesConstants.PARAMETER_VIEW_KEY + ProfilesConstants.EQUAL + strViewKey
610 + ProfilesConstants.SHARP + strAnchor;
611 }
612
613
614
615
616
617
618
619
620
621
622 public String getManageDashboards( HttpServletRequest request )
623 {
624 String strViewKey = request.getParameter( ProfilesConstants.PARAMETER_VIEW_KEY );
625 View view = _viewsService.findByPrimaryKey( strViewKey, getPlugin( ) );
626
627 Map<String, Object> model = new HashMap<>( );
628
629 String strPermission = ViewsResourceIdService.PERMISSION_MANAGE_DASHBOARDS;
630 boolean bPermission = RBACService.isAuthorized( View.RESOURCE_TYPE, strViewKey, strPermission, (User) getUser( ) );
631
632 String strBaseUrl = AppPathService.getBaseUrl( request ) + JSP_URL_MANAGE_DASHBOARDS;
633 UrlItem url = new UrlItem( strBaseUrl );
634
635
636 setItemNavigator( ProfilesConstants.PARAMETER_ASSIGN_DASHBOARD, view, url );
637
638
639 List<ViewAction> listActions = _viewsService.getListActions( getUser( ), view, strPermission, getLocale( ), getPlugin( ) );
640 view.setActions( listActions );
641
642 Map<String, List<IDashboardComponent>> mapDashboards = _viewsService.getAllSetDashboards( strViewKey, getUser( ), getPlugin( ) );
643 model.put( ProfilesConstants.MARK_MAP_DASHBOARDS, mapDashboards );
644
645 List<IDashboardComponent> listNotSetDashboards = _viewsService.getNotSetDashboards( strViewKey, getUser( ), getPlugin( ) );
646 model.put( ProfilesConstants.MARK_NOT_SET_DASHBOARDS, listNotSetDashboards );
647
648 model.put( ProfilesConstants.MARK_COLUMN_COUNT, DashboardService.getInstance( ).getColumnCount( ) );
649 model.put( ProfilesConstants.MARK_MAP_AVAILABLE_ORDERS, _viewsService.getMapAvailableOrders( getPlugin( ) ) );
650 model.put( ProfilesConstants.MARK_LIST_AVAILABLE_COLUMNS, _viewsService.getListAvailableColumns( ) );
651 model.put( ProfilesConstants.MARK_MAP_COLUMN_ORDER_STATUS, _viewsService.getOrderedColumnsStatus( strViewKey, getPlugin( ) ) );
652
653 model.put( ProfilesConstants.MARK_VIEW, view );
654 model.put( ProfilesConstants.MARK_PERMISSION, bPermission );
655 model.put( ProfilesConstants.MARK_ITEM_NAVIGATOR, _itemNavigators.get( ProfilesConstants.PARAMETER_ASSIGN_DASHBOARD ) );
656
657 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_MANAGE_DASHBOARDS, getLocale( ), model );
658
659 return getAdminPage( template.getHtml( ) );
660 }
661
662
663
664
665
666
667
668
669 public String doReorderColumn( HttpServletRequest request )
670 {
671 String strViewKey = request.getParameter( ProfilesConstants.PARAMETER_VIEW_KEY );
672
673 if ( !RBACService.isAuthorized( View.RESOURCE_TYPE, strViewKey, ViewsResourceIdService.PERMISSION_MANAGE_DASHBOARDS, (User) getUser( ) ) )
674 {
675 return AdminMessageService.getMessageUrl( request, Messages.USER_ACCESS_DENIED, AdminMessage.TYPE_STOP );
676 }
677
678 String strColumnName = request.getParameter( ProfilesConstants.PARAMETER_COLUMN );
679
680 if ( StringUtils.isBlank( strColumnName ) )
681 {
682 return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
683 }
684
685 int nColumn = 0;
686
687 try
688 {
689 nColumn = Integer.parseInt( strColumnName );
690 }
691 catch( NumberFormatException nfe )
692 {
693 AppLogService.error( "ViewJspBean.doReorderColumn : " + nfe.getMessage( ), nfe );
694
695 return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
696 }
697
698 _viewsService.doReorderColumn( strViewKey, nColumn, getPlugin( ) );
699
700 return JSP_MANAGE_DASHBOARDS + ProfilesConstants.INTERROGATION_MARK + ProfilesConstants.PARAMETER_VIEW_KEY + ProfilesConstants.EQUAL + strViewKey;
701 }
702
703
704
705
706
707
708
709
710 public String doMoveDashboard( HttpServletRequest request )
711 {
712 String strViewKey = request.getParameter( ProfilesConstants.PARAMETER_VIEW_KEY );
713
714 if ( !RBACService.isAuthorized( View.RESOURCE_TYPE, strViewKey, ViewsResourceIdService.PERMISSION_MANAGE_DASHBOARDS, (User) getUser( ) ) )
715 {
716 return AdminMessageService.getMessageUrl( request, Messages.USER_ACCESS_DENIED, AdminMessage.TYPE_STOP );
717 }
718
719 String strDashboardName = request.getParameter( ProfilesConstants.PARAMETER_DASHBOARD_NAME );
720
721 if ( StringUtils.isBlank( strDashboardName ) )
722 {
723 return AdminMessageService.getMessageUrl( request, ProfilesConstants.MESSAGE_DASHBOARD_NOT_FOUND, AdminMessage.TYPE_STOP );
724 }
725
726
727 IDashboardComponent dashboard = _viewsService.findDashboard( strDashboardName, strViewKey, getPlugin( ) );
728 int nOldOrder = 0;
729 int nOldColumn = 0;
730 boolean bCreate = false;
731
732 if ( dashboard == null )
733 {
734 bCreate = true;
735
736 if ( AppLogService.isDebugEnabled( ) )
737 {
738 AppLogService.debug( "Dashboard " + strDashboardName + " has no property set. Retrieving from SpringContext" );
739 }
740
741 dashboard = DashboardFactory.getDashboardComponent( strDashboardName );
742
743 if ( dashboard == null )
744 {
745 return AdminMessageService.getMessageUrl( request, ProfilesConstants.MESSAGE_DASHBOARD_NOT_FOUND, AdminMessage.TYPE_STOP );
746 }
747 }
748 else
749 {
750 nOldOrder = dashboard.getOrder( );
751 nOldColumn = dashboard.getZone( );
752 }
753
754
755 String strOrder = request.getParameter( ProfilesConstants.PARAMETER_DASHBOARD_ORDER );
756 String strColumn = request.getParameter( ProfilesConstants.PARAMETER_DASHBOARD_COLUMN );
757
758 if ( StringUtils.isBlank( strOrder ) && StringUtils.isBlank( strColumn ) )
759 {
760 return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
761 }
762
763 int nOrder = StringUtil.getIntValue( strOrder, -1 );
764 int nColumn = StringUtil.getIntValue( strColumn, -1 );
765
766 if ( ( nOrder == -1 ) || ( nColumn == -1 ) )
767 {
768 return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
769 }
770
771 dashboard.setOrder( nOrder );
772 dashboard.setZone( nColumn );
773
774 _viewsService.doMoveDashboard( dashboard, nOldColumn, nOldOrder, bCreate, strViewKey, getPlugin( ) );
775
776 return JSP_MANAGE_DASHBOARDS + ProfilesConstants.INTERROGATION_MARK + ProfilesConstants.PARAMETER_VIEW_KEY + ProfilesConstants.EQUAL + strViewKey;
777 }
778
779
780
781
782
783
784
785
786 public String doUnsetColumn( HttpServletRequest request )
787 {
788 String strViewKey = request.getParameter( ProfilesConstants.PARAMETER_VIEW_KEY );
789
790 if ( !RBACService.isAuthorized( View.RESOURCE_TYPE, strViewKey, ViewsResourceIdService.PERMISSION_DELETE_VIEW, (User) getUser( ) ) )
791 {
792 return AdminMessageService.getMessageUrl( request, Messages.USER_ACCESS_DENIED, AdminMessage.TYPE_STOP );
793 }
794
795 String strDashboardName = request.getParameter( ProfilesConstants.PARAMETER_DASHBOARD_NAME );
796
797 _viewsService.removeDashboard( strViewKey, strDashboardName, getPlugin( ) );
798
799 return JSP_MANAGE_DASHBOARDS + ProfilesConstants.INTERROGATION_MARK + ProfilesConstants.PARAMETER_VIEW_KEY + ProfilesConstants.EQUAL + strViewKey;
800 }
801
802
803
804
805
806
807
808
809
810
811
812 private void setItemNavigator( String strItemNavigatorKey, View view, UrlItem url )
813 {
814 ItemNavigator itemNavigator = _itemNavigators.get( strItemNavigatorKey );
815
816 if ( itemNavigator == null )
817 {
818 if ( _vFilter == null )
819 {
820 _vFilter = new ViewFilter( );
821 }
822
823 itemNavigator = _viewsService.getItemNavigator( _vFilter, view, url );
824 }
825 else
826 {
827 itemNavigator.setCurrentItemId( view.getKey( ) );
828 }
829
830 _itemNavigators.put( strItemNavigatorKey, itemNavigator );
831 }
832
833
834
835
836 private void reinitItemNavigators( )
837 {
838 _itemNavigators = new HashMap<>( );
839 }
840 }