SearchJspBean.java
- /*
- * Copyright (c) 2002-2022, City of Paris
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice
- * and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice
- * and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * License 1.0
- */
- package fr.paris.lutece.portal.web.search;
- import fr.paris.lutece.portal.business.rbac.RBAC;
- import fr.paris.lutece.portal.business.search.SearchParameterHome;
- import fr.paris.lutece.portal.service.admin.AccessDeniedException;
- import fr.paris.lutece.portal.service.message.AdminMessage;
- import fr.paris.lutece.portal.service.message.AdminMessageService;
- import fr.paris.lutece.portal.service.rbac.RBACService;
- import fr.paris.lutece.portal.service.search.SearchResourceIdService;
- import fr.paris.lutece.portal.service.search.SearchService;
- import fr.paris.lutece.portal.service.security.SecurityTokenService;
- import fr.paris.lutece.portal.web.admin.AdminFeaturesPageJspBean;
- import fr.paris.lutece.portal.web.constants.Messages;
- import fr.paris.lutece.portal.web.dashboard.AdminDashboardJspBean;
- import fr.paris.lutece.util.ReferenceItem;
- import org.apache.commons.lang3.StringUtils;
- import javax.servlet.http.HttpServletRequest;
- /**
- * This class provides the user interface to manage app search features ( manage filters )
- */
- public class SearchJspBean extends AdminFeaturesPageJspBean
- {
- /** Unique name for the right to manage search parameters */
- public static final String RIGHT_SEARCH_MANAGEMENT = "CORE_SEARCH_MANAGEMENT";
- /**
- * Serial version UID
- */
- private static final long serialVersionUID = -2095709285081142039L;
- // //////////////////////////////////////////////////////////////////////////
- // Constants
- private static final String EMPTY_STRING = "";
- // Jsp url
- private static final String ANCHOR_ADMIN_DASHBOARDS = "search";
- // Parameters
- private static final String PARAMETER_CANCEL = "cancel";
- private static final String PARAMETER_DATE_FILTER = "date_filter";
- private static final String PARAMETER_DEFAULT_OPERATOR = "default_operator";
- private static final String PARAMETER_HELP_MESSAGE = "help_message";
- private static final String PARAMETER_TAG_FILTER = "tag_filter";
- private static final String PARAMETER_TYPE_FILTER = "type_filter";
- /**
- * Processes the data capture form of advanced parameters
- *
- * @param request
- * the HTTP request
- * @return the jsp URL of the process result
- * @throws AccessDeniedException
- * if permission to manage advanced parameters on search has not been granted to the user
- */
- public String doModifyAdvancedParameters( HttpServletRequest request ) throws AccessDeniedException
- {
- if ( !RBACService.isAuthorized( SearchService.RESOURCE_TYPE, RBAC.WILDCARD_RESOURCES_ID, SearchResourceIdService.PERMISSION_MANAGE_ADVANCED_PARAMETERS,
- getUser( ) ) )
- {
- throw new AccessDeniedException(
- "User " + getUser( ) + " is not authorized to permission " + SearchResourceIdService.PERMISSION_MANAGE_ADVANCED_PARAMETERS );
- }
- if ( !SecurityTokenService.getInstance( ).validate( request, AdminDashboardJspBean.TEMPLATE_MANAGE_DASHBOARDS ) )
- {
- throw new AccessDeniedException( ERROR_INVALID_TOKEN );
- }
- if ( request.getParameter( PARAMETER_CANCEL ) == null )
- {
- String strTypeFilter = request.getParameter( PARAMETER_TYPE_FILTER );
- String strDefaultOperator = request.getParameter( PARAMETER_DEFAULT_OPERATOR );
- String strHelpMessage = request.getParameter( PARAMETER_HELP_MESSAGE );
- String strDateFilter = request.getParameter( PARAMETER_DATE_FILTER );
- String strTagFilter = request.getParameter( PARAMETER_TAG_FILTER );
- // mandatory field
- if ( StringUtils.isBlank( strTypeFilter ) || StringUtils.isBlank( strDefaultOperator ) || StringUtils.isBlank( strDateFilter )
- || StringUtils.isBlank( strTagFilter ) )
- {
- return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
- }
- ReferenceItem param = new ReferenceItem( );
- param.setCode( PARAMETER_TYPE_FILTER );
- param.setName( strTypeFilter );
- SearchParameterHome.update( param );
- param = new ReferenceItem( );
- param.setCode( PARAMETER_DEFAULT_OPERATOR );
- param.setName( strDefaultOperator );
- SearchParameterHome.update( param );
- param = new ReferenceItem( );
- param.setCode( PARAMETER_HELP_MESSAGE );
- param.setName( StringUtils.isNotBlank( strHelpMessage ) ? strHelpMessage : EMPTY_STRING );
- SearchParameterHome.update( param );
- param = new ReferenceItem( );
- param.setCode( PARAMETER_DATE_FILTER );
- param.setName( strDateFilter );
- SearchParameterHome.update( param );
- param = new ReferenceItem( );
- param.setCode( PARAMETER_TAG_FILTER );
- param.setName( strTagFilter );
- SearchParameterHome.update( param );
- }
- return getAdminDashboardsUrl( request, ANCHOR_ADMIN_DASHBOARDS );
- }
- }