Author: tomdz Date: Wed Apr 18 22:52:46 2007 New Revision: 530281 URL: http://svn.apache.org/viewvc?view=rev&rev=530281 Log: Fix for DDLUTILS-167 and general clean up of the error handling in the tasks
Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/task/Command.java db/ddlutils/trunk/src/java/org/apache/ddlutils/task/CreateDatabaseCommand.java db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DatabaseCommand.java db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DropDatabaseCommand.java db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteDataToDatabaseCommand.java db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteDataToFileCommand.java db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteDtdToFileCommand.java db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaSqlToFileCommand.java db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaToDatabaseCommand.java db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaToFileCommand.java Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/task/Command.java URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/task/Command.java?view=diff&rev=530281&r1=530280&r2=530281 ============================================================================== --- db/ddlutils/trunk/src/java/org/apache/ddlutils/task/Command.java (original) +++ db/ddlutils/trunk/src/java/org/apache/ddlutils/task/Command.java Wed Apr 18 22:52:46 2007 @@ -19,24 +19,81 @@ * under the License. */ +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.apache.ddlutils.model.Database; import org.apache.tools.ant.BuildException; /** - * Base interface for commands that work with a model. + * Base class for commands that work with a model. * * @version $Revision: 289996 $ * @ant.type ignore="true" */ -public interface Command +public abstract class Command { + /** The log. */ + protected final Log _log = LogFactory.getLog(getClass()); + + /** Whether to stop execution upon an error. */ + private boolean _failOnError = true; + + /** + * Determines whether the command execution will be stopped upon an error. + * Default value is <code>true</code>. + * + * @return <code>true</code> if the execution stops in case of an error + */ + public boolean isFailOnError() + { + return _failOnError; + } + + /** + * Specifies whether the execution shall stop if an error has occurred during the task runs. + * + * @param failOnError <code>true</code> if the execution shall stop in case of an error + * @ant.not-required By default execution will be stopped when an error is encountered. + */ + public void setFailOnError(boolean failOnError) + { + _failOnError = failOnError; + } + + /** + * Handles the given exception according to the fail-on-error setting by either + * re-throwing it (wrapped in a build exception) or only logging it. + * + * @param ex The exception + * @param msg The message to use unless this the exception is rethrown and it is + * already a build exception + */ + protected void handleException(Exception ex, String msg) throws BuildException + { + if (isFailOnError()) + { + if (ex instanceof BuildException) + { + throw (BuildException)ex; + } + else + { + throw new BuildException(msg, ex); + } + } + else + { + _log.error(msg, ex); + } + } + /** * Specifies whether this command requires a model, i.e. whether the second * argument in [EMAIL PROTECTED] #execute(DatabaseTaskBase, Database)} cannot be <code>null</code>. * * @return <code>true</code> if this command requires a model */ - public boolean isRequiringModel(); + public abstract boolean isRequiringModel(); /** * Executes this command. @@ -44,5 +101,5 @@ * @param task The executing task * @param model The database model */ - public void execute(DatabaseTaskBase task, Database model) throws BuildException; + public abstract void execute(DatabaseTaskBase task, Database model) throws BuildException; } Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/task/CreateDatabaseCommand.java URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/task/CreateDatabaseCommand.java?view=diff&rev=530281&r1=530280&r2=530281 ============================================================================== --- db/ddlutils/trunk/src/java/org/apache/ddlutils/task/CreateDatabaseCommand.java (original) +++ db/ddlutils/trunk/src/java/org/apache/ddlutils/task/CreateDatabaseCommand.java Wed Apr 18 22:52:46 2007 @@ -93,14 +93,7 @@ } catch (Exception ex) { - if (isFailOnError()) - { - throw new BuildException(ex); - } - else - { - _log.error(ex); - } + handleException(ex, ex.getMessage()); } } Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DatabaseCommand.java URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DatabaseCommand.java?view=diff&rev=530281&r1=530280&r2=530281 ============================================================================== --- db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DatabaseCommand.java (original) +++ db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DatabaseCommand.java Wed Apr 18 22:52:46 2007 @@ -20,8 +20,6 @@ */ import org.apache.commons.dbcp.BasicDataSource; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.apache.ddlutils.Platform; import org.apache.tools.ant.BuildException; @@ -31,15 +29,10 @@ * @version $Revision: 289996 $ * @ant.type ignore="true" */ -public abstract class DatabaseCommand implements Command +public abstract class DatabaseCommand extends Command { - /** The log. */ - protected final Log _log = LogFactory.getLog(getClass()); - /** The platform configuration. */ private PlatformConfiguration _platformConf = new PlatformConfiguration(); - /** Whether to stop execution upon an error. */ - private boolean _failOnError = true; /** * Returns the database type. @@ -89,28 +82,6 @@ protected void setPlatformConfiguration(PlatformConfiguration platformConf) { _platformConf = platformConf; - } - - /** - * Determines whether the command execution will be stopped upon an error. - * Default value is <code>true</code>. - * - * @return <code>true</code> if the execution stops in case of an error - */ - public boolean isFailOnError() - { - return _failOnError; - } - - /** - * Specifies whether the execution shall stop if an error has occurred during the task runs. - * - * @param failOnError <code>true</code> if the execution shall stop in case of an error - * @ant.not-required By default execution will be stopped when an error is encountered. - */ - public void setFailOnError(boolean failOnError) - { - _failOnError = failOnError; } /** Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DropDatabaseCommand.java URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DropDatabaseCommand.java?view=diff&rev=530281&r1=530280&r2=530281 ============================================================================== --- db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DropDatabaseCommand.java (original) +++ db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DropDatabaseCommand.java Wed Apr 18 22:52:46 2007 @@ -68,19 +68,12 @@ } catch (UnsupportedOperationException ex) { - _log.info("Database platform " + platform.getName() + " does not support database dropping via JDBC", - ex); + _log.error("Database platform " + platform.getName() + " does not support database dropping via JDBC", + ex); } catch (Exception ex) { - if (isFailOnError()) - { - throw new BuildException(ex); - } - else - { - _log.error(ex); - } + handleException(ex, ex.getMessage()); } } } Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteDataToDatabaseCommand.java URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteDataToDatabaseCommand.java?view=diff&rev=530281&r1=530280&r2=530281 ============================================================================== --- db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteDataToDatabaseCommand.java (original) +++ db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteDataToDatabaseCommand.java Wed Apr 18 22:52:46 2007 @@ -178,14 +178,7 @@ } catch (Exception ex) { - if (ex instanceof BuildException) - { - throw (BuildException)ex; - } - else - { - throw new BuildException(ex); - } + handleException(ex, ex.getMessage()); } finally { @@ -203,7 +196,7 @@ * @param reader The data reader * @param dataFile The schema file */ - private void readSingleDataFile(Task task, DataReader reader, File dataFile) + private void readSingleDataFile(Task task, DataReader reader, File dataFile) throws BuildException { if (!dataFile.exists()) { @@ -226,15 +219,7 @@ } catch (Exception ex) { - if (isFailOnError()) - { - throw new BuildException("Could not parse or write data file " + dataFile.getAbsolutePath(), ex); - } - else - { - _log.error("Could not parse or write data file " + dataFile.getAbsolutePath(), - ex); - } + handleException(ex, "Could not parse or write data file " + dataFile.getAbsolutePath()); } } } Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteDataToFileCommand.java URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteDataToFileCommand.java?view=diff&rev=530281&r1=530280&r2=530281 ============================================================================== --- db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteDataToFileCommand.java (original) +++ db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteDataToFileCommand.java Wed Apr 18 22:52:46 2007 @@ -91,7 +91,7 @@ } catch (Exception ex) { - throw new BuildException(ex); + handleException(ex, ex.getMessage()); } } Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteDtdToFileCommand.java URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteDtdToFileCommand.java?view=diff&rev=530281&r1=530280&r2=530281 ============================================================================== --- db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteDtdToFileCommand.java (original) +++ db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteDtdToFileCommand.java Wed Apr 18 22:52:46 2007 @@ -22,8 +22,6 @@ import java.io.File; import java.io.FileWriter; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.apache.ddlutils.io.DataDtdWriter; import org.apache.ddlutils.model.Database; import org.apache.tools.ant.BuildException; @@ -36,11 +34,8 @@ * @version $Revision: 289996 $ * @ant.task name="writeDtdToFile" */ -public class WriteDtdToFileCommand implements Command +public class WriteDtdToFileCommand extends Command { - /** The log. */ - private final Log _log = LogFactory.getLog(getClass()); - /** The file to output the DTD to. */ private File _outputFile; @@ -88,7 +83,7 @@ } catch (Exception ex) { - throw new BuildException("Failed to write to output file " + _outputFile.getAbsolutePath(), ex); + handleException(ex, "Failed to write to output file " + _outputFile.getAbsolutePath()); } } } Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaSqlToFileCommand.java URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaSqlToFileCommand.java?view=diff&rev=530281&r1=530280&r2=530281 ============================================================================== --- db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaSqlToFileCommand.java (original) +++ db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaSqlToFileCommand.java Wed Apr 18 22:52:46 2007 @@ -178,14 +178,7 @@ } catch (Exception ex) { - if (isFailOnError()) - { - throw new BuildException(ex); - } - else - { - _log.error(ex); - } + handleException(ex, ex.getMessage()); } } } Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaToDatabaseCommand.java URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaToDatabaseCommand.java?view=diff&rev=530281&r1=530280&r2=530281 ============================================================================== --- db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaToDatabaseCommand.java (original) +++ db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaToDatabaseCommand.java Wed Apr 18 22:52:46 2007 @@ -61,7 +61,8 @@ } /** - * Determines whether to drop tables and the associated constraints if necessary. + * Determines whether to drop tables and the associated constraints before re-creating them + * (this implies <code>alterDatabase</code> is <code>false</code>). * * @return <code>true</code> if drops shall be performed */ @@ -131,14 +132,7 @@ } catch (Exception ex) { - if (isFailOnError()) - { - throw new BuildException(ex); - } - else - { - _log.error(ex); - } + handleException(ex, ex.getMessage()); } } } Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaToFileCommand.java URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaToFileCommand.java?view=diff&rev=530281&r1=530280&r2=530281 ============================================================================== --- db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaToFileCommand.java (original) +++ db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaToFileCommand.java Wed Apr 18 22:52:46 2007 @@ -22,8 +22,6 @@ import java.io.File; import java.io.FileWriter; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.apache.ddlutils.io.DatabaseIO; import org.apache.ddlutils.model.Database; import org.apache.tools.ant.BuildException; @@ -35,11 +33,8 @@ * @version $Revision: 289996 $ * @ant.task name="writeSchemaToFile" */ -public class WriteSchemaToFileCommand implements Command +public class WriteSchemaToFileCommand extends Command { - /** The log. */ - private final Log _log = LogFactory.getLog(getClass()); - /** The file to output the schema to. */ private File _outputFile; @@ -87,7 +82,7 @@ } catch (Exception ex) { - throw new BuildException("Failed to write to output file " + _outputFile.getAbsolutePath(), ex); + handleException(ex, "Failed to write to output file " + _outputFile.getAbsolutePath()); } } }