SearchService.java

  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.service.search;

  35. import fr.paris.lutece.portal.business.search.SearchParameterHome;
  36. import fr.paris.lutece.portal.business.user.AdminUser;
  37. import fr.paris.lutece.portal.service.util.AppPathService;

  38. import java.util.ArrayList;
  39. import java.util.HashMap;
  40. import java.util.List;
  41. import java.util.Map;

  42. import javax.servlet.http.HttpServletRequest;

  43. /**
  44.  * The Class SearchService.
  45.  */
  46. public final class SearchService
  47. {
  48.     public static final String RESOURCE_TYPE = "SEARCH_SERVICE";
  49.     public static final String TYPE_FILTER_NONE = "none";
  50.     private static final String MARK_LOCALE = "locale";
  51.     private static final String MARK_WEBAPP_URL = "webapp_url";
  52.     private static final String MARK_TYPE = "type";
  53.     private static final String MARK_LINK = "link";

  54.     /**
  55.      * Instantiates a new search service.
  56.      */
  57.     private SearchService( )
  58.     {
  59.     }

  60.     /**
  61.      * Build the advanced parameters management.
  62.      *
  63.      * @param user
  64.      *            the current admin user
  65.      * @param request
  66.      *            the request
  67.      * @return the model for the advanced parameters
  68.      */
  69.     public static Map<String, Object> getManageAdvancedParameters( AdminUser user, HttpServletRequest request )
  70.     {
  71.         Map<String, Object> model = new HashMap<>( );
  72.         model.putAll( SearchParameterHome.findAll( ) );
  73.         model.put( MARK_LOCALE, user.getLocale( ) );
  74.         model.put( MARK_WEBAPP_URL, AppPathService.getBaseUrl( request ) );

  75.         return model;
  76.     }

  77.     /**
  78.      * Find types managed by each registered indexer and the link to their specific search page
  79.      *
  80.      * @return the model for this list of types and links
  81.      */
  82.     public static List<Map<String, Object>> getSearchTypesAndLinks( )
  83.     {
  84.         List<Map<String, Object>> listTypesAndLinks = new ArrayList<>( );
  85.         Map<String, Object> model = new HashMap<>( );
  86.         model.put( MARK_TYPE, TYPE_FILTER_NONE );
  87.         model.put( MARK_LINK, null );
  88.         listTypesAndLinks.add( model );

  89.         List<SearchIndexer> listIndexer = new ArrayList<>( IndexationService.getIndexers( ) );

  90.         for ( SearchIndexer indexer : listIndexer )
  91.         {
  92.             String strLink = indexer.getSpecificSearchAppUrl( );

  93.             for ( String strType : indexer.getListType( ) )
  94.             {
  95.                 model = new HashMap<>( );
  96.                 model.put( MARK_TYPE, strType );
  97.                 model.put( MARK_LINK, strLink );
  98.                 listTypesAndLinks.add( model );
  99.             }
  100.         }

  101.         return listTypesAndLinks;
  102.     }
  103. }