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.dila.web;
35
36 import java.util.ArrayList;
37 import java.util.HashMap;
38 import java.util.List;
39 import java.util.Map;
40
41 import javax.servlet.http.HttpServletRequest;
42
43 import org.apache.commons.collections.CollectionUtils;
44 import org.apache.commons.lang.StringUtils;
45
46 import fr.paris.lutece.plugins.dila.business.enums.ActionTypeEnum;
47 import fr.paris.lutece.plugins.dila.business.fichelocale.dto.AudienceDTO;
48 import fr.paris.lutece.plugins.dila.business.fichelocale.dto.LocalCardChapterDTO;
49 import fr.paris.lutece.plugins.dila.business.fichelocale.dto.LocalCardDTO;
50 import fr.paris.lutece.plugins.dila.business.fichelocale.dto.LocalDTO;
51 import fr.paris.lutece.plugins.dila.business.fichelocale.dto.LocalFolderDTO;
52 import fr.paris.lutece.plugins.dila.business.fichelocale.dto.LocalFolderLinkDTO;
53 import fr.paris.lutece.plugins.dila.service.IDilaAudienceService;
54 import fr.paris.lutece.plugins.dila.service.IDilaLocalCardChapterService;
55 import fr.paris.lutece.plugins.dila.service.IDilaLocalCardService;
56 import fr.paris.lutece.plugins.dila.service.IDilaLocalFolderLinkService;
57 import fr.paris.lutece.plugins.dila.service.IDilaLocalFolderService;
58 import fr.paris.lutece.plugins.dila.service.IDilaLocalService;
59 import fr.paris.lutece.plugins.dila.service.IDilaValidationService;
60 import fr.paris.lutece.plugins.dila.utils.ListUtils;
61 import fr.paris.lutece.plugins.dila.utils.XMLConvertor;
62 import fr.paris.lutece.plugins.dila.utils.constants.DilaConstants;
63 import fr.paris.lutece.portal.service.message.AdminMessage;
64 import fr.paris.lutece.portal.service.message.AdminMessageService;
65 import fr.paris.lutece.portal.service.spring.SpringContextService;
66 import fr.paris.lutece.portal.service.template.AppTemplateService;
67 import fr.paris.lutece.portal.service.util.AppPathService;
68 import fr.paris.lutece.portal.web.admin.PluginAdminPageJspBean;
69 import fr.paris.lutece.portal.web.pluginaction.DefaultPluginActionResult;
70 import fr.paris.lutece.portal.web.pluginaction.IPluginActionResult;
71 import fr.paris.lutece.util.ReferenceList;
72 import fr.paris.lutece.util.datatable.DataTableManager;
73 import fr.paris.lutece.util.html.HtmlTemplate;
74
75
76
77
78
79 public class LocalCardJspBean extends PluginAdminPageJspBean
80 {
81
82 public static final String RIGHT_MANAGE_LOCAL_CARD = "DILA_LOCAL_CARD_MANAGEMENT";
83
84
85 private static final long serialVersionUID = -7968314250934413466L;
86
87
88 private static final String TEMPLATE_MANAGE_LOCAL = "admin/plugins/dila/manage_fiche-locale.html";
89 private static final String TEMPLATE_CREATE_LOCAL_CARD = "admin/plugins/dila/create_fiche-locale.html";
90 private static final String TEMPLATE_MODIFY_LOCAL_CARD = "admin/plugins/dila/modify_fiche-locale.html";
91 private static final String TEMPLATE_CREATE_LOCAL_FOLDER = "admin/plugins/dila/create_dossier-local.html";
92 private static final String TEMPLATE_MODIFY_LOCAL_FOLDER = "admin/plugins/dila/modify_dossier-local.html";
93
94
95 private static final String JSP_MANAGE_LOCAL_NAME = "ManageLocalCard.jsp";
96
97
98 private static final String MACRO_COLUMN_ACTIONS_LOCAL_CARD = "columnActionsFicheLocale";
99
100
101 private static final String PARAMETER_CHAPTER_ID = "chapterId";
102 private static final String PARAMETER_CHAPTERS_LIST = "chapters_list";
103 private static final String PARAMETER_LINK_ID = "linkId";
104 private static final String PARAMETER_LINK_LIST = "links_list";
105 private static final String PARAMETER_REFERENCE_ID = "referenceId";
106 private static final String PARAMETER_TYPE = "type";
107 private static final String PARAMETER_NAME = "nomFicheLocale";
108 private static final String PARAMETER_AUTHOR = "localCardAuthor";
109
110
111 private static final String MARK_DATA_TABLE_LOCAL_CARD = "dataTableFicheLocale";
112 private static final String MARK_LOCAL_CARD = "ficheLocale";
113 private static final String MARK_LOCAL_FOLDER = "dossierLocal";
114 private static final String MARK_AUDIENCE = "audiences";
115 private static final String MARK_WEBAPP_URL = "webapp_url";
116 private static final String MARK_LOCALE = "locale";
117
118
119 private LocalCardDTO _cardBean;
120 private LocalFolderDTO _folderBean;
121 private String _strAction;
122 private transient DataTableManager<LocalDTO> _dataTableLocal;
123
124
125 private IDilaLocalFolderService _dilaLocalFolderService = SpringContextService.getBean( "dilaLocalFolderService" );
126 private IDilaLocalService _dilaLocalService = SpringContextService.getBean( "dilaLocalService" );
127 private IDilaLocalCardService _dilaLocalCardService = SpringContextService.getBean( "dilaLocalCardService" );
128 private IDilaAudienceService _dilaAudienceService = SpringContextService.getBean( "dilaAudienceService" );
129 private IDilaLocalCardChapterService _dilaLocalCardChapterService = SpringContextService
130 .getBean( "dilaLocalCardChapterService" );
131 private IDilaLocalFolderLinkService _dilaLocalFolderLinkService = SpringContextService
132 .getBean( "dilaLocalFolderLinkService" );
133 private IDilaValidationService _dilaValidationService = SpringContextService.getBean( "dilaValidationService" );
134
135
136
137
138
139
140 public String getManageLocalCard( HttpServletRequest request )
141 {
142 Map<String, Object> model = new HashMap<String, Object>( );
143
144 String strType = request.getParameter( PARAMETER_TYPE );
145 Long lType = 0L;
146
147 if ( StringUtils.isNotBlank( strType ) )
148 {
149 lType = Long.valueOf( strType );
150 }
151
152 String strId = request.getParameter( DilaConstants.MARK_ID );
153 Long lId = 0L;
154
155 if ( StringUtils.isNotBlank( strId ) && StringUtils.isNumeric( strId ) )
156 {
157 lId = Long.valueOf( strId );
158 }
159
160 String strName = request.getParameter( PARAMETER_NAME );
161 String strAuthor = request.getParameter( PARAMETER_AUTHOR );
162
163
164 if ( _dataTableLocal == null )
165 {
166 _dataTableLocal = new DataTableManager<LocalDTO>( DilaConstants.JSP_MANAGE_LOCAL, "", 10, true );
167 _dataTableLocal.addColumn( "dila.manage_local.row_id", "id", true );
168 _dataTableLocal.addColumn( "dila.manage_local.row_type", "typeLabel", true );
169 _dataTableLocal.addColumn( "dila.manage_local.row_title", "title", true );
170 _dataTableLocal.addColumn( "dila.manage_local.row_breadcrumb", "displayPath", false );
171 _dataTableLocal.addColumn( "dila.manage_local.row_author", "author", true );
172 _dataTableLocal.addFreeColumn( "dila.manage_local.row_actions", MACRO_COLUMN_ACTIONS_LOCAL_CARD );
173 }
174
175 List<LocalDTO> listLocalCards = _dilaLocalService.findAll( );
176
177 _dataTableLocal.filterSortAndPaginate( request, filterLocal( listLocalCards, lType, lId, strName, strAuthor ) );
178 model.put( MARK_DATA_TABLE_LOCAL_CARD, _dataTableLocal );
179 model.put( PARAMETER_TYPE, strType );
180 model.put( DilaConstants.MARK_ID, strId );
181 model.put( PARAMETER_NAME, strName );
182 model.put( PARAMETER_AUTHOR, strAuthor );
183
184 HtmlTemplate templateList = AppTemplateService.getTemplate( TEMPLATE_MANAGE_LOCAL, getLocale( ), model );
185
186 return getAdminPage( templateList.getHtml( ) );
187 }
188
189
190
191
192
193
194 public String getCreateLocalCard( HttpServletRequest request )
195 {
196 _strAction = ActionTypeEnum.CREATE.getValue( );
197
198 Map<String, Object> model = new HashMap<String, Object>( );
199
200 _cardBean = new LocalCardDTO( );
201
202 List<LocalCardChapterDTO> chapters = new ArrayList<LocalCardChapterDTO>( );
203
204 LocalCardChapterDTO chapter = new LocalCardChapterDTO( );
205 chapter.setPosition( 1 );
206
207 chapters.add( chapter );
208
209 model.put( MARK_LOCAL_CARD, _cardBean );
210 model.put( PARAMETER_CHAPTER_ID, 1 );
211 model.put( PARAMETER_CHAPTERS_LIST, chapters );
212 setDataInModel( request, model );
213
214 HtmlTemplate templateList = AppTemplateService.getTemplate( TEMPLATE_CREATE_LOCAL_CARD, getLocale( ), model );
215
216 return getAdminPage( templateList.getHtml( ) );
217 }
218
219
220
221
222
223
224 public String getModifyLocalCard( HttpServletRequest request )
225 {
226 _strAction = ActionTypeEnum.MODIFY.getValue( );
227
228 String strLocalItemId = request.getParameter( DilaConstants.MARK_LOCAL_ID );
229
230 if ( StringUtils.isEmpty( strLocalItemId ) || !StringUtils.isNumeric( strLocalItemId ) )
231 {
232 return AdminMessageService.getMessageUrl( request, DilaConstants.MESSAGE_ERROR_OCCUR,
233 AdminMessage.TYPE_STOP );
234 }
235
236 _cardBean = _dilaLocalCardService.findCardByLocalId( Long.valueOf( strLocalItemId ) );
237
238 if ( _cardBean == null )
239 {
240 return AdminMessageService.getMessageUrl( request, DilaConstants.MESSAGE_ERROR_OCCUR,
241 AdminMessage.TYPE_STOP );
242 }
243
244
245 _dilaValidationService.validateRootFolder( _cardBean, _cardBean.getParentFolderId( ) );
246
247 Map<String, Object> model = new HashMap<String, Object>( );
248
249
250 List<LocalCardChapterDTO> chapters = _dilaLocalCardChapterService.findByCardId( _cardBean.getId( ) );
251
252 model.put( MARK_LOCAL_CARD, _cardBean );
253 model.put( PARAMETER_CHAPTER_ID, chapters.size( ) );
254 model.put( PARAMETER_CHAPTERS_LIST, chapters );
255 setDataInModel( request, model );
256
257 HtmlTemplate templateList = AppTemplateService.getTemplate( TEMPLATE_MODIFY_LOCAL_CARD, getLocale( ), model );
258
259 return getAdminPage( templateList.getHtml( ) );
260 }
261
262
263
264
265
266
267 public String getCreateLocalFolder( HttpServletRequest request )
268 {
269 _strAction = ActionTypeEnum.CREATE.getValue( );
270
271 Map<String, Object> model = new HashMap<String, Object>( );
272
273 _folderBean = new LocalFolderDTO( );
274
275 List<LocalFolderLinkDTO> links = new ArrayList<LocalFolderLinkDTO>( );
276
277 model.put( PARAMETER_LINK_ID, 0 );
278 model.put( PARAMETER_LINK_LIST, links );
279 model.put( MARK_LOCAL_FOLDER, _folderBean );
280 setDataInModel( request, model );
281
282 HtmlTemplate templateList = AppTemplateService.getTemplate( TEMPLATE_CREATE_LOCAL_FOLDER, getLocale( ), model );
283
284 return getAdminPage( templateList.getHtml( ) );
285 }
286
287
288
289
290
291
292 public String getModifyLocalFolder( HttpServletRequest request )
293 {
294 _strAction = ActionTypeEnum.MODIFY.getValue( );
295
296 String idLocal = request.getParameter( DilaConstants.MARK_LOCAL_ID );
297
298 Map<String, Object> model = new HashMap<String, Object>( );
299
300
301 _folderBean = _dilaLocalFolderService.findFolderByLocalId( Long.valueOf( idLocal ) );
302
303
304 _dilaValidationService.validateRootTheme( _folderBean );
305
306
307 _dilaValidationService.validateLinkedFolder( _folderBean );
308
309
310 List<LocalFolderLinkDTO> links = _dilaLocalFolderLinkService.findByFolderId( _folderBean.getId( ) );
311
312 if ( CollectionUtils.isNotEmpty( links ) )
313 {
314 for ( LocalFolderLinkDTO link : links )
315 {
316 _dilaValidationService.validateLinkCard( _folderBean, link.getCardId( ), link );
317 }
318 }
319
320 model.put( PARAMETER_LINK_ID, links.size( ) );
321 model.put( PARAMETER_LINK_LIST, links );
322 model.put( MARK_LOCAL_FOLDER, _folderBean );
323 setDataInModel( request, model );
324
325 HtmlTemplate templateList = AppTemplateService.getTemplate( TEMPLATE_MODIFY_LOCAL_FOLDER, getLocale( ), model );
326
327 return getAdminPage( templateList.getHtml( ) );
328 }
329
330
331
332
333
334
335 public String doAddChapter( HttpServletRequest request )
336 {
337 Integer nbChapter = Integer.valueOf( request.getParameter( PARAMETER_CHAPTER_ID ) );
338 Map<String, Object> model = new HashMap<String, Object>( );
339
340 populate( _cardBean, request );
341
342 List<LocalCardChapterDTO> chapters = generateChapters( model, request );
343
344 LocalCardChapterDTO chapter = new LocalCardChapterDTO( );
345 chapter.setPosition( nbChapter + 1 );
346 chapters.add( chapter );
347
348 model.put( MARK_LOCAL_CARD, _cardBean );
349 model.put( PARAMETER_CHAPTER_ID, nbChapter + 1 );
350 model.put( PARAMETER_CHAPTERS_LIST, chapters );
351 setDataInModel( request, model );
352
353 return getAdminPage( getTemplateCard( model ) );
354 }
355
356
357
358
359
360
361 public String doDeleteChapter( HttpServletRequest request )
362 {
363 Integer nbChapter = Integer.valueOf( request.getParameter( PARAMETER_CHAPTER_ID ) );
364 Map<String, Object> model = new HashMap<String, Object>( );
365
366 populate( _cardBean, request );
367
368 List<LocalCardChapterDTO> chapters = generateChapters( model, request );
369
370 if ( nbChapter > 1 )
371 {
372 chapters.remove( chapters.size( ) - 1 );
373 nbChapter = nbChapter - 1;
374 }
375
376 model.put( MARK_LOCAL_CARD, _cardBean );
377 model.put( PARAMETER_CHAPTER_ID, nbChapter );
378 model.put( PARAMETER_CHAPTERS_LIST, chapters );
379 setDataInModel( request, model );
380
381 return getAdminPage( getTemplateCard( model ) );
382 }
383
384
385
386
387
388
389 public String doAddLink( HttpServletRequest request )
390 {
391 Integer nbLink = Integer.valueOf( request.getParameter( PARAMETER_LINK_ID ) );
392 Map<String, Object> model = new HashMap<String, Object>( );
393
394 populate( _folderBean, request );
395
396 List<LocalFolderLinkDTO> links = generateLinks( model, request );
397 LocalFolderLinkDTO link = new LocalFolderLinkDTO( );
398 link.setPosition( nbLink + 1 );
399 links.add( link );
400
401 model.put( MARK_LOCAL_FOLDER, _folderBean );
402 model.put( PARAMETER_LINK_ID, nbLink + 1L );
403 model.put( PARAMETER_LINK_LIST, links );
404 setDataInModel( request, model );
405
406 return getAdminPage( getTemplateFolder( model ) );
407 }
408
409
410
411
412
413
414 public String doDeleteLink( HttpServletRequest request )
415 {
416 Integer nbLink = Integer.valueOf( request.getParameter( PARAMETER_LINK_ID ) );
417 Map<String, Object> model = new HashMap<String, Object>( );
418
419 populate( _folderBean, request );
420
421 List<LocalFolderLinkDTO> links = generateLinks( model, request );
422 links.remove( links.size( ) - 1 );
423
424 model.put( MARK_LOCAL_FOLDER, _folderBean );
425 model.put( PARAMETER_LINK_ID, nbLink - 1 );
426 model.put( PARAMETER_LINK_LIST, links );
427 setDataInModel( request, model );
428
429 return getAdminPage( getTemplateFolder( model ) );
430 }
431
432
433
434
435
436
437 public IPluginActionResult doVerifyParentTheme( HttpServletRequest request )
438 {
439 IPluginActionResult result = new DefaultPluginActionResult( );
440 HashMap<String, Object> model = new HashMap<String, Object>( );
441
442 populate( _folderBean, request );
443
444 String errorKey = _dilaValidationService.validateRootTheme( _folderBean );
445
446 if ( StringUtils.isNotBlank( errorKey ) )
447 {
448 result.setRedirect( AdminMessageService.getMessageUrl( request, errorKey, AdminMessage.TYPE_STOP ) );
449
450 return result;
451 }
452
453 generateLinks( model, request );
454 model.put( MARK_LOCAL_FOLDER, _folderBean );
455 setDataInModel( request, model );
456
457 result.setHtmlContent( getAdminPage( getTemplateFolder( model ) ) );
458
459 return result;
460 }
461
462
463
464
465
466
467 public IPluginActionResult doVerifySiblingFolder( HttpServletRequest request )
468 {
469 IPluginActionResult result = new DefaultPluginActionResult( );
470 HashMap<String, Object> model = new HashMap<String, Object>( );
471
472 populate( _folderBean, request );
473
474 String errorKey = _dilaValidationService.validateLinkedFolder( _folderBean );
475
476 if ( StringUtils.isNotBlank( errorKey ) )
477 {
478 result.setRedirect( AdminMessageService.getMessageUrl( request, errorKey, AdminMessage.TYPE_STOP ) );
479
480 return result;
481 }
482
483 generateLinks( model, request );
484 model.put( MARK_LOCAL_FOLDER, _folderBean );
485 setDataInModel( request, model );
486
487 result.setHtmlContent( getAdminPage( getTemplateFolder( model ) ) );
488
489 return result;
490 }
491
492
493
494
495
496
497 public IPluginActionResult doVerifyCardLink( HttpServletRequest request )
498 {
499 String referenceId = request.getParameter( PARAMETER_REFERENCE_ID );
500 populate( _folderBean, request );
501
502 IPluginActionResult result = new DefaultPluginActionResult( );
503 HashMap<String, Object> model = new HashMap<String, Object>( );
504 LocalFolderLinkDTO link = new LocalFolderLinkDTO( );
505 String errorKey = _dilaValidationService.validateLinkCard( _folderBean, referenceId, link );
506
507 if ( StringUtils.isNotBlank( errorKey ) )
508 {
509 result.setRedirect( AdminMessageService.getMessageUrl( request, errorKey, AdminMessage.TYPE_STOP ) );
510
511 return result;
512 }
513
514 generateLinks( model, request );
515 model.put( MARK_LOCAL_FOLDER, _folderBean );
516 setDataInModel( request, model );
517
518 result.setHtmlContent( getAdminPage( getTemplateFolder( model ) ) );
519
520 return result;
521 }
522
523
524
525
526
527
528 public IPluginActionResult doVerifyParentFolder( HttpServletRequest request )
529 {
530 populate( _cardBean, request );
531
532 IPluginActionResult result = new DefaultPluginActionResult( );
533 HashMap<String, Object> model = new HashMap<String, Object>( );
534
535 String errorKey = _dilaValidationService.validateRootFolder( _cardBean, _cardBean.getParentFolderId( ) );
536
537 if ( StringUtils.isNotBlank( errorKey ) )
538 {
539 result.setRedirect( AdminMessageService.getMessageUrl( request, errorKey, AdminMessage.TYPE_STOP ) );
540
541 return result;
542 }
543
544 generateChapters( model, request );
545
546 model.put( MARK_LOCAL_CARD, _cardBean );
547 setDataInModel( request, model );
548
549 result.setHtmlContent( getAdminPage( getTemplateCard( model ) ) );
550
551 return result;
552 }
553
554
555
556
557
558
559 public IPluginActionResult doVerifySiblingCard( HttpServletRequest request )
560 {
561 populate( _cardBean, request );
562
563 IPluginActionResult result = new DefaultPluginActionResult( );
564 HashMap<String, Object> model = new HashMap<String, Object>( );
565
566 String errorKey = _dilaValidationService.validateLinkedCard( _cardBean, _cardBean.getSiblingCardId( ) );
567
568 if ( StringUtils.isNotBlank( errorKey ) )
569 {
570 result.setRedirect( AdminMessageService.getMessageUrl( request, errorKey, AdminMessage.TYPE_STOP ) );
571
572 return result;
573 }
574
575 generateChapters( model, request );
576 model.put( MARK_LOCAL_CARD, _cardBean );
577 setDataInModel( request, model );
578 result.setHtmlContent( getAdminPage( getTemplateCard( model ) ) );
579
580 return result;
581 }
582
583
584
585
586
587
588 public String doCreateLocalCard( HttpServletRequest request )
589 {
590 populate( _cardBean, request );
591
592 List<LocalCardChapterDTO> chapters = generateChapters( null, request );
593
594 String errorKey = _dilaValidationService.validateLocalCard( _cardBean, chapters );
595
596 if ( StringUtils.isNotBlank( errorKey ) )
597 {
598 return AdminMessageService.getMessageUrl( request, errorKey, AdminMessage.TYPE_STOP );
599 }
600
601
602 if ( StringUtils.isNumeric( _cardBean.getParentFolderId( ) ) )
603 {
604 _cardBean.getLocalDTO( ).setBreadCrumb(
605 _cardBean.getLocalParentFolder( ).getLocalDTO( ).getBreadCrumb( ) + ";"
606 + _cardBean.getLocalParentFolder( ).getLocalDTO( ).getId( ) );
607 }
608 else
609 {
610 _cardBean.getLocalDTO( ).setBreadCrumb(
611 _cardBean.getNationalParentFolder( ).getBreadCrumb( ) + ";"
612 + _cardBean.getNationalParentFolder( ).getIdXml( ) );
613 }
614
615 _cardBean.getLocalDTO( ).setXml( XMLConvertor.convertCardToXML( _cardBean, chapters ) );
616
617 Long localId = _dilaLocalService.create( _cardBean.getLocalDTO( ), false );
618 _cardBean.getLocalDTO( ).setId( localId );
619
620 Long cardId = _dilaLocalCardService.create( _cardBean );
621 _cardBean.setId( cardId );
622
623
624 for ( LocalCardChapterDTO chapter : chapters )
625 {
626 chapter.setLocalCard( _cardBean );
627 _dilaLocalCardChapterService.create( chapter );
628 }
629
630 return JSP_MANAGE_LOCAL_NAME;
631 }
632
633
634
635
636
637
638 public String doModifyLocalCard( HttpServletRequest request )
639 {
640 populate( _cardBean, request );
641
642 List<LocalCardChapterDTO> chapters = generateChapters( null, request );
643
644 String errorKey = _dilaValidationService.validateLocalCard( _cardBean, chapters );
645
646 if ( StringUtils.isNotBlank( errorKey ) )
647 {
648 return AdminMessageService.getMessageUrl( request, errorKey, AdminMessage.TYPE_STOP );
649 }
650
651
652 if ( StringUtils.isNumeric( _cardBean.getParentFolderId( ) ) )
653 {
654 _cardBean.getLocalDTO( ).setBreadCrumb(
655 _cardBean.getLocalParentFolder( ).getLocalDTO( ).getBreadCrumb( ) + ";"
656 + _cardBean.getLocalParentFolder( ).getLocalDTO( ).getId( ) );
657 }
658 else
659 {
660 _cardBean.getLocalDTO( ).setBreadCrumb(
661 _cardBean.getNationalParentFolder( ).getBreadCrumb( ) + ";"
662 + _cardBean.getNationalParentFolder( ).getIdXml( ) );
663 }
664
665 _cardBean.getLocalDTO( ).setXml( XMLConvertor.convertCardToXML( _cardBean, chapters ) );
666 _dilaLocalService.update( _cardBean.getLocalDTO( ), false );
667
668
669 _dilaLocalCardService.update( _cardBean );
670
671
672 _dilaLocalCardChapterService.deleteByCardId( _cardBean.getId( ) );
673
674
675 for ( LocalCardChapterDTO chapter : chapters )
676 {
677 chapter.setLocalCard( _cardBean );
678 _dilaLocalCardChapterService.create( chapter );
679 }
680
681 return JSP_MANAGE_LOCAL_NAME;
682 }
683
684
685
686
687
688
689 public String doCreateLocalFolder( HttpServletRequest request )
690 {
691 populate( _folderBean, request );
692
693 List<LocalFolderLinkDTO> links = generateLinks( null, request );
694
695 String errorKey = _dilaValidationService.validateLocalFolder( _folderBean, links );
696
697 if ( StringUtils.isNotBlank( errorKey ) )
698 {
699 return AdminMessageService.getMessageUrl( request, errorKey, AdminMessage.TYPE_STOP );
700 }
701
702
703 _folderBean.getLocalDTO( ).setXml( XMLConvertor.convertFolderInXML( _folderBean, links ) );
704
705 Long localId = _dilaLocalService.create( _folderBean.getLocalDTO( ), false );
706 _folderBean.getLocalDTO( ).setId( localId );
707
708 Long folderId = _dilaLocalFolderService.create( _folderBean );
709 _folderBean.setId( folderId );
710
711 for ( LocalFolderLinkDTO link : links )
712 {
713 link.setLocalFolderId( _folderBean.getId( ) );
714 _dilaLocalFolderLinkService.create( link );
715 }
716
717 return JSP_MANAGE_LOCAL_NAME;
718 }
719
720
721
722
723
724
725 public String doModifyLocalFolder( HttpServletRequest request )
726 {
727 populate( _folderBean, request );
728
729 List<LocalFolderLinkDTO> links = generateLinks( null, request );
730
731 String errorKey = _dilaValidationService.validateLocalFolder( _folderBean, links );
732
733 if ( StringUtils.isNotBlank( errorKey ) )
734 {
735 return AdminMessageService.getMessageUrl( request, errorKey, AdminMessage.TYPE_STOP );
736 }
737
738
739 _folderBean.getLocalDTO( ).setXml( XMLConvertor.convertFolderInXML( _folderBean, links ) );
740
741
742 _dilaLocalService.update( _folderBean.getLocalDTO( ), false );
743
744
745 _dilaLocalFolderService.update( _folderBean );
746
747
748 _dilaLocalFolderLinkService.deleteByFolderId( _folderBean.getId( ) );
749
750
751 for ( LocalFolderLinkDTO link : links )
752 {
753 link.setLocalFolderId( _folderBean.getId( ) );
754 _dilaLocalFolderLinkService.create( link );
755 }
756
757 return JSP_MANAGE_LOCAL_NAME;
758 }
759
760
761
762
763
764
765 public String getDeleteLocalCard( HttpServletRequest request )
766 {
767 String idLocal = request.getParameter( DilaConstants.MARK_LOCAL_ID );
768
769 if ( StringUtils.isEmpty( idLocal ) )
770 {
771 return AdminMessageService.getMessageUrl( request, DilaConstants.MESSAGE_ERROR_OCCUR,
772 AdminMessage.TYPE_STOP );
773 }
774
775 Map<String, Object> urlParam = new HashMap<String, Object>( );
776 urlParam.put( DilaConstants.MARK_LOCAL_ID, idLocal );
777
778 return AdminMessageService.getMessageUrl( request, DilaConstants.MESSAGE_CONFIRMATION_DELETE_FICHE, null,
779 DilaConstants.MESSAGE_TITLE_DELETE_FICHE, DilaConstants.JSP_DELETE_FICHE, "_self",
780 AdminMessage.TYPE_CONFIRMATION, urlParam, DilaConstants.JSP_MANAGE_LOCAL );
781 }
782
783
784
785
786
787
788 public String doDeleteLocalCard( HttpServletRequest request )
789 {
790 String idLocal = request.getParameter( DilaConstants.MARK_LOCAL_ID );
791
792 if ( StringUtils.isEmpty( idLocal ) )
793 {
794 return AdminMessageService.getMessageUrl( request, DilaConstants.MESSAGE_ERROR_OCCUR,
795 AdminMessage.TYPE_STOP );
796 }
797
798 Long localCardId = _dilaLocalCardService.findCardIdByLocalId( idLocal );
799
800 _dilaLocalCardChapterService.deleteByCardId( localCardId );
801 _dilaLocalCardService.delete( localCardId );
802 _dilaLocalService.delete( idLocal );
803
804 return AppPathService.getBaseUrl( request ) + DilaConstants.JSP_MANAGE_LOCAL;
805 }
806
807
808
809
810
811
812 public String getDeleteLocalFolder( HttpServletRequest request )
813 {
814 String idLocal = request.getParameter( DilaConstants.MARK_LOCAL_ID );
815
816 if ( StringUtils.isEmpty( idLocal ) )
817 {
818 return AdminMessageService.getMessageUrl( request, DilaConstants.MESSAGE_ERROR_OCCUR,
819 AdminMessage.TYPE_STOP );
820 }
821
822
823 if ( _dilaLocalCardService.isCardWithParentId( idLocal ) )
824 {
825 return AdminMessageService.getMessageUrl( request, "dila.message.impossible.delete_dossierlocal",
826 AdminMessage.TYPE_STOP );
827 }
828
829 Map<String, Object> urlParam = new HashMap<String, Object>( );
830 urlParam.put( DilaConstants.MARK_LOCAL_ID, idLocal );
831
832 return AdminMessageService.getMessageUrl( request, DilaConstants.MESSAGE_CONFIRMATION_DELETE_DOSSIER, null,
833 DilaConstants.MESSAGE_TITLE_DELETE_DOSSIER, DilaConstants.JSP_DELETE_DOSSIER, "_self",
834 AdminMessage.TYPE_CONFIRMATION, urlParam, DilaConstants.JSP_MANAGE_STYLESHEET );
835 }
836
837
838
839
840
841
842 public String doDeleteLocalFolder( HttpServletRequest request )
843 {
844 String idLocal = request.getParameter( DilaConstants.MARK_LOCAL_ID );
845
846 if ( StringUtils.isEmpty( idLocal ) )
847 {
848 return AdminMessageService.getMessageUrl( request, DilaConstants.MESSAGE_ERROR_OCCUR,
849 AdminMessage.TYPE_STOP );
850 }
851
852 Long localFolderId = _dilaLocalFolderService.findFolderIdByLocalId( idLocal );
853
854 _dilaLocalFolderLinkService.deleteByFolderId( localFolderId );
855 _dilaLocalFolderService.delete( localFolderId );
856 _dilaLocalService.delete( idLocal );
857
858 return AppPathService.getBaseUrl( request ) + DilaConstants.JSP_MANAGE_LOCAL;
859 }
860
861
862
863
864
865
866 private void setDataInModel( HttpServletRequest request, Map<String, Object> model )
867 {
868 List<AudienceDTO> audienceList = _dilaAudienceService.findAll( );
869 ReferenceList contentTypeList = ListUtils.toReferenceList( audienceList, "id", "label", null );
870 model.put( MARK_AUDIENCE, contentTypeList );
871 model.put( MARK_LOCALE, getLocale( ) );
872 model.put( MARK_WEBAPP_URL, AppPathService.getBaseUrl( request ) );
873 }
874
875
876
877
878
879
880
881 private List<LocalCardChapterDTO> generateChapters( Map<String, Object> model, HttpServletRequest request )
882 {
883 Integer nbChapter = Integer.valueOf( request.getParameter( PARAMETER_CHAPTER_ID ) );
884
885 List<LocalCardChapterDTO> chapters = new ArrayList<LocalCardChapterDTO>( );
886
887 for ( int i = 1; i <= nbChapter; i++ )
888 {
889 String title = request.getParameter( "chapter_title_" + i );
890 String content = request.getParameter( "chapter_content_" + i );
891
892 LocalCardChapterDTO chapter = new LocalCardChapterDTO( );
893 chapter.setTitle( title );
894 chapter.setContent( content );
895 chapter.setPosition( i );
896
897 chapters.add( chapter );
898 }
899
900 if ( model != null )
901 {
902 model.put( PARAMETER_CHAPTER_ID, nbChapter );
903 model.put( PARAMETER_CHAPTERS_LIST, chapters );
904 }
905
906 return chapters;
907 }
908
909
910
911
912
913
914
915 private List<LocalFolderLinkDTO> generateLinks( Map<String, Object> model, HttpServletRequest request )
916 {
917 Integer nbLinks = Integer.valueOf( request.getParameter( PARAMETER_LINK_ID ) );
918
919 List<LocalFolderLinkDTO> links = new ArrayList<LocalFolderLinkDTO>( );
920
921 for ( int i = 1; i <= nbLinks; i++ )
922 {
923 String title = request.getParameter( "link_title_" + i );
924 String referenceId = request.getParameter( "link_reference_" + i );
925
926 LocalFolderLinkDTO link = new LocalFolderLinkDTO( );
927 link.setTitle( title );
928 link.setCardId( referenceId );
929 link.setPosition( i );
930 _dilaValidationService.validateLinkCard( _folderBean, referenceId, link );
931 links.add( link );
932 }
933
934 if ( model != null )
935 {
936 model.put( PARAMETER_LINK_ID, nbLinks );
937 model.put( PARAMETER_LINK_LIST, links );
938 }
939
940 return links;
941 }
942
943
944
945
946
947
948
949
950
951
952 private List<LocalDTO> filterLocal( List<LocalDTO> initList, Long type, Long id, String name, String author )
953 {
954 List<LocalDTO> result = new ArrayList<LocalDTO>( );
955
956 for ( LocalDTO local : initList )
957 {
958 if ( !type.equals( 0L ) && !local.getType( ).getId( ).equals( type ) )
959 {
960 continue;
961 }
962
963 if ( !id.equals( 0L ) && !local.getId( ).equals( id ) )
964 {
965 continue;
966 }
967
968 if ( StringUtils.isNotBlank( name ) && !local.getTitle( ).equals( name ) )
969 {
970 continue;
971 }
972
973 if ( StringUtils.isNotBlank( author ) && !local.getAuthor( ).equals( author ) )
974 {
975 continue;
976 }
977
978 result.add( local );
979 }
980
981 return result;
982 }
983
984
985
986
987
988
989 private String getTemplateCard( Map<String, Object> model )
990 {
991 if ( ActionTypeEnum.CREATE.getValue( ).equals( _strAction ) )
992 {
993 return AppTemplateService.getTemplate( TEMPLATE_CREATE_LOCAL_CARD, getLocale( ), model ).getHtml( );
994 }
995 else
996 {
997 return AppTemplateService.getTemplate( TEMPLATE_MODIFY_LOCAL_CARD, getLocale( ), model ).getHtml( );
998 }
999 }
1000
1001
1002
1003
1004
1005
1006 private String getTemplateFolder( Map<String, Object> model )
1007 {
1008 if ( ActionTypeEnum.CREATE.getValue( ).equals( _strAction ) )
1009 {
1010 return AppTemplateService.getTemplate( TEMPLATE_CREATE_LOCAL_FOLDER, getLocale( ), model ).getHtml( );
1011 }
1012 else
1013 {
1014 return AppTemplateService.getTemplate( TEMPLATE_MODIFY_LOCAL_FOLDER, getLocale( ), model ).getHtml( );
1015 }
1016 }
1017 }