RightDAO.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.business.right;

  35. import fr.paris.lutece.util.sql.DAOUtil;

  36. import java.util.ArrayList;
  37. import java.util.Collection;

  38. /**
  39.  * This class provides Data Access methods for right objects
  40.  */
  41. public final class RightDAO implements IRightDAO
  42. {
  43.     // Constants
  44.     private static final String SQL_QUERY_SELECT = " SELECT id_right, name, level_right, "
  45.             + " admin_url, description, plugin_name, id_feature_group, icon_url, documentation_url, id_order, is_external_feature " + " FROM core_admin_right "
  46.             + " WHERE id_right = ? ";
  47.     private static final String SQL_QUERY_INSERT = " INSERT INTO core_admin_right ( id_right , name, level_right, admin_url , "
  48.             + " description, plugin_name, id_feature_group, icon_url, documentation_url, id_order, is_external_feature ) "
  49.             + " VALUES ( ?, ?, ?, ? , ?, ?, ?, ?, ?, ?, ? )";
  50.     private static final String SQL_QUERY_UPDATE = " UPDATE core_admin_right SET name = ?, admin_url = ? , description = ? , "
  51.             + " plugin_name = ?, id_feature_group = ?, icon_url = ?, level_right = ?, documentation_url = ?, id_order = ?, is_external_feature = ? WHERE id_right = ?";
  52.     private static final String SQL_QUERY_SELECTALL_EXTERNAL_FEATURES = " SELECT id_right, name, level_right, admin_url, description, plugin_name, id_feature_group, icon_url, documentation_url, id_order, is_external_feature "
  53.             + " FROM core_admin_right WHERE level_right >= ? AND is_external_feature = 1 ORDER BY id_order ASC, id_right ASC";
  54.     private static final String SQL_QUERY_SELECTALL = " SELECT id_right, name, level_right, admin_url, description, plugin_name, id_feature_group, icon_url, documentation_url, id_order, is_external_feature "
  55.             + " FROM core_admin_right WHERE level_right >= ? ORDER BY id_order ASC, id_right ASC";
  56.     private static final String SQL_QUERY_SELECTALL_FOR_FEATUREGROUP = " SELECT id_right, name, level_right, admin_url, description, plugin_name, id_feature_group, icon_url, documentation_url, id_order, is_external_feature "
  57.             + " FROM core_admin_right WHERE id_feature_group = ? ORDER BY id_order ASC, id_right ASC";
  58.     private static final String SQL_QUERY_SELECTALL_FOR_FEATUREGROUP_IS_NULL = " SELECT id_right, name, level_right, admin_url, description, plugin_name, id_feature_group, icon_url, documentation_url, id_order, is_external_feature "
  59.             + " FROM core_admin_right WHERE id_feature_group IS null ORDER BY id_order ASC, id_right ASC";
  60.     private static final String SQL_QUERY_DELETE_USERRIGHT = " DELETE FROM core_user_right WHERE id_right = ?";
  61.     private static final String SQL_QUERY_DELETE_ADMINRIGHT = " DELETE FROM core_admin_right WHERE id_right = ?";

  62.     // /////////////////////////////////////////////////////////////////////////////////////
  63.     // Access methods to data

  64.     /**
  65.      * Insert a new record in the table.
  66.      *
  67.      * @param right
  68.      *            instance of the right to insert
  69.      */
  70.     public void insert( Right right )
  71.     {
  72.         try ( DAOUtil daoUtil = new DAOUtil( SQL_QUERY_INSERT ) )
  73.         {

  74.             daoUtil.setString( 1, right.getId( ) );
  75.             daoUtil.setString( 2, right.getNameKey( ) );
  76.             daoUtil.setInt( 3, right.getLevel( ) );
  77.             daoUtil.setString( 4, right.getUrl( ) );
  78.             daoUtil.setString( 5, right.getDescriptionKey( ) );
  79.             daoUtil.setString( 6, right.getPluginName( ) );
  80.             daoUtil.setString( 7, right.getFeatureGroup( ) );
  81.             daoUtil.setString( 8, right.getIconUrl( ) );
  82.             daoUtil.setString( 9, right.getDocumentationUrl( ) );
  83.             daoUtil.setInt( 10, right.getOrder( ) );
  84.             daoUtil.setBoolean( 11, right.isExternalFeature( ) );

  85.             daoUtil.executeUpdate( );
  86.         }
  87.     }

  88.     /**
  89.      * load the data of the right from the table
  90.      *
  91.      * @param strId
  92.      *            The identifier of the admin right
  93.      * @return The instance of the admin right
  94.      */
  95.     public Right load( String strId )
  96.     {
  97.         Right right = null;
  98.         try ( DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT ) )
  99.         {
  100.             daoUtil.setString( 1, strId );

  101.             daoUtil.executeQuery( );

  102.             if ( daoUtil.next( ) )
  103.             {
  104.                 right = new Right( );
  105.                 right.setId( daoUtil.getString( 1 ) );
  106.                 right.setNameKey( daoUtil.getString( 2 ) );
  107.                 right.setLevel( daoUtil.getInt( 3 ) );
  108.                 right.setUrl( daoUtil.getString( 4 ) );
  109.                 right.setDescriptionKey( daoUtil.getString( 5 ) );
  110.                 right.setPluginName( daoUtil.getString( 6 ) );
  111.                 right.setFeatureGroup( daoUtil.getString( 7 ) );
  112.                 right.setIconUrl( daoUtil.getString( 8 ) );
  113.                 right.setDocumentationUrl( daoUtil.getString( 9 ) );
  114.                 right.setOrder( daoUtil.getInt( 10 ) );
  115.                 right.setExternalFeature( daoUtil.getBoolean( 11 ) );
  116.             }

  117.         }

  118.         return right;
  119.     }

  120.     /**
  121.      * Delete a record from the table
  122.      *
  123.      * @param strIdRight
  124.      *            string identifier of the admin right to delete
  125.      */
  126.     public void delete( String strIdRight )
  127.     {
  128.         // Clear user right
  129.         try ( DAOUtil daoUtilUser = new DAOUtil( SQL_QUERY_DELETE_USERRIGHT ) )
  130.         {
  131.             daoUtilUser.setString( 1, strIdRight );
  132.             daoUtilUser.executeUpdate( );
  133.         }

  134.         // Clear admin right
  135.         try ( DAOUtil daoUtilAdmin = new DAOUtil( SQL_QUERY_DELETE_ADMINRIGHT ) )
  136.         {
  137.             daoUtilAdmin.setString( 1, strIdRight );
  138.             daoUtilAdmin.executeUpdate( );
  139.         }
  140.     }

  141.     /**
  142.      * Update the record in the table
  143.      *
  144.      * @param right
  145.      *            the reference of the admin right
  146.      */
  147.     public void store( Right right )
  148.     {
  149.         try ( DAOUtil daoUtil = new DAOUtil( SQL_QUERY_UPDATE ) )
  150.         {

  151.             daoUtil.setString( 1, right.getNameKey( ) );
  152.             daoUtil.setString( 2, right.getUrl( ) );
  153.             daoUtil.setString( 3, right.getDescriptionKey( ) );
  154.             daoUtil.setString( 4, right.getPluginName( ) );
  155.             daoUtil.setString( 5, right.getFeatureGroup( ) );
  156.             daoUtil.setString( 6, right.getIconUrl( ) );
  157.             daoUtil.setInt( 7, right.getLevel( ) );
  158.             daoUtil.setString( 8, right.getDocumentationUrl( ) );
  159.             daoUtil.setInt( 9, right.getOrder( ) );
  160.             daoUtil.setBoolean( 10, right.isExternalFeature( ) );
  161.             daoUtil.setString( 11, right.getId( ) );

  162.             daoUtil.executeUpdate( );
  163.         }
  164.     }

  165.     /**
  166.      * Loads the data of all the rights and returns them in form of a collection
  167.      *
  168.      * @return the collection which contains the data of all the rights
  169.      */
  170.     public Collection<Right> selectRightsList( )
  171.     {
  172.         return selectRightsList( 0 );
  173.     }

  174.     /**
  175.      * Loads the data of all the rights with level greater or equal than nLevel and returns them in form of a collection
  176.      *
  177.      * @param nLevel
  178.      *            The right level
  179.      * @return the collection which contains the data of all the rights
  180.      */
  181.     public Collection<Right> selectRightsList( int nLevel )
  182.     {
  183.         Collection<Right> rightList = new ArrayList<>( );
  184.         try ( DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECTALL ) )
  185.         {
  186.             daoUtil.setInt( 1, nLevel );
  187.             daoUtil.executeQuery( );

  188.             while ( daoUtil.next( ) )
  189.             {
  190.                 Right right = new Right( );

  191.                 right.setId( daoUtil.getString( 1 ) );
  192.                 right.setNameKey( daoUtil.getString( 2 ) );
  193.                 right.setLevel( daoUtil.getInt( 3 ) );
  194.                 right.setUrl( daoUtil.getString( 4 ) );
  195.                 right.setDescriptionKey( daoUtil.getString( 5 ) );
  196.                 right.setPluginName( daoUtil.getString( 6 ) );
  197.                 right.setFeatureGroup( daoUtil.getString( 7 ) );
  198.                 right.setIconUrl( daoUtil.getString( 8 ) );
  199.                 right.setDocumentationUrl( daoUtil.getString( 9 ) );
  200.                 right.setOrder( daoUtil.getInt( 10 ) );
  201.                 right.setExternalFeature( daoUtil.getBoolean( 11 ) );

  202.                 rightList.add( right );
  203.             }

  204.         }

  205.         return rightList;
  206.     }

  207.     /**
  208.      * Loads the data of all the external admin features and returns them in form of a collection
  209.      *
  210.      * @return the collection which contains the data of all the external admin features
  211.      */
  212.     public Collection<Right> selectExternalRightsList( )
  213.     {
  214.         return selectExternalRightsList( 0 );
  215.     }

  216.     /**
  217.      * Loads the data of all the external admin features with level greater or equal than nLevel and returns them in form of a collection
  218.      *
  219.      * @param nLevel
  220.      *            The right level
  221.      * @return the collection which contains the data of all the external admin features
  222.      */
  223.     @Override
  224.     public Collection<Right> selectExternalRightsList( int nLevel )
  225.     {
  226.         Collection<Right> rightList = new ArrayList<>( );
  227.         try ( DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECTALL_EXTERNAL_FEATURES ) )
  228.         {
  229.             daoUtil.setInt( 1, nLevel );
  230.             daoUtil.executeQuery( );

  231.             while ( daoUtil.next( ) )
  232.             {
  233.                 Right right = new Right( );

  234.                 right.setId( daoUtil.getString( 1 ) );
  235.                 right.setNameKey( daoUtil.getString( 2 ) );
  236.                 right.setLevel( daoUtil.getInt( 3 ) );
  237.                 right.setUrl( daoUtil.getString( 4 ) );
  238.                 right.setDescriptionKey( daoUtil.getString( 5 ) );
  239.                 right.setPluginName( daoUtil.getString( 6 ) );
  240.                 right.setFeatureGroup( daoUtil.getString( 7 ) );
  241.                 right.setIconUrl( daoUtil.getString( 8 ) );
  242.                 right.setDocumentationUrl( daoUtil.getString( 9 ) );
  243.                 right.setOrder( daoUtil.getInt( 10 ) );
  244.                 right.setExternalFeature( daoUtil.getBoolean( 11 ) );

  245.                 rightList.add( right );
  246.             }

  247.         }

  248.         return rightList;
  249.     }

  250.     /**
  251.      * Loads the data of all the rights with the specified feature group and returns them in form of a collection
  252.      *
  253.      * @param strFeatureGroup
  254.      *            the name of the feature group
  255.      * @return the collection which contains the data of all the rights
  256.      */
  257.     public Collection<Right> selectRightsList( String strFeatureGroup )
  258.     {
  259.         Collection<Right> rightList = new ArrayList<>( );
  260.         String strQuery = SQL_QUERY_SELECTALL_FOR_FEATUREGROUP;

  261.         if ( strFeatureGroup == null )
  262.         {
  263.             strQuery = SQL_QUERY_SELECTALL_FOR_FEATUREGROUP_IS_NULL;
  264.         }

  265.         try ( DAOUtil daoUtil = new DAOUtil( strQuery ) )
  266.         {

  267.             if ( strFeatureGroup != null )
  268.             {
  269.                 daoUtil.setString( 1, strFeatureGroup );
  270.             }

  271.             daoUtil.executeQuery( );

  272.             while ( daoUtil.next( ) )
  273.             {
  274.                 Right right = new Right( );

  275.                 right.setId( daoUtil.getString( 1 ) );
  276.                 right.setNameKey( daoUtil.getString( 2 ) );
  277.                 right.setLevel( daoUtil.getInt( 3 ) );
  278.                 right.setUrl( daoUtil.getString( 4 ) );
  279.                 right.setDescriptionKey( daoUtil.getString( 5 ) );
  280.                 right.setPluginName( daoUtil.getString( 6 ) );
  281.                 right.setFeatureGroup( daoUtil.getString( 7 ) );
  282.                 right.setIconUrl( daoUtil.getString( 8 ) );
  283.                 right.setDocumentationUrl( daoUtil.getString( 9 ) );
  284.                 right.setOrder( daoUtil.getInt( 10 ) );
  285.                 right.setExternalFeature( daoUtil.getBoolean( 11 ) );

  286.                 rightList.add( right );
  287.             }

  288.         }

  289.         return rightList;
  290.     }
  291. }