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/12/31 22:02:11 UTC

svn commit: r491485 - in /db/ddlutils/trunk: build-sample.xml src/java/org/apache/ddlutils/io/DataToDatabaseSink.java src/java/org/apache/ddlutils/task/DatabaseTaskBase.java src/java/org/apache/ddlutils/task/WriteSchemaSqlToFileCommand.java

Author: tomdz
Date: Sun Dec 31 13:02:10 2006
New Revision: 491485

URL: http://svn.apache.org/viewvc?view=rev&rev=491485
Log:
Minor tweaks to the database data sink
Added debug output for defered rows

Modified:
    db/ddlutils/trunk/build-sample.xml
    db/ddlutils/trunk/src/java/org/apache/ddlutils/io/DataToDatabaseSink.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DatabaseTaskBase.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaSqlToFileCommand.java

Modified: db/ddlutils/trunk/build-sample.xml
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/build-sample.xml?view=diff&rev=491485&r1=491484&r2=491485
==============================================================================
--- db/ddlutils/trunk/build-sample.xml (original)
+++ db/ddlutils/trunk/build-sample.xml Sun Dec 31 13:02:10 2006
@@ -29,13 +29,14 @@
 
   <!-- These properties can be overriden on the commandline using -D --> 
   <property name="schemafiles" value="testmodel.xml"/>
+  <property name="datafile" value="testdata.xml"/>
   <property name="catalogpattern" value=""/>
   <property name="schemapattern" value=""/>
   <property name="sqloutputfile" value="schema.sql"/>
   <property name="platform" value=""/>
   <property name="alterdatabase" value="true"/>
   <property name="delimitedsqlidentifiers" value="false"/>
-  <property name="verbosity" value="debug"/>
+  <property name="verbosity" value="info"/>
   
   <!-- The classpath used for running the tasks -->
   <path id="project-classpath">

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/io/DataToDatabaseSink.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/io/DataToDatabaseSink.java?view=diff&rev=491485&r1=491484&r2=491485
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/io/DataToDatabaseSink.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/io/DataToDatabaseSink.java Sun Dec 31 13:02:10 2006
@@ -189,7 +189,32 @@
         }
         if (!_waitingObjects.isEmpty())
         {
-            throw new DataSinkException("There are "+_waitingObjects.size()+" objects still not written because of missing referenced objects");
+            if (_log.isDebugEnabled())
+            {
+                for (Iterator it = _waitingObjects.iterator(); it.hasNext();)
+                {
+                    WaitingObject obj   = (WaitingObject)it.next();
+                    Table         table = _model.getDynaClassFor(obj.getObject()).getTable();
+                    Identity      objId = buildIdentityFromPKs(table, obj.getObject());
+
+                    _log.debug("Row " + objId + " is still not written because it depends on these yet unwritten rows");
+                    for (Iterator fkIt = obj.getPendingFKs(); fkIt.hasNext();)
+                    {
+                        Identity pendingFkId = (Identity)fkIt.next();
+
+                        _log.debug("  " + pendingFkId);
+                    }
+                        
+                }
+            }
+            if (_waitingObjects.size() == 1)
+            {
+                throw new DataSinkException("There is one row still not written because of missing referenced rows");
+            }
+            else
+            {
+                throw new DataSinkException("There are " + _waitingObjects.size() + " rows still not written because of missing referenced rows");
+            }
         }
     }
 
@@ -260,7 +285,7 @@
                 {
                     StringBuffer msg = new StringBuffer();
 
-                    msg.append("Defering insertion of bean ");
+                    msg.append("Defering insertion of row ");
                     msg.append(buildIdentityFromPKs(table, bean).toString());
                     msg.append(" because it is waiting for:");
                     for (Iterator it = waitingObj.getPendingFKs(); it.hasNext();)
@@ -310,7 +335,7 @@
                 {
                     Table waitingObjTable = ((SqlDynaClass)finishedObj.getDynaClass()).getTable();
 
-                    _log.debug("Inserted deferred bean "+buildIdentityFromPKs(waitingObjTable, finishedObj));
+                    _log.debug("Inserted deferred row "+buildIdentityFromPKs(waitingObjTable, finishedObj));
                 }
             }
         }
@@ -343,31 +368,34 @@
      */
     private void purgeBatchQueue() throws DataSinkException
     {
-        try
-        {
-            _platform.insert(_connection, _model, _batchQueue);
-            if (!_connection.getAutoCommit())
-            {
-                _connection.commit();
-            }
-            if (_log.isDebugEnabled())
-            {
-                _log.debug("Inserted "+_batchQueue.size()+" beans in batch mode ");
-            }
-        }
-        catch (Exception ex)
+        if (!_batchQueue.isEmpty())
         {
-            if (_haltOnErrors)
+            try
             {
-                _platform.returnConnection(_connection);
-                throw new DataSinkException(ex);
+                _platform.insert(_connection, _model, _batchQueue);
+                if (!_connection.getAutoCommit())
+                {
+                    _connection.commit();
+                }
+                if (_log.isDebugEnabled())
+                {
+                    _log.debug("Inserted " + _batchQueue.size() + " rows in batch mode ");
+                }
             }
-            else
+            catch (Exception ex)
             {
-                _log.warn("Exception while inserting "+_batchQueue.size()+" beans via batch mode into the database", ex);
+                if (_haltOnErrors)
+                {
+                    _platform.returnConnection(_connection);
+                    throw new DataSinkException(ex);
+                }
+                else
+                {
+                    _log.warn("Exception while inserting " + _batchQueue.size() + " rows via batch mode into the database", ex);
+                }
             }
+            _batchQueue.clear();
         }
-        _batchQueue.clear();
     }
     
     /**
@@ -399,7 +427,7 @@
             }
             else
             {
-                _log.warn("Exception while inserting a bean into the database", ex);
+                _log.warn("Exception while inserting a row into the database", ex);
             }
         }
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DatabaseTaskBase.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DatabaseTaskBase.java?view=diff&rev=491485&r1=491484&r2=491485
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DatabaseTaskBase.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DatabaseTaskBase.java Sun Dec 31 13:02:10 2006
@@ -344,7 +344,7 @@
         props.setProperty("log4j.appender.A.layout", "org.apache.log4j.PatternLayout");
         props.setProperty("log4j.appender.A.layout.ConversionPattern", "%m%n");
         // we don't want debug logging from Digester/Betwixt
-        props.setProperty("log4j.logger.org.apache.commons", (_verbosity.isDebug() ? "DEBUG" : "WARN"));
+        props.setProperty("log4j.logger.org.apache.commons", "WARN");
 
         LogManager.resetConfiguration();
         PropertyConfigurator.configure(props);

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=491485&r1=491484&r2=491485
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaSqlToFileCommand.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/task/WriteSchemaSqlToFileCommand.java Sun Dec 31 13:02:10 2006
@@ -165,8 +165,8 @@
             if (shouldAlter)
             {
                 Database currentModel = (getCatalogPattern() != null) || (getSchemaPattern() != null) ?
-                                             platform.readModelFromDatabase(null, getCatalogPattern(), getSchemaPattern(), null) :
-                                             platform.readModelFromDatabase(null);
+                                             platform.readModelFromDatabase("unnamed", getCatalogPattern(), getSchemaPattern(), null) :
+                                             platform.readModelFromDatabase("unnamed");
 
                 platform.getSqlBuilder().alterDatabase(currentModel, model, params);
             }