You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@empire-db.apache.org by do...@apache.org on 2009/11/28 23:07:16 UTC

svn commit: r885154 - in /incubator/empire-db/trunk/empire-db-codegen: ./ src/main/java/org/apache/empire/db/codegen/ src/test/java/org/apache/empire/db/codegen/

Author: doebele
Date: Sat Nov 28 22:07:15 2009
New Revision: 885154

URL: http://svn.apache.org/viewvc?rev=885154&view=rev
Log:
EMPIREDB-52 - Renamed CodeGen to CodeGenWriter. Error handling etc.

Added:
    incubator/empire-db/trunk/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenWriter.java
      - copied, changed from r885142, incubator/empire-db/trunk/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGen.java
Removed:
    incubator/empire-db/trunk/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGen.java
Modified:
    incubator/empire-db/trunk/empire-db-codegen/config.xml
    incubator/empire-db/trunk/empire-db-codegen/pom.xml
    incubator/empire-db/trunk/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenApp.java
    incubator/empire-db/trunk/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenParser.java
    incubator/empire-db/trunk/empire-db-codegen/src/test/java/org/apache/empire/db/codegen/CodeGenTest.java

Modified: incubator/empire-db/trunk/empire-db-codegen/config.xml
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-codegen/config.xml?rev=885154&r1=885153&r2=885154&view=diff
==============================================================================
--- incubator/empire-db/trunk/empire-db-codegen/config.xml (original)
+++ incubator/empire-db/trunk/empire-db-codegen/config.xml Sat Nov 28 22:07:15 2009
@@ -25,6 +25,12 @@
 		<jdbcURL>jdbc:oracle:thin:@192.168.0.2:1521:ora10</jdbcURL>
 		<jdbcUser>DBSAMPLE</jdbcUser>
 		<jdbcPwd>DBSAMPLE</jdbcPwd>
+		<!-- 
+		<jdbcClass>com.microsoft.sqlserver.jdbc.SQLServerDriver</jdbcClass>
+		<jdbcURL>jdbc:sqlserver://localhost:1433</jdbcURL>
+		<jdbcUser>empire-db</jdbcUser>
+		<jdbcPwd>empire-db</jdbcPwd>
+		-->
 
 		<!-- Schema options -->
 		<dbCatalog></dbCatalog>

Modified: incubator/empire-db/trunk/empire-db-codegen/pom.xml
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-codegen/pom.xml?rev=885154&r1=885153&r2=885154&view=diff
==============================================================================
--- incubator/empire-db/trunk/empire-db-codegen/pom.xml (original)
+++ incubator/empire-db/trunk/empire-db-codegen/pom.xml Sat Nov 28 22:07:15 2009
@@ -47,13 +47,21 @@
 		    <!-- <scope>runtime</scope> -->
 		</dependency>
 
-		<!-- 
+		<!-- ojdbc 
 		<dependency>
 		    <groupId>ojdbc</groupId>
 		    <artifactId>ojdbc</artifactId>
 		    <version>14</version>
 		</dependency>
 		-->
+
+		<!-- msssql 
+		<dependency>
+		    <groupId>microsoft</groupId>
+		    <artifactId>sqljdbc</artifactId>
+		    <version>1.0</version>
+		</dependency>
+		-->
 		
 	</dependencies>
 </project>
\ No newline at end of file

Modified: incubator/empire-db/trunk/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenApp.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenApp.java?rev=885154&r1=885153&r2=885154&view=diff
==============================================================================
--- incubator/empire-db/trunk/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenApp.java (original)
+++ incubator/empire-db/trunk/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenApp.java Sat Nov 28 22:07:15 2009
@@ -42,6 +42,8 @@
 	 *            arguments
 	 */
 	public static void main(String[] args) {
+	    ErrorObject.setExceptionsEnabled(true);
+	    // Start code generator
 		CodeGenApp app = new CodeGenApp();
 		app.start((args.length > 0 ? args[0] : DEFAULT_CONFIG_FILE));
 	}	
@@ -61,7 +63,7 @@
 		DBDatabase db = parser.loadDbModel();
 		
 		// create the source-code for that database
-		CodeGen codeGen = new CodeGen(config);
+		CodeGenWriter codeGen = new CodeGenWriter(config);
 		codeGen.generateCodeFiles(db);
 		
 		log.info("Code generation completed sucessfully!");

Modified: incubator/empire-db/trunk/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenParser.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenParser.java?rev=885154&r1=885153&r2=885154&view=diff
==============================================================================
--- incubator/empire-db/trunk/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenParser.java (original)
+++ incubator/empire-db/trunk/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenParser.java Sat Nov 28 22:07:15 2009
@@ -29,6 +29,8 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.empire.commons.ErrorObject;
+import org.apache.empire.commons.Errors;
 import org.apache.empire.data.DataType;
 import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBDatabase;
@@ -42,7 +44,7 @@
  * 
  * @author Benjamin Venditti
  */
