/*
* Copyright 2001-2007 Geert Bevin <gbevin[remove] at uwyn dot com>
* Distributed under the terms of either:
* - the common development and distribution license (CDDL), v1.0; or
* - the GNU Lesser General Public License, v2.1 or later
* $Id: com_mysql_jdbc_Driver.java 3634 2007-01-08 21:42:24Z gbevin $
*/
package com.uwyn.rife.scheduler.taskoptionmanagers.databasedrivers;
import com.uwyn.rife.config.RifeConfig;
import com.uwyn.rife.database.Datasource;
import com.uwyn.rife.database.DbPreparedStatement;
import com.uwyn.rife.database.DbPreparedStatementHandler;
import com.uwyn.rife.database.exceptions.DatabaseException;
import com.uwyn.rife.database.queries.CreateTable;
import com.uwyn.rife.database.queries.Select;
import com.uwyn.rife.scheduler.Taskoption;
import com.uwyn.rife.scheduler.exceptions.TaskoptionManagerException;
import com.uwyn.rife.scheduler.taskoptionmanagers.exceptions.AddTaskoptionErrorException;
import com.uwyn.rife.scheduler.taskoptionmanagers.exceptions.DuplicateTaskoptionException;
import com.uwyn.rife.scheduler.taskoptionmanagers.exceptions.InexistentTaskIdException;
import com.uwyn.rife.scheduler.taskoptionmanagers.exceptions.UpdateTaskoptionErrorException;
public class com_mysql_jdbc_Driver extends generic
{
protected Select mTaskIdExists = null;
public com_mysql_jdbc_Driver(Datasource datasource)
{
super(datasource);
mCreateTableTaskoption = new CreateTable(getDatasource())
.table(RifeConfig.Scheduler.getTableTaskoption())
.column("task_id", Integer.class, CreateTable.NOTNULL)
.column("name", String.class, RifeConfig.Scheduler.getTaskoptionNameMaximumLength(), CreateTable.NOTNULL)
.column("value", String.class, RifeConfig.Scheduler.getTaskoptionValueMaximumLength(), CreateTable.NOTNULL)
.primaryKey(RifeConfig.Scheduler.getTableTaskoption().toUpperCase()+"_PK", new String[] {"task_id", "name"});
mTaskIdExists = new Select(getDatasource())
.from(RifeConfig.Scheduler.getTableTask())
.whereParameter("id", "=");
}
public boolean addTaskoption(final Taskoption taskoption)
throws TaskoptionManagerException
{
if (null == taskoption) throw new IllegalArgumentException("taskoption can't be null.");
// simulate TaskID foreign key
try
{
if (!executeHasResultRows(mTaskIdExists, new DbPreparedStatementHandler() {
public void setParameters(DbPreparedStatement statement)
{
statement
.setInt("id", taskoption.getTaskId());
}
}))
{
throw new InexistentTaskIdException(taskoption.getTaskId());
}
}
catch (DatabaseException e)
{
throw new AddTaskoptionErrorException(taskoption, e);
}
try
{
return _addTaskoption(mAddTaskoption, new DbPreparedStatementHandler() {
public void setParameters(DbPreparedStatement statement)
{
statement
.setInt("task_id", taskoption.getTaskId())
.setString("name", taskoption.getName())
.setString("value", taskoption.getValue());
}
}, taskoption);
}
catch (TaskoptionManagerException e)
{
if (null != e.getCause() &&
null != e.getCause().getCause())
{
if (-1 != e.getCause().getCause().getMessage().toLowerCase().indexOf("duplicate"))
{
throw new DuplicateTaskoptionException(taskoption.getTaskId(), taskoption.getName());
}
}
throw e;
}
}
public boolean updateTaskoption(final Taskoption taskoption)
throws TaskoptionManagerException
{
if (null == taskoption) throw new IllegalArgumentException("taskoption can't be null.");
// simulate TaskID foreign key
try
{
if (!executeHasResultRows(mTaskIdExists, new DbPreparedStatementHandler() {
public void setParameters(DbPreparedStatement statement)
{
statement
.setInt("id", taskoption.getTaskId());
}
}))
{
throw new InexistentTaskIdException(taskoption.getTaskId());
}
}
catch (DatabaseException e)
{
throw new UpdateTaskoptionErrorException(taskoption, e);
}
try
{
return _updateTaskoption(mUpdateTaskoption, new DbPreparedStatementHandler() {
public void setParameters(DbPreparedStatement statement)
{
statement
.setInt("task_id", taskoption.getTaskId())
.setString("name", taskoption.getName())
.setString("value", taskoption.getValue());
}
}, taskoption);
}
catch (TaskoptionManagerException e)
{
if (null != e.getCause() &&
null != e.getCause().getCause())
{
if (-1 != e.getCause().getCause().getMessage().toLowerCase().indexOf("duplicate"))
{
throw new DuplicateTaskoptionException(taskoption.getTaskId(), taskoption.getName());
}
}
throw e;
}
}
}
|