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.document.web.category;
35
36 import fr.paris.lutece.plugins.document.business.category.Category;
37 import fr.paris.lutece.plugins.document.business.category.CategoryHome;
38 import fr.paris.lutece.plugins.document.service.category.CategoryService;
39 import fr.paris.lutece.plugins.document.service.category.CategoryService.CategoryDisplay;
40 import fr.paris.lutece.plugins.document.utils.IntegerUtils;
41 import fr.paris.lutece.portal.business.user.AdminUser;
42 import fr.paris.lutece.portal.service.message.AdminMessage;
43 import fr.paris.lutece.portal.service.message.AdminMessageService;
44 import fr.paris.lutece.portal.service.template.AppTemplateService;
45 import fr.paris.lutece.portal.service.workgroup.AdminWorkgroupService;
46 import fr.paris.lutece.portal.web.admin.AdminFeaturesPageJspBean;
47 import fr.paris.lutece.portal.web.constants.Messages;
48 import fr.paris.lutece.portal.web.upload.MultipartHttpServletRequest;
49 import fr.paris.lutece.util.ReferenceList;
50 import fr.paris.lutece.util.html.HtmlTemplate;
51 import fr.paris.lutece.util.url.UrlItem;
52
53 import org.apache.commons.fileupload.FileItem;
54 import org.apache.commons.lang3.StringUtils;
55
56 import java.util.Collection;
57 import java.util.HashMap;
58 import java.util.Map;
59
60 import javax.servlet.http.HttpServletRequest;
61
62
63
64
65
66
67 public class CategoryJspBean extends AdminFeaturesPageJspBean
68 {
69
70 public static final String RIGHT_CATEGORY_MANAGEMENT = "DOCUMENT_CATEGORY_MANAGEMENT";
71
72
73
74
75 private static final long serialVersionUID = -3587422846030414228L;
76
77
78 private static final String REGEX_ID = "^[\\d]+$";
79 private static final int ERROR_ID_CATEGORY = -1;
80
81
82 private static final String JSP_URL_REMOVE_CATEGORY = "jsp/admin/plugins/document/DoRemoveCategory.jsp";
83
84
85 private static final String MARK_CATEGORY_LIST = "category_list";
86 private static final String MARK_CATEGORY_DISPLAY = "categoryDisplay";
87 private static final String MARK_USER_WORKGROUP_LIST = "user_workgroup_list";
88 private static final String MARK_WORKGROUP_SELECTED = "selected_workgroup";
89
90
91 private static final String PARAMETER_CATEGORY_ID = "category_id";
92 private static final String PARAMETER_CATEGORY_NAME = "category_name";
93 private static final String PARAMETER_CATEGORY_DESCRIPTION = "category_description";
94 private static final String PARAMETER_CATEGORY_UPDATE_ICON = "update_icon";
95 private static final String PARAMETER_IMAGE_CONTENT = "category_icon";
96 private static final String PARAMETER_WORKGROUP_KEY = "workgroup_key";
97
98
99 private static final String TEMPLATE_MANAGE_CATEGORY = "admin/plugins/document/category/manage_category.html";
100 private static final String TEMPLATE_CREATE_CATEGORY = "admin/plugins/document/category/create_category.html";
101 private static final String TEMPLATE_MODIFY_CATEGORY = "admin/plugins/document/category/modify_category.html";
102
103
104 private static final String PROPERTY_PAGE_TITLE_CREATE_CATEGORY = "document.create_category.pageTitle";
105 private static final String PROPERTY_PAGE_TITLE_MODIFY_CATEGORY = "document.modify_category.pageTitle";
106
107
108 private static final String MESSAGE_CATEGORY_EXIST = "document.message.categoryExist";
109 private static final String MESSAGE_CATEGORY_IS_LINKED = "document.message.categoryIsLinked";
110 private static final String MESSAGE_CATEGORY_ERROR = "document.message.categoryError";
111 private static final String MESSAGE_CONFIRM_REMOVE_CATEGORY = "document.message.confirmRemoveCategory";
112
113
114
115
116 public CategoryJspBean( )
117 {
118 }
119
120
121
122
123
124
125 public String getManageCategory( HttpServletRequest request )
126 {
127 setPageTitleProperty( null );
128
129 AdminUser user = getUser( );
130
131 HashMap<String, Collection<CategoryDisplay>> model = new HashMap<String, Collection<CategoryDisplay>>( );
132 model.put( MARK_CATEGORY_LIST, CategoryService.getAllCategoriesDisplay( user ) );
133
134 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_MANAGE_CATEGORY, getLocale( ), model );
135
136 return getAdminPage( template.getHtml( ) );
137 }
138
139
140
141
142
143
144 public String getCreateCategory( HttpServletRequest request )
145 {
146 setPageTitleProperty( PROPERTY_PAGE_TITLE_CREATE_CATEGORY );
147
148 AdminUser user = getUser( );
149 ReferenceList refListWorkGroups = AdminWorkgroupService.getUserWorkgroups( user, getLocale( ) );
150 Map<String, Object> model = new HashMap<String, Object>( );
151 model.put( MARK_USER_WORKGROUP_LIST, refListWorkGroups );
152
153
154 if ( !refListWorkGroups.isEmpty( ) )
155 {
156 model.put( MARK_WORKGROUP_SELECTED, refListWorkGroups.get( 0 ).getCode( ) );
157 }
158
159 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_CREATE_CATEGORY, getLocale( ), model );
160
161 return getAdminPage( template.getHtml( ) );
162 }
163
164
165
166
167
168
169 public String doCreateCategory( HttpServletRequest request )
170 {
171 Category/document/business/category/Category.html#Category">Category category = new Category( );
172 String strCategoryName = request.getParameter( PARAMETER_CATEGORY_NAME ).trim( );
173 String strCategoryDescription = request.getParameter( PARAMETER_CATEGORY_DESCRIPTION ).trim( );
174 String strWorkgroup = request.getParameter( PARAMETER_WORKGROUP_KEY );
175
176 MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;
177 FileItem item = mRequest.getFile( PARAMETER_IMAGE_CONTENT );
178
179
180 if ( ( strCategoryName.length( ) == 0 ) || ( strCategoryDescription.length( ) == 0 ) )
181 {
182 return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
183 }
184
185
186 if ( CategoryHome.findByName( strCategoryName ).size( ) > 0 )
187 {
188 return AdminMessageService.getMessageUrl( request, MESSAGE_CATEGORY_EXIST, AdminMessage.TYPE_STOP );
189 }
190
191 category.setName( strCategoryName );
192 category.setDescription( strCategoryDescription );
193
194 byte[] bytes = item.get( );
195
196 category.setIconContent( bytes );
197 category.setIconMimeType( item.getContentType( ) );
198 category.setWorkgroup( strWorkgroup );
199 CategoryHome.create( category );
200
201 return getHomeUrl( request );
202 }
203
204
205
206
207
208
209 public String getModifyCategory( HttpServletRequest request )
210 {
211 setPageTitleProperty( PROPERTY_PAGE_TITLE_MODIFY_CATEGORY );
212
213 AdminUser user = getUser( );
214 ReferenceList refListWorkGroups = AdminWorkgroupService.getUserWorkgroups( user, getLocale( ) );
215 int nIdCategory = checkCategoryId( request );
216
217 if ( nIdCategory == ERROR_ID_CATEGORY )
218 {
219 return AdminMessageService.getMessageUrl( request, MESSAGE_CATEGORY_ERROR, AdminMessage.TYPE_ERROR );
220 }
221
222 CategoryDisplay categoryDisplay = CategoryService.getCategoryDisplay( nIdCategory );
223
224 if ( categoryDisplay == null )
225 {
226 return getManageCategory( request );
227 }
228
229 Map<String, Object> model = new HashMap<String, Object>( );
230
231 model.put( MARK_CATEGORY_DISPLAY, categoryDisplay );
232 model.put( MARK_USER_WORKGROUP_LIST, refListWorkGroups );
233
234 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_MODIFY_CATEGORY, getLocale( ), model );
235
236 return getAdminPage( template.getHtml( ) );
237 }
238
239
240
241
242
243
244 public String doModifyCategory( HttpServletRequest request )
245 {
246 Category category = null;
247 String strCategoryName = request.getParameter( PARAMETER_CATEGORY_NAME ).trim( );
248 String strCategoryDescription = request.getParameter( PARAMETER_CATEGORY_DESCRIPTION ).trim( );
249 String strCategoryUpdateIcon = request.getParameter( PARAMETER_CATEGORY_UPDATE_ICON );
250 String strWorkgroup = request.getParameter( PARAMETER_WORKGROUP_KEY );
251
252 int nIdCategory = checkCategoryId( request );
253
254 if ( nIdCategory == ERROR_ID_CATEGORY )
255 {
256 return AdminMessageService.getMessageUrl( request, MESSAGE_CATEGORY_ERROR, AdminMessage.TYPE_ERROR );
257 }
258
259
260 if ( ( strCategoryName.length( ) == 0 ) || ( strCategoryDescription.length( ) == 0 ) )
261 {
262 return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
263 }
264
265
266 Collection<Category> categoriesList = CategoryHome.findByName( strCategoryName );
267
268 if ( !categoriesList.isEmpty( ) && ( categoriesList.iterator( ).next( ).getId( ) != nIdCategory ) )
269 {
270 return AdminMessageService.getMessageUrl( request, MESSAGE_CATEGORY_EXIST, AdminMessage.TYPE_STOP );
271 }
272
273 category = CategoryHome.find( nIdCategory );
274 category.setName( strCategoryName );
275 category.setDescription( strCategoryDescription );
276
277 if ( strCategoryUpdateIcon != null )
278 {
279 MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;
280 FileItem item = mRequest.getFile( PARAMETER_IMAGE_CONTENT );
281
282 byte[] bytes = item.get( );
283 category.setIconContent( bytes );
284 category.setIconMimeType( item.getContentType( ) );
285 }
286
287 category.setWorkgroup( strWorkgroup );
288
289 CategoryHome.update( category );
290
291 return getHomeUrl( request );
292 }
293
294
295
296
297
298
299
300 public String getConfirmRemoveCategory( HttpServletRequest request )
301 {
302 int nIdCategory = checkCategoryId( request );
303
304 if ( nIdCategory == ERROR_ID_CATEGORY )
305 {
306 return AdminMessageService.getMessageUrl( request, MESSAGE_CATEGORY_ERROR, AdminMessage.TYPE_ERROR );
307 }
308
309
310 if ( CategoryHome.findCountIdDocuments( nIdCategory ) > 0 )
311 {
312 return AdminMessageService.getMessageUrl( request, MESSAGE_CATEGORY_IS_LINKED, AdminMessage.TYPE_STOP );
313 }
314
315 UrlItem url = new UrlItem( JSP_URL_REMOVE_CATEGORY );
316 url.addParameter( PARAMETER_CATEGORY_ID, Integer.toString( nIdCategory ) );
317
318 return AdminMessageService.getMessageUrl( request, MESSAGE_CONFIRM_REMOVE_CATEGORY, url.getUrl( ),
319 AdminMessage.TYPE_CONFIRMATION );
320 }
321
322
323
324
325
326
327 public String doRemoveCategory( HttpServletRequest request )
328 {
329 int nIdCategory = checkCategoryId( request );
330
331 if ( nIdCategory == ERROR_ID_CATEGORY )
332 {
333 return AdminMessageService.getMessageUrl( request, MESSAGE_CATEGORY_ERROR, AdminMessage.TYPE_ERROR );
334 }
335
336
337 if ( CategoryHome.findCountIdDocuments( nIdCategory ) > 0 )
338 {
339 return AdminMessageService.getMessageUrl( request, MESSAGE_CATEGORY_IS_LINKED, AdminMessage.TYPE_STOP );
340 }
341
342 CategoryHome.remove( nIdCategory );
343
344 return getHomeUrl( request );
345 }
346
347
348
349
350
351
352 private int checkCategoryId( HttpServletRequest request )
353 {
354 String strCategoryId = request.getParameter( PARAMETER_CATEGORY_ID );
355
356 if ( StringUtils.isBlank( strCategoryId ) || !strCategoryId.matches( REGEX_ID ) )
357 {
358 return ERROR_ID_CATEGORY;
359 }
360
361 return IntegerUtils.convert( strCategoryId );
362 }
363 }