FilterPanel.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.util.datatable;

  35. import fr.paris.lutece.util.ReferenceList;

  36. import java.io.Serializable;

  37. import java.util.ArrayList;
  38. import java.util.List;

  39. /**
  40.  * Class to manage filter panel
  41.  */
  42. public class FilterPanel implements Serializable
  43. {
  44.     public static final String PARAM_FILTER_PANEL_PREFIX = "filter_panel_";
  45.     public static final String PARAM_UPDATE_FILTERS = "updateFilters";
  46.     public static final String PARAM_RESET_FILTERS = "resetFilters";
  47.     private static final long serialVersionUID = 761740458592056772L;
  48.     private String _strFormUrl;
  49.     private ArrayList<DataTableFilter> _listFilter = new ArrayList<>( );

  50.     /**
  51.      * Instantiates a new filter panel.
  52.      */
  53.     protected FilterPanel( )
  54.     {
  55.     }

  56.     /**
  57.      * Creates a new FilterPanel.
  58.      *
  59.      * @param strFormUrl
  60.      *            The url to validate the form of filters
  61.      */
  62.     public FilterPanel( String strFormUrl )
  63.     {
  64.         _strFormUrl = strFormUrl;
  65.     }

  66.     /**
  67.      * Add a filter to this filter panel
  68.      *
  69.      * @param filterType
  70.      *            data type of the filter. For drop down list, use {@link FilterPanel#addDropDownListFilter(String, String, ReferenceList)
  71.      *            addDropDownListFilter} instead
  72.      * @param strParameterName
  73.      *            Name of the parameter of the object to filter.<br>
  74.      *            For example, if this filter should be applied on the parameter "title" of a class named "Data", then the value of the parameter
  75.      *            <i>strParameterName</i> should be "title".
  76.      * @param strFilterLabel
  77.      *            Label describing the filter
  78.      */
  79.     public void addFilter( DataTableFilterType filterType, String strParameterName, String strFilterLabel )
  80.     {
  81.         _listFilter.add( new DataTableFilter( filterType, strParameterName, strFilterLabel ) );
  82.     }

  83.     /**
  84.      * Add a drop down list filter.
  85.      *
  86.      * @param strParameterName
  87.      *            Name of the parameter of the object to filter.<br>
  88.      *            For example, if this filter should be applied on the parameter "title" of a class named "Data", then the value of the parameter
  89.      *            <i>strParameterName</i> should be "title".
  90.      * @param strFilterLabel
  91.      *            Label describing the filter
  92.      * @param refList
  93.      *            Reference list containing data of the drop down list
  94.      */
  95.     public void addDropDownListFilter( String strParameterName, String strFilterLabel, ReferenceList refList )
  96.     {
  97.         DataTableFilter filter = new DataTableFilter( DataTableFilterType.DROPDOWNLIST, strParameterName, strFilterLabel );
  98.         filter.setRefList( refList );
  99.         _listFilter.add( filter );
  100.     }

  101.     /**
  102.      * Get the url of the action of the form
  103.      *
  104.      * @return The url of the action of the form
  105.      */
  106.     public String getFormUrl( )
  107.     {
  108.         return _strFormUrl;
  109.     }

  110.     /**
  111.      * Set the url of the action of the form
  112.      *
  113.      * @param strFormUrl
  114.      *            The url of the action of the form
  115.      */
  116.     public void setFormUrl( String strFormUrl )
  117.     {
  118.         _strFormUrl = strFormUrl;
  119.     }

  120.     /**
  121.      * Get the list of filters of the FilterPanel
  122.      *
  123.      * @return The list of filters of the FilterPanel
  124.      */
  125.     public List<DataTableFilter> getListFilter( )
  126.     {
  127.         return _listFilter;
  128.     }
  129. }