1
2
3
4 package fr.paris.lutece.plugins.dila.web;
5
6 import fr.paris.lutece.plugins.dila.business.enums.AudienceCategoryEnum;
7 import fr.paris.lutece.plugins.dila.business.fichelocale.dto.LocalDTO;
8 import fr.paris.lutece.plugins.dila.service.IDilaLocalService;
9 import fr.paris.lutece.plugins.dila.utils.constants.DilaConstants;
10 import fr.paris.lutece.portal.service.i18n.I18nService;
11 import fr.paris.lutece.portal.service.message.SiteMessageException;
12 import fr.paris.lutece.portal.service.plugin.Plugin;
13 import fr.paris.lutece.portal.service.security.UserNotSignedException;
14 import fr.paris.lutece.portal.service.spring.SpringContextService;
15 import fr.paris.lutece.portal.service.template.AppTemplateService;
16 import fr.paris.lutece.portal.web.xpages.XPage;
17 import fr.paris.lutece.portal.web.xpages.XPageApplication;
18 import fr.paris.lutece.util.html.HtmlTemplate;
19 import fr.paris.lutece.util.html.Paginator;
20 import fr.paris.lutece.util.url.UrlItem;
21
22 import org.apache.commons.lang.WordUtils;
23
24 import java.util.ArrayList;
25 import java.util.HashMap;
26 import java.util.List;
27 import java.util.Locale;
28
29 import javax.servlet.http.HttpServletRequest;
30
31
32
33
34
35
36 public class DilaLocalApp implements XPageApplication
37 {
38 private static final String PROPERTY_ERROR_NOCATEGORY = "dila.page.dilalocal.error.nocategory";
39
40
41 private static final String DEFAULT_RESULTS_PER_PAGE = "20";
42 private static final String DEFAULT_PAGE_INDEX = "1";
43 private static final String PARAMETER_PAGE_INDEX = "page_index";
44 private static final String PARAMETER_NB_ITEMS_PER_PAGE = "items_per_page";
45 private static final String PROPERTY_SEARCH_PAGE_URL = "jsp/site/Portal.jsp?page=dilaLocal";
46
47
48 private static final String MARK_CATEGORIE = "categorie";
49 private static final String MARK_ERROR = "error";
50 private static final String MARK_RESULTS_LIST = "results_list";
51 private static final String MARK_PAGINATOR = "paginator";
52 private static final String MARK_NB_ITEMS_PER_PAGE = "nb_items_per_page";
53 private static final String MARK_URL_INDIVIDUALS = "urlParticuliers";
54 private static final String MARK_URL_PROFESSIONALS = "urlPME";
55 private static final String MARK_URL_ASSOCIATIONS = "urlAssociations";
56 private static final String TEMPLATE_RESULTS = "skin/plugins/dila/page_dila_locale.html";
57 private static final String PROPERTY_PATH_LABEL = "portal.search.search_results.pathLabel";
58 private static final String PROPERTY_PAGE_TITLE = "portal.search.search_results.pageTitle";
59 private IDilaLocalService _dilaLocalService = SpringContextService.getBean( "dilaLocalService" );
60
61
62
63
64 @Override
65 public XPage getPage( HttpServletRequest request, int nMode, Plugin plugin )
66 throws UserNotSignedException, SiteMessageException
67 {
68 XPage page = new XPage( );
69 HashMap<String, Object> model = new HashMap<String, Object>( );
70 String strAudience = request.getParameter( MARK_CATEGORIE );
71 model.put( MARK_URL_ASSOCIATIONS, DilaConstants.XPAGE_ASSO );
72 model.put( MARK_URL_INDIVIDUALS, DilaConstants.XPAGE_PARTICULIERS );
73 model.put( MARK_URL_PROFESSIONALS, DilaConstants.XPAGE_PME );
74
75 if ( strAudience == null )
76 {
77 model.put( MARK_ERROR, I18nService.getLocalizedString( PROPERTY_ERROR_NOCATEGORY, request.getLocale( ) ) );
78 }
79 else
80 {
81 model.put( MARK_CATEGORIE, WordUtils.capitalize( strAudience ) );
82
83 String strSearchPageUrl = PROPERTY_SEARCH_PAGE_URL;
84
85 String strNbItemPerPage = request.getParameter( PARAMETER_NB_ITEMS_PER_PAGE );
86 strNbItemPerPage = ( strNbItemPerPage != null ) ? strNbItemPerPage : DEFAULT_RESULTS_PER_PAGE;
87
88 int nNbItemsPerPage = Integer.parseInt( strNbItemPerPage );
89 String strCurrentPageIndex = request.getParameter( PARAMETER_PAGE_INDEX );
90 strCurrentPageIndex = ( strCurrentPageIndex != null ) ? strCurrentPageIndex : DEFAULT_PAGE_INDEX;
91
92 AudienceCategoryEnum audienceEnum = AudienceCategoryEnum.fromLabel( strAudience );
93 List<LocalDTO> listResults = new ArrayList<LocalDTO>( );
94
95 if ( audienceEnum != null )
96 {
97 listResults = _dilaLocalService.findAllByAudienceId( audienceEnum.getId( ) );
98 }
99
100 UrlItem url = new UrlItem( strSearchPageUrl );
101 url.addParameter( MARK_CATEGORIE, strAudience );
102 url.addParameter( PARAMETER_NB_ITEMS_PER_PAGE, nNbItemsPerPage );
103
104 Paginator<LocalDTO> paginator = new Paginator<LocalDTO>( listResults, nNbItemsPerPage, url.getUrl( ),
105 PARAMETER_PAGE_INDEX, strCurrentPageIndex );
106 model.put( MARK_RESULTS_LIST, paginator.getPageItems( ) );
107 model.put( MARK_PAGINATOR, paginator );
108 model.put( MARK_NB_ITEMS_PER_PAGE, strNbItemPerPage );
109 }
110
111 Locale locale = request.getLocale( );
112 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_RESULTS, locale, model );
113
114 page.setPathLabel( I18nService.getLocalizedString( PROPERTY_PATH_LABEL, locale ) );
115 page.setTitle( I18nService.getLocalizedString( PROPERTY_PAGE_TITLE, locale ) );
116 page.setContent( template.getHtml( ) );
117
118 return page;
119 }
120 }