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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 package fr.paris.lutece.plugins.cgu.web;
69
70 import fr.paris.lutece.plugins.cgu.business.Cgu;
71 import fr.paris.lutece.plugins.cgu.business.CguHome;
72 import fr.paris.lutece.plugins.cgu.business.CguVersion;
73 import fr.paris.lutece.plugins.cgu.business.CguVersionHome;
74 import fr.paris.lutece.portal.service.util.AppPathService;
75 import fr.paris.lutece.portal.util.mvc.admin.annotations.Controller;
76 import fr.paris.lutece.portal.util.mvc.commons.annotations.Action;
77 import fr.paris.lutece.portal.util.mvc.commons.annotations.View;
78
79 import java.util.ArrayList;
80 import java.util.List;
81 import java.util.Map;
82 import javax.servlet.http.HttpServletRequest;
83
84
85
86
87 @Controller( controllerJsp = "ManageCgus.jsp", controllerPath = "jsp/admin/plugins/cgu/", right = "CGU_MANAGEMENT" )
88 public class CguJspBean extends AbstractManageJspBean
89 {
90
91
92
93 private static final long serialVersionUID = -7746974008322818952L;
94
95 private static final String TEMPLATE_MANAGE_CGUS = "/admin/plugins/cgu/manage_cgus.html";
96 private static final String TEMPLATE_CREATE_CGU = "/admin/plugins/cgu/create_cgu.html";
97 private static final String TEMPLATE_MODIFY_CGU = "/admin/plugins/cgu/modify_cgu.html";
98
99
100 private static final String PARAMETER_ID_CGU = "id";
101 private static final String PARAMETER_ID_CGU_VERSION = "id";
102 private static final String PARAMETER_CODE = "cgu_code";
103 private static final String PARAMETER_CSS = "css";
104 private static final String PARAMETER_TEXT = "text";
105 private static final String PARAMETER_MINIMUM_AGE = "minimum_age";
106
107 private static final int ZERO = 0;
108
109
110 private static final String PROPERTY_PAGE_TITLE_MANAGE_CGUS = "cgu.manage_cgus.pageTitle";
111 private static final String PROPERTY_PAGE_TITLE_MODIFY_CGU = "cgu.modify_cgu.pageTitle";
112 private static final String PROPERTY_PAGE_TITLE_CREATE_CGU = "cgu.create_cgu.pageTitle";
113
114
115 private static final String MARK_CGU_LIST = "cgu_list";
116 private static final String MARK_CGU = "cgu";
117 private static final String MARK_WEBAPP_URL = "webapp_url";
118
119 private static final String JSP_MANAGE_CGUS = "jsp/admin/plugins/cgu/ManageCgus.jsp";
120
121
122 private static final String VALIDATION_ATTRIBUTES_PREFIX = "cgu.model.entity.cgu.attribute.";
123
124
125 private static final String VIEW_MANAGE_CGUS = "manageCgus";
126 private static final String VIEW_CREATE_CGU = "createCgu";
127 private static final String VIEW_MODIFY_CGU = "modifyCgu";
128
129
130 private static final String ACTION_CREATE_CGU = "createCgu";
131 private static final String ACTION_MODIFY_CGU = "modifyCgu";
132 private static final String ACTION_PUBLISHED_CGU_VERSION = "publishedCguVersion";
133
134
135 private static final String INFO_CGU_CREATED = "cgu.info.cgu.created";
136 private static final String INFO_CGU_UPDATED = "cgu.info.cgu.updated";
137 private static final String INFO_PUBLISHED_CGU_SUCCESSFUL = "cgu.info.cgu.cguCreated";
138 private static final String INFO_CGU_CODE_ALREADY_USED = "cgu.info.cgu.cguCodeAlreadyUsed";
139 private static final String WARNING_EMPTY_TEXT = "cgu.info.cgu.emptyText";
140 private static final String WARNING_EMPTY_MINIMUM_AGE = "cgu.info.cgu.emptyMinimumAge";
141
142
143 private static final String ACTION_CREATE = "create";
144 private static final String ACTION_MODIFY = "modify";
145
146
147 private Cgu _cgu;
148
149
150
151
152
153
154
155
156 @View( value = VIEW_MANAGE_CGUS, defaultView = true )
157 public String getManageCgus( HttpServletRequest request )
158 {
159 _cgu = null;
160 List<Cgu> listCgu = CguHome.findCguList( );
161 for ( Cgu cgu : listCgu )
162 {
163 List<CguVersion> listCguVersion = CguVersionHome.findCguVersionsByIdCguOrderedByIdCguAndVersion( cgu.getId( ) );
164 cgu.setCguVersions( listCguVersion );
165 }
166 Map<String, Object> model = getPaginatedListModel( request, MARK_CGU_LIST, listCgu, JSP_MANAGE_CGUS );
167
168 model.put( MARK_WEBAPP_URL, AppPathService.getBaseUrl( request ) );
169 return getPage( PROPERTY_PAGE_TITLE_MANAGE_CGUS, TEMPLATE_MANAGE_CGUS, model );
170 }
171
172
173
174
175
176
177
178
179 @View( VIEW_CREATE_CGU )
180 public String getCreateCgu( HttpServletRequest request )
181 {
182 _cgu = ( _cgu != null ) ? _cgu : new Cgu( );
183
184 Map<String, Object> model = getModel( );
185 model.put( MARK_CGU, _cgu );
186 model.put( MARK_WEBAPP_URL, AppPathService.getBaseUrl( request ) );
187 return getPage( PROPERTY_PAGE_TITLE_CREATE_CGU, TEMPLATE_CREATE_CGU, model );
188 }
189
190
191
192
193
194
195
196
197 @Action( ACTION_CREATE_CGU )
198 public String doCreateCgu( HttpServletRequest request )
199 {
200 populate( _cgu, request, request.getLocale( ) );
201
202
203 if ( !validateBean( _cgu, VALIDATION_ATTRIBUTES_PREFIX ) )
204 {
205 return redirectView( request, VIEW_CREATE_CGU );
206 }
207
208 if ( !validateCGU( request, ACTION_CREATE ) )
209 {
210 return redirectView( request, VIEW_CREATE_CGU );
211 }
212
213 String cguCode = request.getParameter( PARAMETER_CODE );
214 _cgu.setCguCode( cguCode );
215 _cgu.setCss( request.getParameter( PARAMETER_CSS ) );
216
217 CguVersion cguVersion = new CguVersion( );
218 CguHome.create( _cgu );
219 cguVersion.setCguId( _cgu.getId( ) );
220 cguVersion.setText( request.getParameter( PARAMETER_TEXT ) );
221 if ( request.getParameter( PARAMETER_MINIMUM_AGE ) != null && !request.getParameter( PARAMETER_MINIMUM_AGE ).isEmpty( )
222 && Integer.parseInt( request.getParameter( PARAMETER_MINIMUM_AGE ) ) > ZERO )
223 {
224 cguVersion.setMinimumAge( Integer.parseInt( request.getParameter( PARAMETER_MINIMUM_AGE ) ) );
225 }
226 else
227 {
228 cguVersion.setMinimumAge( ZERO );
229 }
230 CguVersionHome.create( cguVersion );
231 addError( INFO_CGU_CREATED, getLocale( ) );
232
233 return redirectView( request, VIEW_MANAGE_CGUS );
234 }
235
236
237
238
239
240
241
242
243 @Action( ACTION_PUBLISHED_CGU_VERSION )
244 public String doPublishedCguVersion( HttpServletRequest request )
245 {
246 int nIdCguVersion = Integer.parseInt( request.getParameter( PARAMETER_ID_CGU_VERSION ) );
247 CguVersion cguVersion = CguVersionHome.findByPrimaryKey( nIdCguVersion );
248 cguVersion.setPublished( true );
249 CguVersionHome.update( cguVersion );
250 doCreateNewCguVersion( cguVersion );
251 return redirectView( request, VIEW_MANAGE_CGUS );
252 }
253
254
255
256
257
258
259
260 private void doCreateNewCguVersion( CguVersion cguVersionOld )
261 {
262 CguVersion cguVersion = new CguVersion( );
263 cguVersion.setCguId( cguVersionOld.getCguId( ) );
264 cguVersion.setMinimumAge( cguVersionOld.getMinimumAge( ) );
265 cguVersion.setText( cguVersionOld.getText( ) );
266 cguVersion.setVersion( cguVersionOld.getVersion( ) + 1 );
267
268 CguVersionHome.create( cguVersion );
269 addInfo( INFO_PUBLISHED_CGU_SUCCESSFUL, getLocale( ) );
270 }
271
272
273
274
275
276
277
278
279 @Action( ACTION_MODIFY_CGU )
280 public String doModifyCgu( HttpServletRequest request )
281 {
282 populate( _cgu, request, request.getLocale( ) );
283
284
285 if ( !validateBean( _cgu, VALIDATION_ATTRIBUTES_PREFIX ) )
286 {
287 return redirect( request, VIEW_MODIFY_CGU, PARAMETER_ID_CGU, _cgu.getId( ) );
288 }
289
290 if ( !validateCGU( request, ACTION_MODIFY ) )
291 {
292 return redirect( request, VIEW_MODIFY_CGU, PARAMETER_ID_CGU, _cgu.getId( ) );
293 }
294
295 String strCguCode = request.getParameter( PARAMETER_CODE );
296 _cgu.setCguCode( strCguCode );
297 CguHome.update( _cgu );
298
299 CguVersion cguVersion = CguVersionHome.findUnpublishedCguVersionByCode( strCguCode );
300 if ( request.getParameter( PARAMETER_MINIMUM_AGE ) != null && !request.getParameter( PARAMETER_MINIMUM_AGE ).isEmpty( )
301 && Integer.parseInt( request.getParameter( PARAMETER_MINIMUM_AGE ) ) > ZERO )
302 {
303 cguVersion.setMinimumAge( Integer.parseInt( request.getParameter( PARAMETER_MINIMUM_AGE ) ) );
304 }
305 else
306 {
307 cguVersion.setMinimumAge( ZERO );
308 }
309 cguVersion.setText( request.getParameter( PARAMETER_TEXT ) );
310
311 CguVersionHome.update( cguVersion );
312 addInfo( INFO_CGU_UPDATED, getLocale( ) );
313
314 return redirectView( request, VIEW_MANAGE_CGUS );
315 }
316
317
318
319
320
321
322
323
324 @View( VIEW_MODIFY_CGU )
325 public String getModifyCgu( HttpServletRequest request )
326 {
327 int nIdCgu = Integer.parseInt( request.getParameter( PARAMETER_ID_CGU ) );
328
329 if ( _cgu == null || ( _cgu.getId( ) != nIdCgu ) )
330 {
331 _cgu = CguHome.findByPrimaryKey( nIdCgu );
332 List<CguVersion> listCguVersion = CguVersionHome.findCguVersionsByIdCgu( _cgu.getId( ) );
333 _cgu.setCguVersions( listCguVersion );
334 }
335
336 Map<String, Object> model = getModel( );
337 model.put( MARK_CGU, _cgu );
338 model.put( MARK_WEBAPP_URL, AppPathService.getBaseUrl( request ) );
339 return getPage( PROPERTY_PAGE_TITLE_MODIFY_CGU, TEMPLATE_MODIFY_CGU, model );
340 }
341
342
343
344
345
346
347
348
349
350
351
352 private boolean validateCGU( HttpServletRequest request, String action )
353 {
354 boolean isValid = true;
355 _cgu.setCss( request.getParameter( PARAMETER_CSS ) );
356 Cgu cgu = CguHome.findByCode( request.getParameter( PARAMETER_CODE ) );
357 if ( ( action.equalsIgnoreCase( ACTION_CREATE ) && cgu != null )
358 || ( action.equalsIgnoreCase( ACTION_MODIFY ) && cgu != null && cgu.getId( ) != _cgu.getId( ) ) )
359 {
360 addError( INFO_CGU_CODE_ALREADY_USED, getLocale( ) );
361 isValid = false;
362 }
363 _cgu.setCguCode( request.getParameter( PARAMETER_CODE ) );
364
365 CguVersion cguVersion = new CguVersion( );
366 List<CguVersion> listCguVersion = new ArrayList<CguVersion>( );
367 if ( request.getParameter( PARAMETER_MINIMUM_AGE ) == null || request.getParameter( PARAMETER_MINIMUM_AGE ).isEmpty( ) )
368 {
369 addError( WARNING_EMPTY_MINIMUM_AGE, getLocale( ) );
370 isValid = false;
371 }
372 else
373 {
374 cguVersion.setMinimumAge( Integer.parseInt( request.getParameter( PARAMETER_MINIMUM_AGE ) ) );
375 }
376 if ( request.getParameter( PARAMETER_TEXT ) == null || request.getParameter( PARAMETER_TEXT ).isEmpty( ) )
377 {
378 addError( WARNING_EMPTY_TEXT, getLocale( ) );
379 isValid = false;
380 }
381 else
382 {
383 cguVersion.setText( request.getParameter( PARAMETER_TEXT ) );
384 }
385 listCguVersion.add( cguVersion );
386 _cgu.setCguVersions( listCguVersion );
387 return isValid;
388 }
389 }