You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ddlutils-dev@db.apache.org by to...@apache.org on 2006/07/18 08:00:25 UTC

svn commit: r422981 - /db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaSqlToFileCommand.java

Author: tomdz
Date: Mon Jul 17 23:00:24 2006
New Revision: 422981

URL: http://svn.apache.org/viewvc?rev=422981&view=rev
Log:
Fix for DDLUTILS-92

Modified:
    db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaSqlToFileCommand.java

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?rev=422981&r1=422980&r2=422981&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaSqlToFileCommand.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaSqlToFileCommand.java Mon Jul 17 23:00:24 2006
@@ -110,7 +110,6 @@
         Platform           platform        = getPlatform();
         boolean            isCaseSensitive = platform.isDelimitedIdentifierModeOn();
         CreationParameters params          = getFilteredParameters(model, platform.getName(), isCaseSensitive);
-        Connection         connection      = null;
 
         try
         {
@@ -122,7 +121,37 @@
                 platform.setSqlCommentsOn(true);
             }
             platform.getSqlBuilder().setWriter(writer);
-            if (isAlterDatabase() && (getDataSource() != null))
+
+            boolean shouldAlter = isAlterDatabase();
+
+            if (shouldAlter)
+            {
+                if (getDataSource() == null)
+                {
+                    shouldAlter = false;
+                    task.log("Cannot alter the database because no database connection was specified." +
+                             " SQL for database creation will be generated instead.",
+                             Project.MSG_WARN);
+                }
+                else
+                {
+                    try
+                    {
+                        Connection connection = getDataSource().getConnection();
+
+                        connection.close();
+                    }
+                    catch (SQLException ex)
+                    {
+                        shouldAlter = false;
+                        task.log("Could not establish a connection to the specified database, " +
+                                 "so SQL for database creation will be generated instead. The error was: " +
+                                 ex.getMessage(),
+                                 Project.MSG_WARN);
+                    }
+                }
+            }
+            if (shouldAlter)
             {
                 Database currentModel = (getCatalogPattern() != null) || (getSchemaPattern() != null) ?
                                              platform.readModelFromDatabase(null, getCatalogPattern(), getSchemaPattern(), null) :
@@ -146,18 +175,6 @@
             else
             {
                 task.log(ex.getMessage() == null ? ex.toString() : ex.getMessage(), Project.MSG_ERR);
-            }
-        }
-        finally
-        {
-            if (connection != null)
-            {
-                try
-                {
-                    connection.close();
-                }
-                catch (SQLException ex)
-                {}
             }
         }
     }