Author: aadamchik
Date: Sun May 17 11:58:16 2009
New Revision: 775631

URL: http://svn.apache.org/viewvc?rev=775631&view=rev
Log:
CAY-1193 Auto load schema on startup

cleaning up logging, etc.

Modified:
    cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/dbsync/BaseSchemaUpdateStrategy.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/dbsync/CreateIfNoSchemaStrategy.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/dbsync/ThrowOnPartialOrCreateSchemaStrategy.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/dbsync/ThrowOnPartialSchemaStrategy.java

Modified: cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt?rev=775631&r1=775630&r2=775631&view=diff
==============================================================================
--- cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt (original)
+++ cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt Sun May 17 
11:58:16 2009
@@ -36,6 +36,7 @@
 CAY-1175 Replace String column name capitalization property with an enum
 CAY-1184 Callback methods should default to usable names
 CAY-1185 Expression API: boolean support in string representation
+CAY-1193 Auto load schema on startup
 CAY-1197 ANT task for reverse engineering
 CAY-1211 Modeler: blown out warning dialogs
 CAY-1214 Class generation should create abstract callback methods in the 
superclass and stub methods in the subclass

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/dbsync/BaseSchemaUpdateStrategy.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/dbsync/BaseSchemaUpdateStrategy.java?rev=775631&r1=775630&r2=775631&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/dbsync/BaseSchemaUpdateStrategy.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/dbsync/BaseSchemaUpdateStrategy.java
 Sun May 17 11:58:16 2009
@@ -33,19 +33,19 @@
      * @since 3.0
      */
     public void updateSchema(DataNode dataNode) throws SQLException {
-        if(!run) {
-            synchronized(this) {
-              if(!run) {
-                generateUpdateSchema(dataNode);
-                run = true;
-              }
+        if (!run) {
+            synchronized (this) {
+                if (!run) {
+                    processSchemaUpdate(dataNode);
+                    run = true;
+                }
             }
-         }
+        }
     }
-    
+
     /**
      * @since 3.0
      */
-    protected abstract void generateUpdateSchema(DataNode dataNode) throws 
SQLException;
- 
+    protected abstract void processSchemaUpdate(DataNode dataNode) throws 
SQLException;
+
 }

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/dbsync/CreateIfNoSchemaStrategy.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/dbsync/CreateIfNoSchemaStrategy.java?rev=775631&r1=775630&r2=775631&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/dbsync/CreateIfNoSchemaStrategy.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/dbsync/CreateIfNoSchemaStrategy.java
 Sun May 17 11:58:16 2009
