package ${businessObject.packageName};
import fr.paris.lutece.portal.service.plugin.Plugin;
import fr.paris.lutece.util.sql.DAOUtil;
import java.util.ArrayList;
import java.util.Collection;
public final class ${businessObject.className}DAO implements I${businessObject.className}DAO
{
private static final String SQL_QUERY_NEW_PK = "SELECT max( ${businessObject.idColumnName} ) FROM ${businessObject.table}";
private static final String SQL_QUERY_SELECT = "SELECT <#list businessObject.attributes as attribute>${attribute.columnName}<#if attribute_has_next>, #if>#list> FROM ${businessObject.table} WHERE ${businessObject.idColumnName} = ?";
private static final String SQL_QUERY_INSERT = "INSERT INTO ${businessObject.table} ( <#list businessObject.attributes as attribute>${attribute.columnName}<#if attribute_has_next>, #if>#list> ) VALUES ( <#list businessObject.attributes as attribute>?<#if attribute_has_next>, #if>#list> ) ";
private static final String SQL_QUERY_DELETE = "DELETE FROM ${businessObject.table} WHERE ${businessObject.idColumnName} = ? ";
private static final String SQL_QUERY_UPDATE = "UPDATE ${businessObject.table} SET <#list businessObject.attributes as attribute>${attribute.columnName} = ?<#if attribute_has_next>, #if>#list> WHERE ${businessObject.idColumnName} = ?";
private static final String SQL_QUERY_SELECTALL = "SELECT <#list businessObject.attributes as attribute>${attribute.columnName}<#if attribute_has_next>, #if>#list> FROM ${businessObject.table}";
public int newPrimaryKey( Plugin plugin)
{
DAOUtil daoUtil = new DAOUtil( SQL_QUERY_NEW_PK , plugin );
daoUtil.executeQuery();
int nKey;
if( !daoUtil.next() )
{
// if the table is empty
nKey = 1;
}
nKey = daoUtil.getInt( 1 ) + 1;
daoUtil.free();
return nKey;
}
public void insert( ${businessObject.className} ${businessObject.instanceName}, Plugin plugin )
{
DAOUtil daoUtil = new DAOUtil( SQL_QUERY_INSERT , plugin );
${businessObject.instanceName}.setId( newPrimaryKey( plugin ) );
<#list businessObject.attributes as attribute>
daoUtil.set${attribute.type?cap_first} ( ${attribute_index + 1}, ${businessObject.instanceName}.get${attribute.name} ( ) );
#list>
daoUtil.executeUpdate();
daoUtil.free();
}
public ${businessObject.className} load( int nId, Plugin plugin )
{
DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT , plugin );
daoUtil.setInt( 1 , nId );
daoUtil.executeQuery();
${businessObject.className} ${businessObject.instanceName} = null;
if ( daoUtil.next() )
{
${businessObject.instanceName} = new ${businessObject.className}();
<#list businessObject.attributes as attribute>
${businessObject.instanceName}.set${attribute.name}( daoUtil.get${attribute.type?cap_first}( ${attribute_index + 1} ) );
#list>
}
daoUtil.free();
return ${businessObject.instanceName};
}
public void delete( int n${businessObject.className}Id, Plugin plugin )
{
DAOUtil daoUtil = new DAOUtil( SQL_QUERY_DELETE , plugin );
daoUtil.setInt( 1 , n${businessObject.className}Id );
daoUtil.executeUpdate();
daoUtil.free();
}
public void store( ${businessObject.className} ${businessObject.instanceName}, Plugin plugin )
{
DAOUtil daoUtil = new DAOUtil( SQL_QUERY_UPDATE , plugin );
<#list businessObject.attributes as attribute>
<#assign nIndex=attribute_index+1 >
daoUtil.set${attribute.type?cap_first}( ${nIndex}, ${businessObject.instanceName}.get${attribute.name}( ) );
#list>
daoUtil.setInt( ${nIndex+1}, ${businessObject.instanceName}.getId( ) );
daoUtil.executeUpdate( );
daoUtil.free( );
}
public Collection<${businessObject.className}> select${businessObject.className}sList( Plugin plugin )
{
Collection<${businessObject.className}> ${businessObject.instanceName}List = new ArrayList<${businessObject.className}>( );
DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECTALL , plugin );
daoUtil.executeQuery( );
while ( daoUtil.next( ) )
{
${businessObject.className} ${businessObject.instanceName} = new ${businessObject.className}( );
<#list businessObject.attributes as attribute>
${businessObject.instanceName}.set${attribute.name}( daoUtil.get${attribute.type?cap_first}( ${attribute_index+1} ) );
#list>
${businessObject.instanceName}List.add( ${businessObject.instanceName} );
}
daoUtil.free();
return ${businessObject.instanceName}List;
}
}