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.portal.web.search;
35
36 import fr.paris.lutece.portal.business.rbac.RBAC;
37 import fr.paris.lutece.portal.business.search.SearchParameterHome;
38 import fr.paris.lutece.portal.service.admin.AccessDeniedException;
39 import fr.paris.lutece.portal.service.message.AdminMessage;
40 import fr.paris.lutece.portal.service.message.AdminMessageService;
41 import fr.paris.lutece.portal.service.rbac.RBACService;
42 import fr.paris.lutece.portal.service.search.SearchResourceIdService;
43 import fr.paris.lutece.portal.service.search.SearchService;
44 import fr.paris.lutece.portal.service.template.AppTemplateService;
45 import fr.paris.lutece.portal.web.admin.AdminFeaturesPageJspBean;
46 import fr.paris.lutece.portal.web.constants.Messages;
47 import fr.paris.lutece.util.ReferenceItem;
48 import fr.paris.lutece.util.html.HtmlTemplate;
49
50 import org.apache.commons.lang.StringUtils;
51
52 import java.util.HashMap;
53 import java.util.Map;
54
55 import javax.servlet.http.HttpServletRequest;
56
57
58
59
60
61 public class SearchJspBean extends AdminFeaturesPageJspBean
62 {
63
64 public static final String RIGHT_SEARCH_MANAGEMENT = "CORE_SEARCH_MANAGEMENT";
65
66
67
68
69 private static final long serialVersionUID = -2095709285081142039L;
70
71
72
73 private static final String EMPTY_STRING = "";
74
75
76 private static final String JSP_MANAGE_SEARCH = "ManageSearch.jsp";
77
78
79 private static final String MARK_PERMISSION_MANAGE_ADVANCED_PARAMETERS = "permission_manage_advanced_parameters";
80 private static final String MARK_TAGLIST = "taglist";
81 private static final String MARK_TAG_FILTER = "tag_filter";
82
83
84 private static final String PARAMETER_CANCEL = "cancel";
85 private static final String PARAMETER_DATE_FILTER = "date_filter";
86 private static final String PARAMETER_DEFAULT_OPERATOR = "default_operator";
87 private static final String PARAMETER_HELP_MESSAGE = "help_message";
88 private static final String PARAMETER_TAGLIST = "taglist";
89 private static final String PARAMETER_TAG_FILTER = "tag_filter";
90 private static final String PARAMETER_TYPE_FILTER = "type_filter";
91
92
93 private static final String PROPERTY_MANAGE_ADVANCED_PARAMETERS_PAGETITLE = "portal.search.manage_advanced_parameters.pageTitle";
94 private static final String PROPERTY_MANAGE_SEARCH_PAGETITLE = "portal.search.manage_search.pageTitle";
95 private static final String PROPERTY_MODIFY_TAGLIST_PAGETITLE = "portal.search.modify_taglist.pageTitle";
96
97
98 private static final String TEMPLATE_MANAGE_ADVANCED_PARAMETERS = "admin/search/manage_advanced_parameters.html";
99 private static final String TEMPLATE_MANAGE_SEARCH = "admin/search/manage_search.html";
100 private static final String TEMPLATE_MODIFY_TAGLIST = "admin/search/modify_taglist.html";
101
102
103
104
105
106
107 public String getManageSearch( HttpServletRequest request )
108 {
109 setPageTitleProperty( PROPERTY_MANAGE_SEARCH_PAGETITLE );
110
111 boolean bPermissionManageAdvancedParameters = RBACService.isAuthorized( SearchService.RESOURCE_TYPE,
112 RBAC.WILDCARD_RESOURCES_ID, SearchResourceIdService.PERMISSION_MANAGE_ADVANCED_PARAMETERS, getUser( ) );
113
114 Map<String, Object> model = new HashMap<String, Object>( );
115
116 model.put( MARK_PERMISSION_MANAGE_ADVANCED_PARAMETERS, bPermissionManageAdvancedParameters );
117 model.put( MARK_TAG_FILTER, SearchParameterHome.findByKey( PARAMETER_TAG_FILTER ).getName( ) );
118
119 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_MANAGE_SEARCH, getLocale( ), model );
120
121 return getAdminPage( template.getHtml( ) );
122 }
123
124
125
126
127
128
129 public String getModifyTagList( HttpServletRequest request )
130 {
131 setPageTitleProperty( PROPERTY_MODIFY_TAGLIST_PAGETITLE );
132
133 Map<String, Object> model = new HashMap<String, Object>( );
134
135 model.put( MARK_TAGLIST, SearchParameterHome.findByKey( PARAMETER_TAGLIST ).getName( ) );
136 model.put( MARK_TAG_FILTER, SearchParameterHome.findByKey( PARAMETER_TAG_FILTER ).getName( ) );
137
138 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_MODIFY_TAGLIST, getLocale( ), model );
139
140 return getAdminPage( template.getHtml( ) );
141 }
142
143
144
145
146
147
148 public String doModifyTagList( HttpServletRequest request )
149 {
150 if ( request.getParameter( PARAMETER_CANCEL ) == null )
151 {
152 ReferenceItem param = new ReferenceItem( );
153 param.setCode( PARAMETER_TAGLIST );
154
155 String strTagList = request.getParameter( PARAMETER_TAGLIST );
156 param.setName( StringUtils.isNotBlank( strTagList ) ? strTagList : EMPTY_STRING );
157 SearchParameterHome.update( param );
158 }
159
160 return JSP_MANAGE_SEARCH;
161 }
162
163
164
165
166
167
168 public String getManageAdvancedParameters( HttpServletRequest request )
169 {
170 if ( !RBACService.isAuthorized( SearchService.RESOURCE_TYPE, RBAC.WILDCARD_RESOURCES_ID,
171 SearchResourceIdService.PERMISSION_MANAGE_ADVANCED_PARAMETERS, getUser( ) ) )
172 {
173 return getManageSearch( request );
174 }
175
176 setPageTitleProperty( PROPERTY_MANAGE_ADVANCED_PARAMETERS_PAGETITLE );
177
178 Map<String, Object> model = SearchService.getManageAdvancedParameters( getUser( ), request );
179
180 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_MANAGE_ADVANCED_PARAMETERS, getLocale( ),
181 model );
182
183 return getAdminPage( template.getHtml( ) );
184 }
185
186
187
188
189
190
191
192
193 public String doModifyAdvancedParameters( HttpServletRequest request )
194 throws AccessDeniedException
195 {
196 if ( !RBACService.isAuthorized( SearchService.RESOURCE_TYPE, RBAC.WILDCARD_RESOURCES_ID,
197 SearchResourceIdService.PERMISSION_MANAGE_ADVANCED_PARAMETERS, getUser( ) ) )
198 {
199 throw new AccessDeniedException( "User " + getUser( ) + " is not authorized to permission " +
200 SearchResourceIdService.PERMISSION_MANAGE_ADVANCED_PARAMETERS );
201 }
202
203 if ( request.getParameter( PARAMETER_CANCEL ) == null )
204 {
205 String strTypeFilter = request.getParameter( PARAMETER_TYPE_FILTER );
206 String strDefaultOperator = request.getParameter( PARAMETER_DEFAULT_OPERATOR );
207 String strHelpMessage = request.getParameter( PARAMETER_HELP_MESSAGE );
208 String strDateFilter = request.getParameter( PARAMETER_DATE_FILTER );
209 String strTagFilter = request.getParameter( PARAMETER_TAG_FILTER );
210
211
212 if ( StringUtils.isBlank( strTypeFilter ) || StringUtils.isBlank( strDefaultOperator ) ||
213 StringUtils.isBlank( strDateFilter ) || StringUtils.isBlank( strTagFilter ) )
214 {
215 return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
216 }
217
218 ReferenceItem param = new ReferenceItem( );
219 param.setCode( PARAMETER_TYPE_FILTER );
220 param.setName( strTypeFilter );
221 SearchParameterHome.update( param );
222
223 param = new ReferenceItem( );
224 param.setCode( PARAMETER_DEFAULT_OPERATOR );
225 param.setName( strDefaultOperator );
226 SearchParameterHome.update( param );
227
228 param = new ReferenceItem( );
229 param.setCode( PARAMETER_HELP_MESSAGE );
230 param.setName( StringUtils.isNotBlank( strHelpMessage ) ? strHelpMessage : EMPTY_STRING );
231 SearchParameterHome.update( param );
232
233 param = new ReferenceItem( );
234 param.setCode( PARAMETER_DATE_FILTER );
235 param.setName( strDateFilter );
236 SearchParameterHome.update( param );
237
238 param = new ReferenceItem( );
239 param.setCode( PARAMETER_TAG_FILTER );
240 param.setName( strTagFilter );
241 SearchParameterHome.update( param );
242 }
243
244 return JSP_MANAGE_SEARCH;
245 }
246 }