View Javadoc
1   /*
2    * Copyright (c) 2002-2022, City of Paris
3    * All rights reserved.
4    *
5    * Redistribution and use in source and binary forms, with or without
6    * modification, are permitted provided that the following conditions
7    * are met:
8    *
9    *  1. Redistributions of source code must retain the above copyright notice
10   *     and the following disclaimer.
11   *
12   *  2. Redistributions in binary form must reproduce the above copyright notice
13   *     and the following disclaimer in the documentation and/or other materials
14   *     provided with the distribution.
15   *
16   *  3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
17   *     contributors may be used to endorse or promote products derived from
18   *     this software without specific prior written permission.
19   *
20   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
24   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30   * POSSIBILITY OF SUCH DAMAGE.
31   *
32   * License 1.0
33   */
34  package fr.paris.lutece.portal.web.util;
35  
36  import fr.paris.lutece.portal.service.i18n.I18nService;
37  import fr.paris.lutece.util.html.Paginator;
38  
39  import java.util.List;
40  import java.util.Locale;
41  
42  /**
43   * Localized Paginator
44   * 
45   * @param <E>
46   *            Item of the list
47   */
48  public class LocalizedPaginator<E> extends Paginator<E>
49  {
50      private static final long serialVersionUID = 6863575639914868230L;
51      private static final String KEY_FIRST = "portal.util.labelFirst";
52      private static final String KEY_PREVIOUS = "portal.util.labelPrevious";
53      private static final String KEY_NEXT = "portal.util.labelNext";
54      private static final String KEY_LAST = "portal.util.labelLast";
55      private static final String KEY_ITEM_COUNT = "portal.util.labelItemCount";
56      private static final String KEY_ITEM_COUNT_PER_PAGE = "portal.util.labelItemCountPerPage";
57      private Locale _locale;
58  
59      /**
60       * Creates a new instance of Paginator
61       * 
62       * @param list
63       *            The collection to paginate
64       * @param nItemPerPage
65       *            Number of items to display per page
66       * @param strBaseUrl
67       *            The base Url for build links on each page link
68       * @param strPageIndexParameterName
69       *            The parameter name for the page index
70       * @param strPageIndex
71       *            The current page index
72       * @param locale
73       *            The Locale
74       */
75      public LocalizedPaginator( List<E> list, int nItemPerPage, String strBaseUrl, String strPageIndexParameterName, String strPageIndex, Locale locale )
76      {
77          super( list, nItemPerPage, strBaseUrl, strPageIndexParameterName, strPageIndex );
78          _locale = locale;
79      }
80  
81      /**
82       * Creates a new instance of Paginator
83       * 
84       * @param list
85       *            The collection to paginate
86       * @param nItemPerPage
87       *            Number of items to display per page
88       * @param strBaseUrl
89       *            The base Url for build links on each page link
90       * @param strPageIndexParameterName
91       *            The parameter name for the page index
92       * @param strPageIndex
93       *            The current page index
94       * @param strItemsPerPageParameterName
95       *            The parameter name of the number items per page
96       * @param locale
97       *            The Locale
98       */
99      public LocalizedPaginator( List<E> list, int nItemPerPage, String strBaseUrl, String strPageIndexParameterName, String strPageIndex,
100             String strItemsPerPageParameterName, Locale locale )
101     {
102         this( list, nItemPerPage, strBaseUrl, strPageIndexParameterName, strPageIndex, locale );
103         setItemsPerPageParameterName( strItemsPerPageParameterName );
104     }
105 
106     /**
107      * {@inheritDoc }
108      */
109     @Override
110     public String getLabelFirst( )
111     {
112         return I18nService.getLocalizedString( KEY_FIRST, _locale );
113     }
114 
115     /**
116      * {@inheritDoc }
117      */
118     @Override
119     public String getLabelPrevious( )
120     {
121         return I18nService.getLocalizedString( KEY_PREVIOUS, _locale );
122     }
123 
124     /**
125      * {@inheritDoc }
126      */
127     @Override
128     public String getLabelNext( )
129     {
130         return I18nService.getLocalizedString( KEY_NEXT, _locale );
131     }
132 
133     /**
134      * {@inheritDoc }
135      */
136     @Override
137     public String getLabelLast( )
138     {
139         return I18nService.getLocalizedString( KEY_LAST, _locale );
140     }
141 
142     /**
143      * {@inheritDoc }
144      */
145     @Override
146     public String getLabelItemCount( )
147     {
148         return I18nService.getLocalizedString( KEY_ITEM_COUNT, _locale );
149     }
150 
151     /**
152      * {@inheritDoc }
153      */
154     @Override
155     public String getLabelItemCountPerPage( )
156     {
157         return I18nService.getLocalizedString( KEY_ITEM_COUNT_PER_PAGE, _locale );
158     }
159 }