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.crm.modules.mylutece.web;
35
36 import fr.paris.lutece.plugins.crm.business.user.CRMUser;
37 import fr.paris.lutece.plugins.crm.business.user.CRMUserFilter;
38 import fr.paris.lutece.plugins.crm.service.user.CRMUserService;
39 import fr.paris.lutece.portal.service.admin.AccessDeniedException;
40 import fr.paris.lutece.portal.service.util.AppPropertiesService;
41 import fr.paris.lutece.portal.web.util.LocalizedPaginator;
42 import fr.paris.lutece.util.html.Paginator;
43 import fr.paris.lutece.util.url.UrlItem;
44
45 import org.apache.commons.lang.StringUtils;
46
47 import java.io.Serializable;
48
49 import java.util.List;
50 import java.util.Map;
51
52 import javax.servlet.http.HttpServletRequest;
53
54
55
56
57
58
59
60 public class CRMMyLuteceSearchFields implements ICRMMyLuteceSearchFields, Serializable
61 {
62 private static final long serialVersionUID = 5171135962785175642L;
63
64
65 private static final String PROPERTY_DEFAULT_LIST_USERS_PER_PAGE = "module.crm.mylutece.listUsers.itemsPerPage";
66
67
68 private static final String PARAMETER_SESSION = "session";
69
70
71 private static final String MARK_LIST_CRM_USERS = "listCRMUsers";
72 private static final String MARK_FILTER = "filter";
73 private static final String MARK_PAGINATOR = "paginator";
74 private static final String MARK_NB_ITEMS_PER_PAGE = "nb_items_per_page";
75
76
77 private int _nItemsPerPage;
78 private int _nDefaultItemsPerPage = AppPropertiesService.getPropertyInt( PROPERTY_DEFAULT_LIST_USERS_PER_PAGE, 50 );
79 private String _strCurrentPageIndex;
80 private CRMUserFilter _filter;
81
82
83
84
85 @Override
86 public String getCurrentPageIndex( )
87 {
88 return _strCurrentPageIndex;
89 }
90
91
92
93
94 @Override
95 public int getDefaultItemsPerPage( )
96 {
97 return _nDefaultItemsPerPage;
98 }
99
100
101
102
103 @Override
104 public void setCurrentPageIndex( String strCurrentPageIndex )
105 {
106 _strCurrentPageIndex = strCurrentPageIndex;
107 }
108
109
110
111
112 @Override
113 public void setDefaultItemsPerPage( int nDefaultItemsPerPage )
114 {
115 _nDefaultItemsPerPage = nDefaultItemsPerPage;
116 }
117
118
119
120
121 @Override
122 public int getItemsPerPage( )
123 {
124 return _nItemsPerPage;
125 }
126
127
128
129
130 @Override
131 public void setItemsPerPage( int nItemsPerPage )
132 {
133 _nItemsPerPage = nItemsPerPage;
134 }
135
136
137
138
139 @Override
140 public void fillModel( String strBaseUrl, HttpServletRequest request, Map<String, Object> model )
141 throws AccessDeniedException
142 {
143 initFilter( request );
144
145
146 UrlItem url = new UrlItem( strBaseUrl );
147 url.addParameter( PARAMETER_SESSION, PARAMETER_SESSION );
148
149
150 _strCurrentPageIndex = Paginator.getPageIndex( request, Paginator.PARAMETER_PAGE_INDEX, _strCurrentPageIndex );
151 _nDefaultItemsPerPage = AppPropertiesService.getPropertyInt( PROPERTY_DEFAULT_LIST_USERS_PER_PAGE, 50 );
152 _nItemsPerPage = Paginator.getItemsPerPage( request, Paginator.PARAMETER_ITEMS_PER_PAGE, _nItemsPerPage,
153 _nDefaultItemsPerPage );
154
155 CRMUserService crmUserService = CRMUserService.getService( );
156 List<Integer> listIdsCRMUser = crmUserService.findListIdsByFilter( _filter );
157
158 LocalizedPaginator<Integer> paginator = new LocalizedPaginator<Integer>( listIdsCRMUser, getItemsPerPage( ),
159 url.getUrl( ), Paginator.PARAMETER_PAGE_INDEX, getCurrentPageIndex( ), request.getLocale( ) );
160
161 List<CRMUser> listUsers = crmUserService.findByListIds( paginator.getPageItems( ) );
162
163 model.put( MARK_LIST_CRM_USERS, listUsers );
164 model.put( MARK_FILTER, _filter );
165 model.put( MARK_PAGINATOR, paginator );
166 model.put( MARK_NB_ITEMS_PER_PAGE, Integer.toString( paginator.getItemsPerPage( ) ) );
167 }
168
169
170
171
172 @Override
173 public void initFilter( HttpServletRequest request )
174 {
175 if ( StringUtils.isBlank( request.getParameter( PARAMETER_SESSION ) ) || ( _filter == null ) )
176 {
177 _filter = new CRMUserFilter( );
178 _filter.init( request );
179 }
180 }
181 }