-public class CodeGenParser {
+public class CodeGenParser extends ErrorObject {
 
 	public static class InMemoryDatabase extends DBDatabase {
 	}
@@ -131,9 +133,14 @@
 	private void populateDatabase() {
 		ResultSet tables = null;
 		try {
-			tables = dbMeta.getTables(config.getDbCatalog(), config
-					.getDbSchema(), config.getDbTablePattern(),
+		    // Get table metadata
+		    tables = dbMeta.getTables(
+		            config.getDbCatalog(), 
+		            config.getDbSchema(), 
+		            config.getDbTablePattern(),
 					new String[] { "TABLE" });
+		    // Add all tables
+            int count = 0;
 			while (tables.next()) {
 				String tableName = tables.getString("TABLE_NAME");
 				// Ignore system tables containing a '$' symbol (required for
@@ -145,9 +152,18 @@
 				// end system table exclusion
 				log.info("Adding table " + tableName);
 				addTable(tableName);
+				count++;
+			}
+			// Count added
+			if (count==0) {
+			    // getTables returned no result
+			    String info = "catalog="+config.getDbCatalog(); 
+                info += "/ schema="+config.getDbSchema(); 
+                info += "/ pattern="+config.getDbTablePattern(); 
+			    log.warn("DatabaseMetaData.getTables() returned no tables! Please check parameters: "+info);
 			}
 		} catch (SQLException e) {
-			throw new RuntimeException(e);
+			error(e);
 		} finally {
 			DBUtil.close(tables, log);
 		}
@@ -162,26 +178,29 @@
 		List<String> pkCols = this.findPkColumns(name);
 		String lockColName = config.getTimestampColumn();
 		DBColumn[] keys = new DBColumn[pkCols.size()];
-		int i = 0;
 		ResultSet rs = null;
 		try {
 			rs = dbMeta.getColumns(config.getDbCatalog(), config.getDbSchema(),
 					name, null);
+	        int i=0;
 			while (rs.next()) {
 				DBTableColumn c = addColumn(t, rs);
 				// check if it is a KeyColumn
-				if (pkCols.contains(c.getName()))
+				if (pkCols.contains(c.getName().toUpperCase()))
 					keys[i++] = c;
 
 				// check if it is the Timestamp/Locking Column
-				if (lockColName != null
-						&& c.getName().toUpperCase().equals(
-								lockColName.toUpperCase()))
+				if (lockColName!=null && c.getName().equalsIgnoreCase(lockColName))
 					t.setTimestampColumn(c);
 			}
-			t.setPrimaryKey(keys);
+	        // Check whether all key columns have been set
+	        for (i=0; i<keys.length; i++)
+	            if (keys[i]==null)
+	                error(Errors.ItemNotFound, pkCols.get(i));
+			// Set Primary Key
+	        t.setPrimaryKey(keys);
 		} catch (SQLException e) {
-			throw new RuntimeException(e);
+			error(e);
 		} finally {
 			DBUtil.close(rs, log);
 		}

Copied: incubator/empire-db/trunk/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenWriter.java (from r885142, incubator/empire-db/trunk/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGen.java)
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenWriter.java?p2=incubator/empire-db/trunk/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenWriter.java&p1=incubator/empire-db/trunk/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGen.java&r1=885142&r2=885154&rev=885154&view=diff
==============================================================================
--- incubator/empire-db/trunk/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGen.java (original)
+++ incubator/empire-db/trunk/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenWriter.java Sat Nov 28 22:07:15 2009
@@ -36,6 +36,7 @@
 import org.apache.velocity.app.Velocity;
 import org.apache.velocity.exception.ParseErrorException;
 import org.apache.velocity.exception.ResourceNotFoundException;
+import org.apache.velocity.runtime.RuntimeConstants;
 import org.apache.velocity.runtime.log.CommonsLogLogChute;
 
 /**
@@ -61,8 +62,8 @@
  * </ol>
  */
 
-public class CodeGen {
-	private static final Log log = LogFactory.getLog(CodeGen.class);
+public class CodeGenWriter {
+	private static final Log log = LogFactory.getLog(CodeGenWriter.class);
 
 	// Templates
 	public static final String TEMPLATE_PATH = "src/main/resources/templates/";
@@ -84,10 +85,10 @@
 	/**
 	 * Constructor
 	 */
-	public CodeGen(CodeGenConfig config) {
+	public CodeGenWriter(CodeGenConfig config) {
 		// we have to keep this in sync with our logging system
 		// http://velocity.apache.org/engine/releases/velocity-1.5/developer-guide.html#simpleexampleofacustomlogger
-		Velocity.setProperty(Velocity.RUNTIME_LOG_LOGSYSTEM, new CommonsLogLogChute() );
+		Velocity.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM, new CommonsLogLogChute() );
 		try {
 			Velocity.init();
 		} catch (Exception e) {

Modified: incubator/empire-db/trunk/empire-db-codegen/src/test/java/org/apache/empire/db/codegen/CodeGenTest.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-codegen/src/test/java/org/apache/empire/db/codegen/CodeGenTest.java?rev=885154&r1=885153&r2=885154&view=diff
==============================================================================
--- incubator/empire-db/trunk/empire-db-codegen/src/test/java/org/apache/empire/db/codegen/CodeGenTest.java (original)
+++ incubator/empire-db/trunk/empire-db-codegen/src/test/java/org/apache/empire/db/codegen/CodeGenTest.java Sat Nov 28 22:07:15 2009
@@ -41,7 +41,7 @@
     {
         CodeGenConfig config = new CodeGenConfig();
         config.init("testconfig.xml", true, false);
-        CodeGen codeGen = new CodeGen(config);
+        CodeGenWriter codeGen = new CodeGenWriter(config);
         
         DBDatabase db = new DBDatabase()
         {