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.newsletter.service;
35
36 import fr.paris.lutece.plugins.newsletter.business.NewsLetter;
37 import fr.paris.lutece.plugins.newsletter.business.NewsLetterHome;
38 import fr.paris.lutece.portal.service.plugin.PluginService;
39 import fr.paris.lutece.portal.service.rbac.Permission;
40 import fr.paris.lutece.portal.service.rbac.ResourceIdService;
41 import fr.paris.lutece.portal.service.rbac.ResourceType;
42 import fr.paris.lutece.portal.service.rbac.ResourceTypeManager;
43 import fr.paris.lutece.util.ReferenceList;
44
45 import java.util.Locale;
46
47
48
49
50 public class NewsletterResourceIdService extends ResourceIdService
51 {
52
53
54
55 public static final String PERMISSION_ARCHIVE = "ARCHIVE";
56
57
58
59
60 public static final String PERMISSION_CREATE = "CREATE";
61
62
63
64
65 public static final String PERMISSION_CLEAN_SUBSCRIBERS = "CLEAN";
66
67
68
69
70 public static final String PERMISSION_DELETE = "DELETE";
71
72
73
74
75 public static final String PERMISSION_MODIFY = "MODIFY";
76
77
78
79
80 public static final String PERMISSION_SEND = "SEND";
81
82
83
84
85 public static final String PERMISSION_MANAGE_SUBSCRIBERS = "MANAGE_SUBSCRIBERS";
86
87
88
89
90 public static final String PERMISSION_EXPORT_SUBSCRIBERS = "EXPORT_SUBSCRIBERS";
91
92
93
94
95 public static final String PERMISSION_IMPORT_SUBSCRIBERS = "IMPORT_SUBSCRIBERS";
96
97
98
99
100 public static final String PERMISSION_ADD_SUBSCRIBER = "ADD_SUBSCRIBERS";
101
102
103
104
105 public static final String PERMISSION_NEWSLETTER_ADVANCED_SETTINGS = "NEWSLETTER_ADVANCED_SETTINGS";
106
107 private static final String REGEX_ID = "^[\\d]+$";
108
109
110 private static final String PROPERTY_LABEL_RESOURCE_TYPE = "newsletter.newsletter.resourceType";
111 private static final String PROPERTY_LABEL_CREATE = "newsletter.permission.newsletter.label.create";
112 private static final String PROPERTY_LABEL_DELETE = "newsletter.permission.newsletter.label.delete";
113 private static final String PROPERTY_LABEL_MODIFY = "newsletter.permission.newsletter.label.modify";
114 private static final String PROPERTY_LABEL_SEND = "newsletter.permission.newsletter.label.send";
115 private static final String PROPERTY_LABEL_MANAGE_SUBSCRIBERS = "newsletter.permission.newsletter.label.manageSubscribers";
116 private static final String PROPERTY_LABEL_EXPORT_SUBSCRIBERS = "newsletter.permission.newsletter.label.exportSubscribers";
117 private static final String PROPERTY_LABEL_IMPORT_SUBSCRIBERS = "newsletter.permission.newsletter.label.importSubscribers";
118 private static final String PROPERTY_LABEL_ADD_SUBSCRIBER = "newsletter.permission.newsletter.label.addSubscriber";
119 private static final String PROPERTY_LABEL_MANAGE_ARCHIVE = "newsletter.permission.newsletter.label.archive";
120 private static final String PROPERTY_LABEL_CLEAN_SUBSCRIBERS = "newsletter.permission.newsletter.label.clean";
121 private static final String PROPERTY_LABEL_NEWSLETTER_ADVANCED_SETTINGS = "newsletter.permission.label.newsletterAdvancedSettings";
122
123
124 public NewsletterResourceIdService( )
125 {
126 setPluginName( NewsletterPlugin.PLUGIN_NAME );
127 }
128
129
130
131
132 public void register( )
133 {
134 ResourceType rt = new ResourceType( );
135 rt.setResourceIdServiceClass( NewsletterResourceIdService.class.getName( ) );
136 rt.setPluginName( NewsletterPlugin.PLUGIN_NAME );
137 rt.setResourceTypeKey( NewsLetter.RESOURCE_TYPE );
138 rt.setResourceTypeLabelKey( PROPERTY_LABEL_RESOURCE_TYPE );
139
140 Permission p = new Permission( );
141 p.setPermissionKey( PERMISSION_CREATE );
142 p.setPermissionTitleKey( PROPERTY_LABEL_CREATE );
143 rt.registerPermission( p );
144
145 p = new Permission( );
146 p.setPermissionKey( PERMISSION_DELETE );
147 p.setPermissionTitleKey( PROPERTY_LABEL_DELETE );
148 rt.registerPermission( p );
149
150 p = new Permission( );
151 p.setPermissionKey( PERMISSION_MODIFY );
152 p.setPermissionTitleKey( PROPERTY_LABEL_MODIFY );
153 rt.registerPermission( p );
154
155 p = new Permission( );
156 p.setPermissionKey( PERMISSION_SEND );
157 p.setPermissionTitleKey( PROPERTY_LABEL_SEND );
158 rt.registerPermission( p );
159
160 p = new Permission( );
161 p.setPermissionKey( PERMISSION_MANAGE_SUBSCRIBERS );
162 p.setPermissionTitleKey( PROPERTY_LABEL_MANAGE_SUBSCRIBERS );
163 rt.registerPermission( p );
164
165 p = new Permission( );
166 p.setPermissionKey( PERMISSION_EXPORT_SUBSCRIBERS );
167 p.setPermissionTitleKey( PROPERTY_LABEL_EXPORT_SUBSCRIBERS );
168 rt.registerPermission( p );
169
170 p = new Permission( );
171 p.setPermissionKey( PERMISSION_IMPORT_SUBSCRIBERS );
172 p.setPermissionTitleKey( PROPERTY_LABEL_IMPORT_SUBSCRIBERS );
173 rt.registerPermission( p );
174
175 p = new Permission( );
176 p.setPermissionKey( PERMISSION_ADD_SUBSCRIBER );
177 p.setPermissionTitleKey( PROPERTY_LABEL_ADD_SUBSCRIBER );
178 rt.registerPermission( p );
179
180 p = new Permission( );
181 p.setPermissionKey( PERMISSION_ARCHIVE );
182 p.setPermissionTitleKey( PROPERTY_LABEL_MANAGE_ARCHIVE );
183 rt.registerPermission( p );
184
185 p = new Permission( );
186 p.setPermissionKey( PERMISSION_CLEAN_SUBSCRIBERS );
187 p.setPermissionTitleKey( PROPERTY_LABEL_CLEAN_SUBSCRIBERS );
188 rt.registerPermission( p );
189
190 p = new Permission( );
191 p.setPermissionKey( PERMISSION_NEWSLETTER_ADVANCED_SETTINGS );
192 p.setPermissionTitleKey( PROPERTY_LABEL_NEWSLETTER_ADVANCED_SETTINGS );
193 rt.registerPermission( p );
194
195 ResourceTypeManager.registerResourceType( rt );
196 }
197
198
199
200
201
202
203
204
205 public ReferenceList getResourceIdList( Locale locale )
206 {
207 return NewsLetterHome.findAllId( PluginService.getPlugin( NewsletterPlugin.PLUGIN_NAME ) );
208 }
209
210
211
212
213
214
215
216
217
218
219 public String getTitle( String strId, Locale locale )
220 {
221 if ( ( strId == null ) || !strId.matches( REGEX_ID ) )
222 {
223 return null;
224 }
225
226 NewsLetter newsletter = NewsLetterHome.findByPrimaryKey( Integer.parseInt( strId ), PluginService.getPlugin( NewsletterPlugin.PLUGIN_NAME ) );
227
228 return ( newsletter != null ) ? newsletter.getName( ) : null;
229 }
230 }