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());
}
}
}