View Javadoc
1   /*
2    * Copyright (c) 2002-2017, Mairie de Paris
3    * All rights reserved.
4    *
5    * Redistribution and use in source and binary forms, with or without
6    * modification, are permitted provided that the following conditions
7    * are met:
8    *
9    *  1. Redistributions of source code must retain the above copyright notice
10   *     and the following disclaimer.
11   *
12   *  2. Redistributions in binary form must reproduce the above copyright notice
13   *     and the following disclaimer in the documentation and/or other materials
14   *     provided with the distribution.
15   *
16   *  3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
17   *     contributors may be used to endorse or promote products derived from
18   *     this software without specific prior written permission.
19   *
20   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
24   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30   * POSSIBILITY OF SUCH DAMAGE.
31   *
32   * License 1.0
33   */
34  package fr.paris.lutece.plugins.directory.service;
35  
36  import fr.paris.lutece.plugins.directory.business.Directory;
37  import fr.paris.lutece.plugins.directory.business.DirectoryHome;
38  import fr.paris.lutece.plugins.directory.utils.DirectoryUtils;
39  import fr.paris.lutece.portal.service.plugin.PluginService;
40  import fr.paris.lutece.portal.service.rbac.Permission;
41  import fr.paris.lutece.portal.service.rbac.ResourceIdService;
42  import fr.paris.lutece.portal.service.rbac.ResourceType;
43  import fr.paris.lutece.portal.service.rbac.ResourceTypeManager;
44  import fr.paris.lutece.util.ReferenceList;
45  
46  import java.util.Locale;
47  
48  /**
49   *
50   * class DirectoryResourceIdService
51   *
52   */
53  public class DirectoryResourceIdService extends ResourceIdService
54  {
55      /** Permission for creating a directory */
56      public static final String PERMISSION_CREATE = "CREATE";
57  
58      /** Permission for creating a directory */
59      public static final String PERMISSION_CREATE_RECORD = "CREATE_RECORD";
60  
61      /** Permission for managing record */
62      public static final String PERMISSION_MANAGE_RECORD = "MANAGE_RECORD";
63  
64      /** Permission for import record */
65      public static final String PERMISSION_IMPORT_RECORD = "IMPORT_RECORD";
66  
67      /** Permission for deleting all directory record */
68      public static final String PERMISSION_DELETE_ALL_RECORD = "DELETE_ALL_RECORD";
69  
70      /** Permission for deleting a directory */
71      public static final String PERMISSION_DELETE = "DELETE";
72  
73      /** Permission for deleting a directory */
74      public static final String PERMISSION_DELETE_RECORD = "DELETE_RECORD";
75  
76      /** Permission for modifying a directory */
77      public static final String PERMISSION_MODIFY = "MODIFY";
78  
79      /** Permission for modifying a directory */
80      public static final String PERMISSION_MODIFY_RECORD = "MODIFY_RECORD";
81  
82      /** Permission for copying a directory */
83      public static final String PERMISSION_COPY = "COPY";
84  
85      /** Permission for copying a directory */
86      public static final String PERMISSION_COPY_RECORD = "COPY_RECORD";
87  
88      /** Permission for indexing all directory */
89      public static final String PERMISSION_INDEX_ALL_DIRECTORY = "INDEX_ALL_DIRECTORY";
90  
91      /** Permission for enable or disable a directory */
92      public static final String PERMISSION_CHANGE_STATE = "CHANGE_STATE";
93  
94      /** Permission for enable or disable a directory */
95      public static final String PERMISSION_CHANGE_STATE_RECORD = "CHANGE_STATE_RECORD";
96  
97      /** Permission for enable history */
98      public static final String PERMISSION_HISTORY_RECORD = "HISTORY_RECORD";
99  
100     /** Permission for mass print */
101     public static final String PERMISSION_MASS_PRINT = "MASS_PRINT";
102 
103     /** Permission for managing advanced parameters */
104     public static final String PERMISSION_MANAGE_ADVANCED_PARAMETERS = "MANAGE_ADVANCED_PARAMETERS";
105 
106     /** Permission for record visualisation */
107     public static final String PERMISSION_VISUALISATION_RECORD = "VISUALISATION_RECORD";
108 
109     /** Permission for import record */
110     public static final String PERMISSION_IMPORT_FIELD = "IMPORT_FIELD";
111 
112     /** Permission for mylutece user visualisation */
113     public static final String PERMISSION_VISUALISATION_MYLUTECE_USER = "VISUALISATION_MYLUTECE_USER";
114 
115     /** Label resource type */
116     public static final String PROPERTY_LABEL_RESOURCE_TYPE = "directory.permission.label.resource_type_directory";
117     private static final String PROPERTY_LABEL_CREATE = "directory.permission.label.create_directory";
118     private static final String PROPERTY_LABEL_MANAGE_RECORD = "directory.permission.label.manage_directory_record";
119     private static final String PROPERTY_LABEL_DELETE_ALL_RECORD = "directory.permission.label.delete_all_directory_record";
120     private static final String PROPERTY_LABEL_DELETE = "directory.permission.label.delete_directory";
121     private static final String PROPERTY_LABEL_MODIFY = "directory.permission.label.modify_directory";
122     private static final String PROPERTY_LABEL_COPY = "directory.permission.label.copy_directory";
123     private static final String PROPERTY_LABEL_CHANGE_STATE = "directory.permission.label.change_state_directory";
124     private static final String PROPERTY_LABEL_INDEX_ALL_DIRECTORY = "directory.permission.label.index_all_directory";
125     private static final String PROPERTY_LABEL_CREATE_RECORD = "directory.permission.label.create_directory_record";
126     private static final String PROPERTY_LABEL_DELETE_RECORD = "directory.permission.label.delete_directory_record";
127     private static final String PROPERTY_LABEL_MODIFY_RECORD = "directory.permission.label.modify_directory_record";
128     private static final String PROPERTY_LABEL_COPY_RECORD = "directory.permission.label.copy_directory_record";
129     private static final String PROPERTY_LABEL_CHANGE_STATE_RECORD = "directory.permission.label.change_state_directory_record";
130     private static final String PROPERTY_LABEL_HISTORY_RECORD = "directory.permission.label.change_history_record";
131     private static final String PROPERTY_LABEL_VISUALISATION_RECORD = "directory.permission.label.visualisation_record";
132     private static final String PROPERTY_LABEL_IMPORT_RECORD = "directory.permission.label.import_record";
133     private static final String PROPERTY_LABEL_MASS_PRINT = "directory.permission.label.mass_print";
134     private static final String PROPERTY_LABEL_MANAGE_ADVANCED_PARAMETERS = "directory.permission.label.manage_advanced_parameters";
135     private static final String PROPERTY_LABEL_VISUALISATION_MYLUTECE_USER = "directory.permission.label.visualisation_mylutece_user";
136     private static final String PROPERTY_LABEL_IMPORT_FIELD = "directory.permission.label.import_field";
137 
138     /** Creates a new instance of DocumentTypeResourceIdService */
139     public DirectoryResourceIdService( )
140     {
141         setPluginName( DirectoryPlugin.PLUGIN_NAME );
142     }
143 
144     /**
145      * {@inheritDoc}
146      */
147     @Override
148     public void register( )
149     {
150         // Override the resource type DIRECTORY_DIRECTORY_TYPE
151         ResourceType rt = ResourceTypeManager.getResourceType( Directory.RESOURCE_TYPE );
152 
153         if ( rt == null )
154         {
155             rt = new ResourceType( );
156             rt.setResourceIdServiceClass( DirectoryResourceIdService.class.getName( ) );
157             rt.setPluginName( DirectoryPlugin.PLUGIN_NAME );
158             rt.setResourceTypeKey( Directory.RESOURCE_TYPE );
159             rt.setResourceTypeLabelKey( PROPERTY_LABEL_RESOURCE_TYPE );
160         }
161 
162         Permission p = new Permission( );
163         p.setPermissionKey( PERMISSION_CREATE );
164         p.setPermissionTitleKey( PROPERTY_LABEL_CREATE );
165         rt.registerPermission( p );
166 
167         p = new Permission( );
168         p.setPermissionKey( PERMISSION_MODIFY );
169         p.setPermissionTitleKey( PROPERTY_LABEL_MODIFY );
170         rt.registerPermission( p );
171 
172         p = new Permission( );
173         p.setPermissionKey( PERMISSION_COPY );
174         p.setPermissionTitleKey( PROPERTY_LABEL_COPY );
175         rt.registerPermission( p );
176 
177         p = new Permission( );
178         p.setPermissionKey( PERMISSION_MANAGE_RECORD );
179         p.setPermissionTitleKey( PROPERTY_LABEL_MANAGE_RECORD );
180         rt.registerPermission( p );
181 
182         p = new Permission( );
183         p.setPermissionKey( PERMISSION_DELETE_ALL_RECORD );
184         p.setPermissionTitleKey( PROPERTY_LABEL_DELETE_ALL_RECORD );
185         rt.registerPermission( p );
186 
187         p = new Permission( );
188         p.setPermissionKey( PERMISSION_CHANGE_STATE );
189         p.setPermissionTitleKey( PROPERTY_LABEL_CHANGE_STATE );
190         rt.registerPermission( p );
191 
192         p = new Permission( );
193         p.setPermissionKey( PERMISSION_DELETE );
194         p.setPermissionTitleKey( PROPERTY_LABEL_DELETE );
195         rt.registerPermission( p );
196 
197         p = new Permission( );
198         p.setPermissionKey( PERMISSION_INDEX_ALL_DIRECTORY );
199         p.setPermissionTitleKey( PROPERTY_LABEL_INDEX_ALL_DIRECTORY );
200         rt.registerPermission( p );
201 
202         p = new Permission( );
203         p.setPermissionKey( PERMISSION_CREATE_RECORD );
204         p.setPermissionTitleKey( PROPERTY_LABEL_CREATE_RECORD );
205         rt.registerPermission( p );
206 
207         p = new Permission( );
208         p.setPermissionKey( PERMISSION_DELETE_RECORD );
209         p.setPermissionTitleKey( PROPERTY_LABEL_DELETE_RECORD );
210         rt.registerPermission( p );
211 
212         p = new Permission( );
213         p.setPermissionKey( PERMISSION_MODIFY_RECORD );
214         p.setPermissionTitleKey( PROPERTY_LABEL_MODIFY_RECORD );
215         rt.registerPermission( p );
216 
217         p = new Permission( );
218         p.setPermissionKey( PERMISSION_COPY_RECORD );
219         p.setPermissionTitleKey( PROPERTY_LABEL_COPY_RECORD );
220         rt.registerPermission( p );
221 
222         p = new Permission( );
223         p.setPermissionKey( PERMISSION_CHANGE_STATE_RECORD );
224         p.setPermissionTitleKey( PROPERTY_LABEL_CHANGE_STATE_RECORD );
225         rt.registerPermission( p );
226 
227         p = new Permission( );
228         p.setPermissionKey( PERMISSION_HISTORY_RECORD );
229         p.setPermissionTitleKey( PROPERTY_LABEL_HISTORY_RECORD );
230         rt.registerPermission( p );
231 
232         p = new Permission( );
233         p.setPermissionKey( PERMISSION_VISUALISATION_RECORD );
234         p.setPermissionTitleKey( PROPERTY_LABEL_VISUALISATION_RECORD );
235         rt.registerPermission( p );
236 
237         p = new Permission( );
238         p.setPermissionKey( PERMISSION_IMPORT_RECORD );
239         p.setPermissionTitleKey( PROPERTY_LABEL_IMPORT_RECORD );
240         rt.registerPermission( p );
241 
242         p = new Permission( );
243         p.setPermissionKey( PERMISSION_MASS_PRINT );
244         p.setPermissionTitleKey( PROPERTY_LABEL_MASS_PRINT );
245         rt.registerPermission( p );
246 
247         p = new Permission( );
248         p.setPermissionKey( PERMISSION_MANAGE_ADVANCED_PARAMETERS );
249         p.setPermissionTitleKey( PROPERTY_LABEL_MANAGE_ADVANCED_PARAMETERS );
250         rt.registerPermission( p );
251 
252         p = new Permission( );
253         p.setPermissionKey( PERMISSION_VISUALISATION_MYLUTECE_USER );
254         p.setPermissionTitleKey( PROPERTY_LABEL_VISUALISATION_MYLUTECE_USER );
255         rt.registerPermission( p );
256 
257         p = new Permission( );
258         p.setPermissionKey( PERMISSION_IMPORT_FIELD );
259         p.setPermissionTitleKey( PROPERTY_LABEL_IMPORT_FIELD );
260         rt.registerPermission( p );
261 
262         ResourceTypeManager.registerResourceType( rt );
263     }
264 
265     /**
266      * Returns a list of directory resource ids
267      * 
268      * @param locale
269      *            The current locale
270      * @return A list of resource ids
271      */
272     @Override
273     public ReferenceList getResourceIdList( Locale locale )
274     {
275         return DirectoryHome.getDirectoryList( PluginService.getPlugin( DirectoryPlugin.PLUGIN_NAME ) );
276     }
277 
278     /**
279      * {@inheritDoc}
280      */
281     @Override
282     public String getTitle( String strId, Locale locale )
283     {
284         int nIdDirectory = DirectoryUtils.convertStringToInt( strId );
285         Directory directory = DirectoryHome.findByPrimaryKey( nIdDirectory, PluginService.getPlugin( DirectoryPlugin.PLUGIN_NAME ) );
286 
287         return ( directory != null ) ? directory.getTitle( ) : null;
288     }
289 }