Coverage Report - fr.paris.lutece.plugins.dila.business.fichelocale.dao.impl.XmlDAO
 
Classes in this File Line Coverage Branch Coverage Complexity
XmlDAO
0 %
0/169
0 %
0/30
2,154
 
 1  
 /*
 2  
  * Copyright (c) 2002-2014, Mairie de 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.plugins.dila.business.fichelocale.dao.impl;
 35  
 
 36  
 import fr.paris.lutece.plugins.dila.business.enums.ResourceTypeEnum;
 37  
 import fr.paris.lutece.plugins.dila.business.fichelocale.dao.IXmlDAO;
 38  
 import fr.paris.lutece.plugins.dila.business.fichelocale.dto.XmlDTO;
 39  
 import fr.paris.lutece.plugins.dila.service.DilaPlugin;
 40  
 import fr.paris.lutece.portal.service.plugin.PluginService;
 41  
 import fr.paris.lutece.util.sql.DAOUtil;
 42  
 
 43  
 import java.io.Serializable;
 44  
 import java.sql.Date;
 45  
 import java.util.ArrayList;
 46  
 import java.util.List;
 47  
 
 48  
 
 49  
 /**
 50  
  * Implementation of {@link IXmlDAO}
 51  
  */
 52  0
 public class XmlDAO implements IXmlDAO, Serializable
 53  
 {
 54  
     /** Serial ID */
 55  
     private static final long serialVersionUID = -907799297326123041L;
 56  
     private static final String SQL_QUERY_NEW_PK = "SELECT max(id) FROM dila_xml";
 57  
     private static final String SQL_QUERY_FIND_TITLE_BY_ID = "SELECT title FROM dila_xml WHERE id_xml = ? ";
 58  
     private static final String SQL_QUERY_FIND_FOLDER_BY_ID = "SELECT title, breadcrumb FROM dila_xml WHERE id_xml = ? ";
 59  
     private static final String SQL_QUERY_FIND_TITLE_BY_ID_AND_TYPES_AND_AUDIENCE = "SELECT title FROM dila_xml "
 60  
             + "WHERE id_xml = ? AND audience_id = ? ";
 61  
     private static final String SQL_QUERY_FIND_FODLER_BY_ID_AND_TYPES_AND_AUDIENCE = "SELECT id, title, breadcrumb FROM dila_xml "
 62  
             + "WHERE id_xml = ? AND audience_id = ? ";
 63  
     private static final String SQL_QUERY_AND_RESOURCE_TYPE = "AND type_resource IN ";
 64  
     private static final String SQL_QUERY_FIND_RESOURCE_TYPE_BY_IDXML_AND_AUDIENCE = "SELECT type_resource FROM dila_xml"
 65  
             + " WHERE id_xml = ? AND audience_id = ?";
 66  
     private static final String SQL_QUERY_FIND_ALL = "SELECT id, id_xml, title, breadcrumb, audience_id, type_resource, date_creation, date_modification FROM dila_xml ";
 67  
     private static final String SQL_QUERY_FIND_HOW_TO_BY_AUDIENCE = "SELECT id_xml, title FROM dila_xml "
 68  
             + "WHERE audience_id = ? AND type_resource = ? ORDER BY date_modification DESC";
 69  
     private static final String SQL_QUERY_FIND_ID_BY_XML_AND_AUDIENCE = "SELECT id FROM dila_xml "
 70  
             + "WHERE id_xml = ? AND audience_id = ?";
 71  
     private static final String SQL_QUERY_INSERT = " INSERT INTO dila_xml ( id, id_xml , title , type_resource, breadcrumb, audience_id, date_creation, date_modification ) "
 72  
             + " VALUES ( ?, ? ,?, ?, ?, ?, ?, ? )";
 73  
     private static final String SQL_QUERY_UPDATE = " UPDATE dila_xml SET title = ?, type_resource = ?, breadcrumb = ?, date_modification = ? WHERE id_xml = ? AND audience_id = ? ";
 74  
     private static final String SQL_QUERY_DELETE = " DELETE FROM dila_xml WHERE date_modification < ?";
 75  
 
 76  
     /**
 77  
      * Generates a new primary key
 78  
      * @return The new primary key
 79  
      */
 80  
     private Long newPrimaryKey( )
 81  
     {
 82  0
         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_NEW_PK, PluginService.getPlugin( DilaPlugin.PLUGIN_NAME ) );
 83  0
         daoUtil.executeQuery( );
 84  
 
 85  0
         Long nKey = 1L;
 86  
 
 87  0
         if ( daoUtil.next( ) )
 88  
         {
 89  0
             nKey = daoUtil.getLong( 1 ) + 1L;
 90  
         }
 91  
 
 92  0
         daoUtil.free( );
 93  
 
 94  0
         return nKey;
 95  
     }
 96  
 
 97  
     @Override
 98  
     public String findTitleById( String id )
 99  
     {
 100  0
         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_FIND_TITLE_BY_ID, PluginService.getPlugin( DilaPlugin.PLUGIN_NAME ) );
 101  0
         daoUtil.setString( 1, id );
 102  
 
 103  0
         daoUtil.executeQuery( );
 104  
 
 105  0
         String title = null;
 106  
 
 107  0
         if ( daoUtil.next( ) )
 108  
         {
 109  0
             title = daoUtil.getString( 1 );
 110  
         }
 111  
 
 112  0
         daoUtil.free( );
 113  
 
 114  0
         return title;
 115  
     }
 116  
 
 117  
     @Override
 118  
     public XmlDTO findFolderById( String id )
 119  
     {
 120  0
         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_FIND_FOLDER_BY_ID, PluginService.getPlugin( DilaPlugin.PLUGIN_NAME ) );
 121  0
         daoUtil.setString( 1, id );
 122  
 
 123  0
         daoUtil.executeQuery( );
 124  
 
 125  0
         XmlDTO xml = null;
 126  
 
 127  0
         if ( daoUtil.next( ) )
 128  
         {
 129  0
             xml = new XmlDTO( );
 130  
 
 131  0
             xml.setIdXml( id );
 132  0
             xml.setTitle( daoUtil.getString( 1 ) );
 133  0
             xml.setBreadCrumb( daoUtil.getString( 2 ) );
 134  
         }
 135  
 
 136  0
         daoUtil.free( );
 137  
 
 138  0
         return xml;
 139  
     }
 140  
 
 141  
     @Override
 142  
     public String findTitleByIdAndTypesAndAudience( String idDossierFrere, List<String> availableTypes, Long idAudience )
 143  
     {
 144  0
         StringBuilder sbSQL = new StringBuilder( SQL_QUERY_FIND_TITLE_BY_ID_AND_TYPES_AND_AUDIENCE );
 145  
 
 146  0
         sbSQL.append( " " );
 147  0
         sbSQL.append( SQL_QUERY_AND_RESOURCE_TYPE );
 148  0
         sbSQL.append( "(" );
 149  
 
 150  0
         int count = 0;
 151  
 
 152  0
         for ( String type : availableTypes )
 153  
         {
 154  0
             count++;
 155  
 
 156  0
             if ( count < availableTypes.size( ) )
 157  
             {
 158  0
                 sbSQL.append( "'" + type + "'," );
 159  
             }
 160  
             else
 161  
             {
 162  0
                 sbSQL.append( "'" + type + "'" );
 163  
             }
 164  0
         }
 165  
 
 166  0
         sbSQL.append( ")" );
 167  
 
 168  0
         DAOUtil daoUtil = new DAOUtil( sbSQL.toString( ), PluginService.getPlugin( DilaPlugin.PLUGIN_NAME ) );
 169  0
         daoUtil.setString( 1, idDossierFrere );
 170  0
         daoUtil.setLong( 2, idAudience );
 171  
 
 172  0
         daoUtil.executeQuery( );
 173  
 
 174  0
         String title = null;
 175  
 
 176  0
         if ( daoUtil.next( ) )
 177  
         {
 178  0
             title = daoUtil.getString( 1 );
 179  
         }
 180  
 
 181  0
         daoUtil.free( );
 182  
 
 183  0
         return title;
 184  
     }
 185  
 
 186  
     @Override
 187  
     public XmlDTO findByIdAndTypesAndAudience( String strId, List<String> availableTypes, Long lIdAudience )
 188  
     {
 189  0
         StringBuilder sbSQL = new StringBuilder( SQL_QUERY_FIND_FODLER_BY_ID_AND_TYPES_AND_AUDIENCE );
 190  
 
 191  0
         sbSQL.append( " " );
 192  0
         sbSQL.append( SQL_QUERY_AND_RESOURCE_TYPE );
 193  0
         sbSQL.append( "(" );
 194  
 
 195  0
         int count = 0;
 196  
 
 197  0
         for ( String type : availableTypes )
 198  
         {
 199  0
             count++;
 200  
 
 201  0
             if ( count < availableTypes.size( ) )
 202  
             {
 203  0
                 sbSQL.append( "'" + type + "'," );
 204  
             }
 205  
             else
 206  
             {
 207  0
                 sbSQL.append( "'" + type + "'" );
 208  
             }
 209  0
         }
 210  
 
 211  0
         sbSQL.append( ")" );
 212  
 
 213  0
         DAOUtil daoUtil = new DAOUtil( sbSQL.toString( ), PluginService.getPlugin( DilaPlugin.PLUGIN_NAME ) );
 214  0
         daoUtil.setString( 1, strId );
 215  0
         daoUtil.setLong( 2, lIdAudience );
 216  
 
 217  0
         daoUtil.executeQuery( );
 218  
 
 219  0
         XmlDTO xml = null;
 220  
 
 221  0
         if ( daoUtil.next( ) )
 222  
         {
 223  0
             xml = new XmlDTO( );
 224  
 
 225  0
             xml.setId( daoUtil.getLong( 1 ) );
 226  0
             xml.setIdXml( strId );
 227  0
             xml.setTitle( daoUtil.getString( 2 ) );
 228  
 
 229  0
             if ( daoUtil.getString( 3 ) != null )
 230  
             {
 231  0
                 xml.setBreadCrumb( daoUtil.getString( 3 ) );
 232  
             }
 233  
             else
 234  
             {
 235  0
                 xml.setBreadCrumb( "" );
 236  
             }
 237  
         }
 238  
 
 239  0
         daoUtil.free( );
 240  
 
 241  0
         return xml;
 242  
     }
 243  
 
 244  
     @Override
 245  
     public String findResourceTypeByIdXMLAndAudience( String strIdXml, Long lIdAudience )
 246  
     {
 247  0
         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_FIND_RESOURCE_TYPE_BY_IDXML_AND_AUDIENCE,
 248  0
                 PluginService.getPlugin( DilaPlugin.PLUGIN_NAME ) );
 249  0
         daoUtil.setString( 1, strIdXml );
 250  0
         daoUtil.setLong( 2, lIdAudience );
 251  
 
 252  0
         daoUtil.executeQuery( );
 253  
 
 254  0
         String typeResource = null;
 255  
 
 256  0
         if ( daoUtil.next( ) )
 257  
         {
 258  0
             typeResource = daoUtil.getString( 1 );
 259  
         }
 260  
 
 261  0
         daoUtil.free( );
 262  
 
 263  0
         return typeResource;
 264  
     }
 265  
 
 266  
     @Override
 267  
     public List<XmlDTO> findAll( )
 268  
     {
 269  0
         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_FIND_ALL, PluginService.getPlugin( DilaPlugin.PLUGIN_NAME ) );
 270  
 
 271  0
         daoUtil.executeQuery( );
 272  
 
 273  0
         List<XmlDTO> result = new ArrayList<XmlDTO>( );
 274  
 
 275  0
         while ( daoUtil.next( ) )
 276  
         {
 277  0
             XmlDTO xml = new XmlDTO( );
 278  0
             xml.setId( daoUtil.getLong( 1 ) );
 279  0
             xml.setIdXml( daoUtil.getString( 2 ) );
 280  0
             xml.setTitle( daoUtil.getString( 3 ) );
 281  0
             xml.setBreadCrumb( daoUtil.getString( 4 ) );
 282  0
             xml.setIdAudience( daoUtil.getLong( 5 ) );
 283  0
             xml.setResourceType( daoUtil.getString( 6 ) );
 284  0
             xml.setCreationDate( daoUtil.getDate( 7 ) );
 285  0
             xml.setModificationDate( daoUtil.getDate( 8 ) );
 286  
 
 287  0
             result.add( xml );
 288  0
         }
 289  
 
 290  0
         daoUtil.free( );
 291  
 
 292  0
         return result;
 293  
     }
 294  
 
 295  
     @Override
 296  
     public List<XmlDTO> findHowToByAudience( Long audienceId )
 297  
     {
 298  0
         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_FIND_HOW_TO_BY_AUDIENCE,
 299  0
                 PluginService.getPlugin( DilaPlugin.PLUGIN_NAME ) );
 300  0
         daoUtil.setLong( 1, audienceId );
 301  0
         daoUtil.setString( 2, ResourceTypeEnum.HOW_TO.getLabel( ) );
 302  
 
 303  0
         List<XmlDTO> result = new ArrayList<XmlDTO>( );
 304  
 
 305  0
         daoUtil.executeQuery( );
 306  
 
 307  0
         while ( daoUtil.next( ) )
 308  
         {
 309  0
             XmlDTO dto = new XmlDTO( );
 310  
 
 311  0
             dto.setIdXml( daoUtil.getString( 1 ) );
 312  0
             dto.setTitle( daoUtil.getString( 2 ) );
 313  
 
 314  0
             result.add( dto );
 315  0
         }
 316  
 
 317  0
         daoUtil.free( );
 318  
 
 319  0
         return result;
 320  
     }
 321  
 
 322  
     @Override
 323  
     public Long findIdByXmlAndAudience( String xmlName, Long audienceId )
 324  
     {
 325  0
         Long id = null;
 326  0
         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_FIND_ID_BY_XML_AND_AUDIENCE,
 327  0
                 PluginService.getPlugin( DilaPlugin.PLUGIN_NAME ) );
 328  0
         daoUtil.setString( 1, xmlName );
 329  0
         daoUtil.setLong( 2, audienceId );
 330  0
         daoUtil.executeQuery( );
 331  
 
 332  0
         if ( daoUtil.next( ) )
 333  
         {
 334  0
             id = daoUtil.getLong( 1 );
 335  
         }
 336  
 
 337  0
         daoUtil.free( );
 338  
 
 339  0
         return id;
 340  
     }
 341  
 
 342  
     @Override
 343  
     public XmlDTO findHomeHowTo( Long audienceId )
 344  
     {
 345  0
         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_FIND_HOW_TO_BY_AUDIENCE,
 346  0
                 PluginService.getPlugin( DilaPlugin.PLUGIN_NAME ) );
 347  0
         daoUtil.setLong( 1, audienceId );
 348  0
         daoUtil.setString( 2, ResourceTypeEnum.HOW_TO_HOME.getLabel( ) );
 349  
 
 350  0
         daoUtil.executeQuery( );
 351  
 
 352  0
         XmlDTO homeHowTo = null;
 353  
 
 354  0
         if ( daoUtil.next( ) )
 355  
         {
 356  0
             homeHowTo = new XmlDTO( );
 357  0
             homeHowTo.setIdXml( daoUtil.getString( 1 ) );
 358  0
             homeHowTo.setTitle( daoUtil.getString( 2 ) );
 359  
         }
 360  
 
 361  0
         daoUtil.free( );
 362  
 
 363  0
         return homeHowTo;
 364  
     }
 365  
 
 366  
     @Override
 367  
     public void create( XmlDTO dilaXml )
 368  
     {
 369  0
         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_INSERT, PluginService.getPlugin( DilaPlugin.PLUGIN_NAME ) );
 370  
 
 371  0
         dilaXml.setId( newPrimaryKey( ) );
 372  
 
 373  0
         java.util.Date current = new java.util.Date( );
 374  
 
 375  0
         daoUtil.setLong( 1, dilaXml.getId( ) );
 376  0
         daoUtil.setString( 2, dilaXml.getIdXml( ) );
 377  0
         daoUtil.setString( 3, dilaXml.getTitle( ) );
 378  0
         daoUtil.setString( 4, dilaXml.getResourceType( ) );
 379  0
         daoUtil.setString( 5, dilaXml.getBreadCrumb( ) );
 380  0
         daoUtil.setLong( 6, dilaXml.getIdAudience( ) );
 381  0
         daoUtil.setDate( 7, new Date( current.getTime( ) ) );
 382  0
         daoUtil.setDate( 8, new Date( current.getTime( ) ) );
 383  
 
 384  0
         daoUtil.executeUpdate( );
 385  0
         daoUtil.free( );
 386  0
     }
 387  
 
 388  
     @Override
 389  
     public void store( XmlDTO dilaXml )
 390  
     {
 391  0
         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_UPDATE, PluginService.getPlugin( DilaPlugin.PLUGIN_NAME ) );
 392  
 
 393  0
         java.util.Date current = new java.util.Date( );
 394  
 
 395  0
         daoUtil.setString( 1, dilaXml.getTitle( ) );
 396  0
         daoUtil.setString( 2, dilaXml.getResourceType( ) );
 397  0
         daoUtil.setString( 3, dilaXml.getBreadCrumb( ) );
 398  0
         daoUtil.setDate( 4, new Date( current.getTime( ) ) );
 399  0
         daoUtil.setString( 5, dilaXml.getIdXml( ) );
 400  0
         daoUtil.setLong( 6, dilaXml.getIdAudience( ) );
 401  
 
 402  0
         daoUtil.executeUpdate( );
 403  0
         daoUtil.free( );
 404  0
     }
 405  
 
 406  
     @Override
 407  
     public void delete( )
 408  
     {
 409  0
         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_DELETE, PluginService.getPlugin( DilaPlugin.PLUGIN_NAME ) );
 410  
 
 411  0
         java.util.Date current = new java.util.Date( );
 412  0
         daoUtil.setDate( 1, new Date( current.getTime( ) ) );
 413  
 
 414  0
         daoUtil.executeUpdate( );
 415  0
         daoUtil.free( );
 416  0
     }
 417  
 }