/* * Copyright (c) 2002-2015, Mairie de 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.plugins.${plugin_name}.business; import fr.paris.lutece.portal.service.plugin.Plugin; import fr.paris.lutece.util.sql.DAOUtil; import java.util.ArrayList; import java.util.Collection; /** * This class provides Data Access methods for ${business_class.businessClass} objects */ public final class ${business_class.businessClass}DAO implements I${business_class.businessClass}DAO { // Constants private static final String SQL_QUERY_NEW_PK = "SELECT max( ${business_class.primaryKey} ) FROM ${business_class.businessTableName}"; private static final String SQL_QUERY_SELECT = "SELECT ${business_class.primaryKey}<#if business_class.attributes??>, <#list business_class.attributes as attribute>${attribute.attributeName}<#if attribute_has_next>, FROM ${business_class.businessTableName} WHERE ${business_class.primaryKey} = ?"; private static final String SQL_QUERY_INSERT = "INSERT INTO ${business_class.businessTableName} ( ${business_class.primaryKey}<#if business_class.attributes??>, <#list business_class.attributes as attribute>${attribute.attributeName}<#if attribute_has_next>, ) VALUES ( ?<#if business_class.attributes??>, <#list business_class.attributes as attribute>?<#if attribute_has_next>, ) "; private static final String SQL_QUERY_DELETE = "DELETE FROM ${business_class.businessTableName} WHERE ${business_class.primaryKey} = ? "; private static final String SQL_QUERY_UPDATE = "UPDATE ${business_class.businessTableName} SET ${business_class.primaryKey} = ?<#if business_class.attributes??>, <#list business_class.attributes as attribute>${attribute.attributeName} = ?<#if attribute_has_next>, WHERE ${business_class.primaryKey} = ?"; private static final String SQL_QUERY_SELECTALL = "SELECT ${business_class.primaryKey}<#if business_class.attributes??>, <#list business_class.attributes as attribute>${attribute.attributeName}<#if attribute_has_next>, FROM ${business_class.businessTableName}"; private static final String SQL_QUERY_SELECTALL_ID = "SELECT ${business_class.primaryKey} FROM ${business_class.businessTableName}"; /** * Generates a new primary key * @param plugin The Plugin * @return The new primary key */ public int newPrimaryKey( Plugin plugin) { DAOUtil daoUtil = new DAOUtil( SQL_QUERY_NEW_PK , plugin ); daoUtil.executeQuery( ); int nKey = 1; if( daoUtil.next( ) ) { nKey = daoUtil.getInt( 1 ) + 1; } daoUtil.free(); return nKey; } /** * {@inheritDoc } */ @Override public void insert( ${business_class.businessClass} ${business_class.instanceName}, Plugin plugin ) { DAOUtil daoUtil = new DAOUtil( SQL_QUERY_INSERT, plugin ); ${business_class.instanceName}.setId( newPrimaryKey( plugin ) ); daoUtil.setInt( 1, ${business_class.instanceName}.getId( ) ); <#list business_class.attributes as attribute> daoUtil.set${attribute.type?cap_first}( ${attribute_index + 2}, ${business_class.instanceName}.get${attribute.name}( ) ); daoUtil.executeUpdate( ); daoUtil.free( ); } /** * {@inheritDoc } */ @Override public ${business_class.businessClass} load( int nKey, Plugin plugin ) { DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT, plugin ); daoUtil.setInt( 1 , nKey ); daoUtil.executeQuery( ); ${business_class.businessClass} ${business_class.instanceName} = null; if ( daoUtil.next( ) ) { ${business_class.instanceName} = new ${business_class.businessClass}(); ${business_class.instanceName}.setId( daoUtil.getInt( 1 ) ); <#list business_class.attributes as attribute> ${business_class.instanceName}.set${attribute.name}( daoUtil.get${attribute.type?cap_first}( ${attribute_index + 2} ) ); } daoUtil.free( ); return ${business_class.instanceName}; } /** * {@inheritDoc } */ @Override public void delete( int nKey, Plugin plugin ) { DAOUtil daoUtil = new DAOUtil( SQL_QUERY_DELETE, plugin ); daoUtil.setInt( 1 , nKey ); daoUtil.executeUpdate( ); daoUtil.free( ); } /** * {@inheritDoc } */ @Override public void store( ${business_class.businessClass} ${business_class.instanceName}, Plugin plugin ) { DAOUtil daoUtil = new DAOUtil( SQL_QUERY_UPDATE, plugin ); daoUtil.setInt( 1, ${business_class.instanceName}.getId( ) ); <#list business_class.attributes as attribute> <#assign nIndex=attribute_index+2 > daoUtil.set${attribute.type?cap_first}( ${nIndex}, ${business_class.instanceName}.get${attribute.name}( ) ); daoUtil.setInt( ${nIndex+1}, ${business_class.instanceName}.getId( ) ); daoUtil.executeUpdate( ); daoUtil.free( ); } /** * {@inheritDoc } */ @Override public Collection<${business_class.businessClass}> select${business_class.businessClass}sList( Plugin plugin ) { Collection<${business_class.businessClass}> ${business_class.instanceName}List = new ArrayList<${business_class.businessClass}>( ); DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECTALL, plugin ); daoUtil.executeQuery( ); while ( daoUtil.next( ) ) { ${business_class.businessClass} ${business_class.instanceName} = new ${business_class.businessClass}( ); ${business_class.instanceName}.setId( daoUtil.getInt( 1 ) ); <#list business_class.attributes as attribute> ${business_class.instanceName}.set${attribute.name}( daoUtil.get${attribute.type?cap_first}( ${attribute_index+2} ) ); ${business_class.instanceName}List.add( ${business_class.instanceName} ); } daoUtil.free( ); return ${business_class.instanceName}List; } /** * {@inheritDoc } */ @Override public Collection<Integer> selectId${business_class.businessClass}sList( Plugin plugin ) { Collection<Integer> ${business_class.instanceName}List = new ArrayList<Integer>( ); DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECTALL_ID, plugin ); daoUtil.executeQuery( ); while ( daoUtil.next( ) ) { ${business_class.instanceName}List.add( daoUtil.getInt( 1 ) ); } daoUtil.free( ); return ${business_class.instanceName}List; } }