@@ -39,10 +39,10 @@
  */
 public class CreateIfNoSchemaStrategy extends BaseSchemaUpdateStrategy {
 
-    final Log logObj = LogFactory.getLog(CreateIfNoSchemaStrategy.class);
+    final static Log logger = 
LogFactory.getLog(CreateIfNoSchemaStrategy.class);
 
     @Override
-    public void generateUpdateSchema(DataNode dataNode) throws SQLException {
+    public void processSchemaUpdate(DataNode dataNode) throws SQLException {
 
         Map<String, Boolean> nameTables = getNameTablesInDB(dataNode);
         Collection<DbEntity> entities = 
dataNode.getEntityResolver().getDbEntities();
@@ -56,10 +56,11 @@
         }
 
         if (generate) {
+            logger.info("No schema detected, will create mapped tables");
             generate(dataNode);
         }
         else {
-            logObj.info("Full or partial schema is present, skipping schema 
generation");
+            logger.info("Full or partial schema detected, skipping tables 
creation");
         }
     }
 

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/dbsync/ThrowOnPartialOrCreateSchemaStrategy.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/dbsync/ThrowOnPartialOrCreateSchemaStrategy.java?rev=775631&r1=775630&r2=775631&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/dbsync/ThrowOnPartialOrCreateSchemaStrategy.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/dbsync/ThrowOnPartialOrCreateSchemaStrategy.java
 Sun May 17 11:58:16 2009
@@ -26,36 +26,49 @@
 import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.DbGenerator;
 import org.apache.cayenne.map.DataMap;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 /**
  * @since 3.0
  */
 public class ThrowOnPartialOrCreateSchemaStrategy extends 
ThrowOnPartialSchemaStrategy {
 
+    final static Log logger = LogFactory
+            .getLog(ThrowOnPartialOrCreateSchemaStrategy.class);
+
     @Override
-    protected void analyze(
+    protected void processSchemaUpdate(
             DataNode dataNode,
             List<String> mergerOnlyTable,
             String errorMessage,
             int entitiesSize) {
 
         if (mergerOnlyTable.size() == 0 && errorMessage == null) {
+            logger.info("Full schema is present");
         }
         else if (mergerOnlyTable.size() == entitiesSize) {
+            logger.info("No schema detected, will create mapped tables");
             generate(dataNode);
         }
         else {
-            String err = "Partial schema detected: ";
+            logger.info("Error - partial schema detected");
+
+            StringBuilder buffer = new StringBuilder("Schema mismatch 
detected");
+
             if (errorMessage != null) {
-                err += errorMessage;
+                buffer.append(": ").append(errorMessage);
             }
-
             else {
                 if (mergerOnlyTable.size() > 0) {
-                    err += "expect table " + mergerOnlyTable.get(0);
+                    buffer
+                            .append(": missing table '")
+                            .append(mergerOnlyTable.get(0))
+                            .append('\'');
                 }
             }
-            throw new CayenneRuntimeException(err);
+
+            throw new CayenneRuntimeException(buffer.toString());
         }
     }
 

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/dbsync/ThrowOnPartialSchemaStrategy.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/dbsync/ThrowOnPartialSchemaStrategy.java?rev=775631&r1=775630&r2=775631&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/dbsync/ThrowOnPartialSchemaStrategy.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/dbsync/ThrowOnPartialSchemaStrategy.java
 Sun May 17 11:58:16 2009
@@ -36,13 +36,13 @@
  */
 public class ThrowOnPartialSchemaStrategy extends BaseSchemaUpdateStrategy {
 
-    final Log log = LogFactory.getLog(ThrowOnPartialSchemaStrategy.class);
+    final static Log logger = 
LogFactory.getLog(ThrowOnPartialSchemaStrategy.class);
 
     /**
      * @since 3.0
      */
     @Override
-    public void generateUpdateSchema(DataNode dataNode) {
+    protected void processSchemaUpdate(DataNode dataNode) {
 
         SchemaAnalyzer analyzer = new SchemaAnalyzer();
 
@@ -55,8 +55,8 @@
 
             try {
                 while (rs.next()) {
-                    String schema_name = rs.getString(1);
-                    schemas.add(schema_name);
+                    String schemaName = rs.getString(1);
+                    schemas.add(schemaName);
                 }
             }
             finally {
@@ -66,7 +66,7 @@
             analyzer.analyzeSchemas(schemas, md);
         }
         catch (Exception e) {
-            log.debug("Exception analyzing schema, ignoring", e);
+            logger.debug("Exception analyzing schema, ignoring", e);
         }
 
         Collection<DbEntity> entities = 
dataNode.getEntityResolver().getDbEntities();
@@ -78,35 +78,43 @@
                 analyzer.compareColumns(md);
             }
             catch (SQLException e) {
-                log.debug("Exception analyzing schema, ignoring", e);
+                logger.debug("Exception analyzing schema, ignoring", e);
             }
         }
-        analyze(dataNode, analyzer.getTableNoInDB(), 
analyzer.getErrorMessage(), entities
-                .size());
+
+        processSchemaUpdate(dataNode, analyzer.getTableNoInDB(), analyzer
+                .getErrorMessage(), entities.size());
     }
 
-    protected void analyze(
+    protected void processSchemaUpdate(
             DataNode dataNode,
             List<String> mergerOnlyTable,
             String errorMessage,
             int entitiesSize) {
 
         if (mergerOnlyTable.size() == 0 && errorMessage == null) {
+            logger.info("Full schema is present");
         }
         else {
-            String err = "Partial schema detected: ";
+            logger.info("Error - missing or partial schema detected");
+            StringBuilder buffer = new StringBuilder("Schema mismatch 
detected");
+
             if (errorMessage != null) {
-                err += errorMessage;
+                buffer.append(": ").append(errorMessage);
             }
             else if (mergerOnlyTable.size() == entitiesSize) {
-                err += "no schema in database";
+                buffer.append(": no schema found");
             }
             else {
                 if (mergerOnlyTable.size() > 0) {
-                    err += "expect table " + mergerOnlyTable.get(0);
+                    buffer
+                            .append(": missing table '")
+                            .append(mergerOnlyTable.get(0))
+                            .append('\'');
                 }
             }
-            throw new CayenneRuntimeException(err);
+
+            throw new CayenneRuntimeException(buffer.toString());
         }
     }
 }


Reply via email to