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.directory.web;
35
36 import fr.paris.lutece.plugins.directory.business.Directory;
37 import fr.paris.lutece.plugins.directory.business.DirectoryAction;
38 import fr.paris.lutece.plugins.directory.business.DirectoryActionHome;
39 import fr.paris.lutece.plugins.directory.business.DirectoryFilter;
40 import fr.paris.lutece.plugins.directory.business.DirectoryHome;
41 import fr.paris.lutece.plugins.directory.service.DirectoryPlugin;
42 import fr.paris.lutece.plugins.directory.service.DirectoryResourceIdService;
43 import fr.paris.lutece.plugins.directory.service.DirectoryService;
44 import fr.paris.lutece.portal.business.rbac.RBAC;
45 import fr.paris.lutece.portal.business.right.Right;
46 import fr.paris.lutece.portal.business.right.RightHome;
47 import fr.paris.lutece.portal.business.user.AdminUser;
48 import fr.paris.lutece.portal.service.dashboard.DashboardComponent;
49 import fr.paris.lutece.portal.service.database.AppConnectionService;
50 import fr.paris.lutece.portal.service.plugin.Plugin;
51 import fr.paris.lutece.portal.service.plugin.PluginService;
52 import fr.paris.lutece.portal.service.rbac.RBACService;
53 import fr.paris.lutece.portal.service.template.AppTemplateService;
54 import fr.paris.lutece.portal.service.workgroup.AdminWorkgroupService;
55 import fr.paris.lutece.util.html.HtmlTemplate;
56 import fr.paris.lutece.util.url.UrlItem;
57
58 import java.util.ArrayList;
59 import java.util.HashMap;
60 import java.util.List;
61 import java.util.Map;
62
63 import javax.servlet.http.HttpServletRequest;
64
65
66
67
68 public class DirectoryDashboardComponent extends DashboardComponent
69 {
70
71 private static final String MARK_URL = "url";
72 private static final String MARK_ICON = "icon";
73 private static final String MARK_DIRECTORY_LIST = "directory_list";
74 private static final String MARK_RECORD_COUNT_LIST = "record_count_list";
75 private static final String MARK_AUTHORIZED_DIRECTORY_MODIFICATION_LIST = "authorized_directory_modification_list";
76 private static final String MARK_PERMISSION_CREATE = "permission_create";
77
78
79 private static final String EMPTY_STRING = "";
80
81
82 private static final String TEMPLATE_DASHBOARD = "/admin/plugins/directory/directory_dashboard.html";
83
84
85
86
87 @Override
88 public String getDashboardData( AdminUser user, HttpServletRequest request )
89 {
90 Right right = RightHome.findByPrimaryKey( getRight( ) );
91 Plugin plugin = PluginService.getPlugin( right.getPluginName( ) );
92 List<DirectoryAction> listActions;
93 List<DirectoryAction> listActionsForDirectoryEnable;
94 List<DirectoryAction> listActionsForDirectoryDisable;
95
96 if ( !( ( plugin.getDbPoolName( ) != null ) && !AppConnectionService.NO_POOL_DEFINED.equals( plugin.getDbPoolName( ) ) ) )
97 {
98 return EMPTY_STRING;
99 }
100
101 UrlItem url = new UrlItem( right.getUrl( ) );
102 url.addParameter( DirectoryPlugin.PLUGIN_NAME, right.getPluginName( ) );
103
104 Map<String, Object> model = new HashMap<String, Object>( );
105 List<Directory> directoryList = getDirectoryList( user, plugin );
106
107 listActionsForDirectoryEnable = DirectoryActionHome.selectActionsByFormState( Directory.STATE_ENABLE, getPlugin( ), user.getLocale( ) );
108 listActionsForDirectoryDisable = DirectoryActionHome.selectActionsByFormState( Directory.STATE_DISABLE, getPlugin( ), user.getLocale( ) );
109
110 Map<String, Object> recordCountMap = new HashMap<String, Object>( );
111 List<Integer> nAuthorizedModificationList = new ArrayList<Integer>( );
112
113 for ( Directory directory : directoryList )
114 {
115 if ( directory.isEnabled( ) )
116 {
117 listActions = listActionsForDirectoryEnable;
118 }
119 else
120 {
121 listActions = listActionsForDirectoryDisable;
122 }
123
124 listActions = (List<DirectoryAction>) RBACService.getAuthorizedActionsCollection( listActions, directory, user );
125 directory.setActions( listActions );
126
127 if ( RBACService.isAuthorized( directory, DirectoryResourceIdService.PERMISSION_MODIFY, user ) )
128 {
129 nAuthorizedModificationList.add( directory.getIdDirectory( ) );
130 }
131
132
133 recordCountMap.put( Integer.toString( directory.getIdDirectory( ) ), DirectoryService.getInstance( ).getRecordsCount( directory, user ) );
134 }
135
136 model.put( MARK_DIRECTORY_LIST, directoryList );
137 model.put( MARK_RECORD_COUNT_LIST, recordCountMap );
138 model.put( MARK_AUTHORIZED_DIRECTORY_MODIFICATION_LIST, nAuthorizedModificationList );
139
140 model.put( MARK_URL, url.getUrl( ) );
141 model.put( MARK_ICON, plugin.getIconUrl( ) );
142 model.put( MARK_PERMISSION_CREATE,
143 RBACService.isAuthorized( Directory.RESOURCE_TYPE, RBAC.WILDCARD_RESOURCES_ID, DirectoryResourceIdService.PERMISSION_CREATE, user ) );
144
145 HtmlTemplate t = AppTemplateService.getTemplate( TEMPLATE_DASHBOARD, user.getLocale( ), model );
146
147 return t.getHtml( );
148 }
149
150
151
152
153
154
155
156
157
158
159 private List<Directory> getDirectoryList( AdminUser user, Plugin plugin )
160 {
161 DirectoryFilter filter = new DirectoryFilter( );
162 List<Directory> directoryList = DirectoryHome.getDirectoryList( filter, getPlugin( ) );
163
164 return (List<Directory>) AdminWorkgroupService.getAuthorizedCollection( directoryList, user );
165 }
166 }