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.portal.service.message;
35
36 import fr.paris.lutece.portal.service.template.AppTemplateService;
37 import fr.paris.lutece.portal.service.util.AppPathService;
38 import fr.paris.lutece.util.ErrorMessage;
39 import fr.paris.lutece.util.html.HtmlTemplate;
40
41 import java.util.HashMap;
42 import java.util.List;
43 import java.util.Locale;
44 import java.util.Map;
45 import java.util.Set;
46
47 import javax.servlet.http.HttpServletRequest;
48 import javax.servlet.http.HttpSession;
49
50 import javax.validation.ConstraintViolation;
51
52
53
54
55 public final class AdminMessageService
56 {
57 private static final String ATTRIBUTE_MESSAGE = "LUTECE_ADMIN_MESSAGE";
58 private static final String JSP_ADMIN_MESSAGE = "jsp/admin/AdminMessage.jsp";
59 private static final String JSP_BACK = "javascript:history.go(-1)";
60 private static final String TARGET_SELF = "_self";
61 private static final String PROPERTY_TITLE_DEFAULT = "portal.util.message.titleDefault";
62 private static final String PROPERTY_TITLE_QUESTION = "portal.util.message.titleQuestion";
63 private static final String PROPERTY_TITLE_ERROR = "portal.util.message.titleError";
64 private static final String PROPERTY_TITLE_WARNING = "portal.util.message.titleWarning";
65 private static final String PROPERTY_TITLE_CONFIRMATION = "portal.util.message.titleConfirmation";
66 private static final String PROPERTY_TITLE_STOP = "portal.util.message.titleStop";
67 private static final String TEMPLATE_FORMAT_LIST = "admin/util/message_list.html";
68 private static final String MARK_MESSAGES_LIST = "messages_list";
69 private static final String TEMPLATE_ERRORS_LIST = "admin/util/errors_list.html";
70 private static final String MARK_ERRORS_LIST = "errors_list";
71 private static final String LOGOUT_PARAMETER = "logout";
72
73
74
75
76 private AdminMessageService( )
77 {
78 }
79
80
81
82
83
84
85
86
87
88
89 public static String getMessageUrl( HttpServletRequest request, String strMessageKey )
90 {
91 return getMessageUrl( request, strMessageKey, null, null, JSP_BACK, TARGET_SELF, AdminMessage.TYPE_INFO );
92 }
93
94
95
96
97
98
99
100
101
102
103
104
105 public static String getMessageUrl( HttpServletRequest request, String strMessageKey, int nMessageType )
106 {
107 return getMessageUrl( request, strMessageKey, null, null, JSP_BACK, TARGET_SELF, nMessageType );
108 }
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123 public static String getMessageUrl( HttpServletRequest request, String strMessageKey, Object [ ] messageArgs, int nMessageType )
124 {
125 return getMessageUrl( request, strMessageKey, messageArgs, null, JSP_BACK, TARGET_SELF, nMessageType );
126 }
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141 public static String getMessageUrl( HttpServletRequest request, String strMessageKey, String strUrl, String strTarget )
142 {
143 return getMessageUrl( request, strMessageKey, null, null, strUrl, strTarget, AdminMessage.TYPE_INFO );
144 }
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161 public static String getMessageUrl( HttpServletRequest request, String strMessageKey, String strUrl, String strTarget, int nMessageType )
162 {
163 return getMessageUrl( request, strMessageKey, null, null, strUrl, strTarget, nMessageType );
164 }
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179 public static String getMessageUrl( HttpServletRequest request, String strMessageKey, String strUrl, int nMessageType )
180 {
181 return getMessageUrl( request, strMessageKey, null, null, strUrl, "", nMessageType );
182 }
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199 public static String getMessageUrl( HttpServletRequest request, String strMessageKey, String strUrl, int nMessageType, Map requestParameters )
200 {
201 return getMessageUrl( request, strMessageKey, null, null, strUrl, "", nMessageType, requestParameters );
202 }
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219 public static String getMessageUrl( HttpServletRequest request, String strMessageKey, Object [ ] messageArgs, String strUrl, int nMessageType )
220 {
221 return getMessageUrl( request, strMessageKey, messageArgs, null, strUrl, "", nMessageType );
222 }
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243 public static String getMessageUrl( HttpServletRequest request, String strMessageKey, Object [ ] messageArgs, String strTitleKey, String strUrl,
244 String strTarget, int nMessageType )
245 {
246 return getMessageUrl( request, strMessageKey, messageArgs, strTitleKey, strUrl, strTarget, nMessageType, null );
247 }
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270 public static String getMessageUrl( HttpServletRequest request, String strMessageKey, Object [ ] messageArgs, String strTitleKey, String strUrl,
271 String strTarget, int nMessageType, Map<String, Object> requestParameters )
272 {
273 return getMessageUrl( request, strMessageKey, messageArgs, strTitleKey, strUrl, strTarget, nMessageType, requestParameters, null );
274 }
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289 public static <T> String getMessageUrl( HttpServletRequest request, String strMessageKey, Set<ConstraintViolation<T>> constraintViolations )
290 {
291 return getMessageUrl( request, strMessageKey, formatConstraintViolations( request, constraintViolations ), null, JSP_BACK, TARGET_SELF,
292 AdminMessage.TYPE_ERROR );
293 }
294
295
296
297
298
299
300
301
302
303
304
305
306 public static String getMessageUrl( HttpServletRequest request, String strMessageKey, List<? extends ErrorMessage> errors )
307 {
308 return getMessageUrl( request, strMessageKey, formatValidationErrors( request, errors ), null, JSP_BACK, TARGET_SELF, AdminMessage.TYPE_ERROR );
309 }
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334 public static String getMessageUrl( HttpServletRequest request, String strMessageKey, Object [ ] messageArgs, String strTitleKey, String strUrl,
335 String strTarget, int nMessageType, Map<String, Object> requestParameters, String strBackUrl )
336 {
337 String strTitle = ( strTitleKey != null ) ? strTitleKey : getDefaultTitle( nMessageType );
338 boolean bCancelButton = getCancelButton( nMessageType );
339 AdminMessagee/message/AdminMessage.html#AdminMessage">AdminMessage message = new AdminMessage( strMessageKey, messageArgs, strTitle, strUrl, strTarget, nMessageType, bCancelButton, requestParameters,
340 strBackUrl );
341 setMessage( request, message );
342
343 return getUrl( request );
344 }
345
346
347
348
349
350
351
352
353 public static AdminMessage getMessage( HttpServletRequest request )
354 {
355 HttpSession session = request.getSession( true );
356 return (AdminMessage) session.getAttribute( ATTRIBUTE_MESSAGE );
357 }
358
359
360
361
362
363
364 public static String getMessageRelativeUrl( )
365 {
366 return JSP_ADMIN_MESSAGE;
367 }
368
369
370
371
372
373
374
375
376
377 private static void setMessage( HttpServletRequest request, AdminMessage message )
378 {
379 HttpSession session = request.getSession( true );
380 session.setAttribute( ATTRIBUTE_MESSAGE, message );
381 }
382
383
384
385
386
387
388
389
390 private static String getUrl( HttpServletRequest request )
391 {
392 return AppPathService.getBaseUrl( request ) + JSP_ADMIN_MESSAGE;
393 }
394
395
396
397
398
399
400
401
402 private static String getDefaultTitle( int nMessageType )
403 {
404 String strTitleKey;
405
406 switch( nMessageType )
407 {
408 case AdminMessage.TYPE_QUESTION:
409 strTitleKey = PROPERTY_TITLE_QUESTION;
410
411 break;
412
413 case AdminMessage.TYPE_ERROR:
414 strTitleKey = PROPERTY_TITLE_ERROR;
415
416 break;
417
418 case AdminMessage.TYPE_WARNING:
419 strTitleKey = PROPERTY_TITLE_WARNING;
420
421 break;
422
423 case AdminMessage.TYPE_CONFIRMATION:
424 strTitleKey = PROPERTY_TITLE_CONFIRMATION;
425
426 break;
427
428 case AdminMessage.TYPE_STOP:
429 strTitleKey = PROPERTY_TITLE_STOP;
430
431 break;
432
433 default:
434 strTitleKey = PROPERTY_TITLE_DEFAULT;
435
436 break;
437 }
438
439 return strTitleKey;
440 }
441
442
443
444
445
446
447
448
449 private static boolean getCancelButton( int nMessageType )
450 {
451 boolean bCancel;
452
453 switch( nMessageType )
454 {
455 case AdminMessage.TYPE_QUESTION:
456 case AdminMessage.TYPE_CONFIRMATION:
457 bCancel = true;
458
459 break;
460
461 default:
462 bCancel = false;
463
464 break;
465 }
466
467 return bCancel;
468 }
469
470
471
472
473
474
475
476
477
478
479 public static String getFormattedList( List<String> list, Locale locale )
480 {
481 Map<String, List<String>> model = new HashMap<>( );
482 model.put( MARK_MESSAGES_LIST, list );
483
484 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_FORMAT_LIST, locale, model );
485
486 return template.getHtml( );
487 }
488
489
490
491
492
493
494
495
496
497
498
499
500 private static <T> Object [ ] formatConstraintViolations( HttpServletRequest request, Set<ConstraintViolation<T>> constraintViolations )
501 {
502 Map<String, Object> model = new HashMap<>( );
503 model.put( MARK_ERRORS_LIST, constraintViolations );
504
505 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_ERRORS_LIST, request.getLocale( ), model );
506 return new String [ ] {
507 template.getHtml( )
508 };
509 }
510
511
512
513
514
515
516
517
518
519
520
521
522 private static Object [ ] formatValidationErrors( HttpServletRequest request, List<? extends ErrorMessage> errors )
523 {
524 Map<String, Object> model = new HashMap<>( );
525 model.put( MARK_ERRORS_LIST, errors );
526
527 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_ERRORS_LIST, request.getLocale( ), model );
528 return new String [ ] {
529 template.getHtml( )
530 };
531 }
532
533
534
535
536
537
538
539
540 public static String getLogoutMessageUrl( HttpServletRequest request )
541 {
542
543 HttpSession session = request.getSession( true );
544 return getUrl( request ) + "?" + LOGOUT_PARAMETER;
545 }
546
547
548
549
550
551
552
553
554 public static boolean isLogoutMessageUrl( HttpServletRequest request )
555 {
556 return null != request.getParameter( LOGOUT_PARAMETER );
557 }
558 }