View Javadoc
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   * Dila page for local cards
34   *
35   */
36  public class DilaLocalApp implements XPageApplication
37  {
38      private static final String PROPERTY_ERROR_NOCATEGORY = "dila.page.dilalocal.error.nocategory";
39  
40      // Parameters
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      // Markers
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       * {@inheritDoc}
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 }