com_mysql_jdbc_Driver.java :  » Web-Framework » rife-1.6.1 » com » uwyn » rife » scheduler » taskoptionmanagers » databasedrivers » Java Open Source

Java Open Source » Web Framework » rife 1.6.1 
rife 1.6.1 » com » uwyn » rife » scheduler » taskoptionmanagers » databasedrivers » com_mysql_jdbc_Driver.java
/*
 * 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;
    }
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.