This is an automated email from the ASF dual-hosted git repository.

doebele pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/empire-db.git


The following commit(s) were added to refs/heads/master by this push:
     new a9f2110  EMPIREDB-297: Bugfix for sql data types NCHAR, NVARCHAR and 
NCLOB.
     new 90c3686  Merge branch 'master' of 
https://gitbox.apache.org/repos/asf/empire-db
a9f2110 is described below

commit a9f2110e04c636aae90ed2fda64174be3b931b1d
Author: Rainer Döbele <[email protected]>
AuthorDate: Thu Jul 18 15:52:44 2019 +0200

    EMPIREDB-297: Bugfix for sql data types NCHAR, NVARCHAR and NCLOB.
---
 empire-db-codegen/config.xml                       | 26 +++++++++++-------
 empire-db-codegen/pom.xml                          | 32 ++++++++++++----------
 .../apache/empire/db/codegen/CodeGenConfig.java    | 14 +++++++++-
 .../apache/empire/db/codegen/CodeGenParser.java    | 17 ++++++++++--
 .../src/main/resources/templates/Database.vm       |  5 ++--
 5 files changed, 65 insertions(+), 29 deletions(-)

diff --git a/empire-db-codegen/config.xml b/empire-db-codegen/config.xml
index d14c590..7904781 100644
--- a/empire-db-codegen/config.xml
+++ b/empire-db-codegen/config.xml
@@ -20,23 +20,28 @@
 <config>
 
        <properties>
-               <!-- provider name must match the property-section containing 
the connection data -->
+               <!-- JDBC connection data -->
+               
+               <!-- ORACLE example 
                <jdbcClass>oracle.jdbc.driver.OracleDriver</jdbcClass>
                <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>
                <dbSchema>DBSAMPLE</dbSchema>
                <dbTablePattern></dbTablePattern>
-               <timestampColumn>CREATIONDATE</timestampColumn>
+               <timestampColumn>UPDATE_TIMESTAMP</timestampColumn>
+               -->
+
+               <!-- SQL-Server example -->             
+        <jdbcClass>com.microsoft.sqlserver.jdbc.SQLServerDriver</jdbcClass>
+        <jdbcURL>jdbc:sqlserver://vm010</jdbcURL>
+        <jdbcUser>jdbcUser</jdbcUser>
+        <jdbcPwd>jdbcPwd</jdbcPwd>
+               <dbCatalog>DBSAMPLE</dbCatalog>
+               <dbSchema>dbo</dbSchema>
+               <dbTablePattern></dbTablePattern>
+               <timestampColumn>UPDATE_TIMESTAMP</timestampColumn>
                
                <!-- generation options -->
                <targetFolder>target/generated/dbsample</targetFolder>
@@ -44,6 +49,7 @@
                
<tablePackageName>org.apache.empire.db.samples.dbsample.tables</tablePackageName>
                
<viewPackageName>org.apache.empire.db.samples.dbsample.views</viewPackageName>
                
<recordPackageName>org.apache.empire.db.samples.dbsample.records</recordPackageName>
+               <generateViews>true</generateViews>
                <dbClassName>SampleDB</dbClassName>
                <tableBaseName>SampleTable</tableBaseName>
                <viewBaseName>SampleView</viewBaseName>
diff --git a/empire-db-codegen/pom.xml b/empire-db-codegen/pom.xml
index 7f20538..b0a17be 100644
--- a/empire-db-codegen/pom.xml
+++ b/empire-db-codegen/pom.xml
@@ -53,28 +53,32 @@
                    <scope>test</scope>
                </dependency>
 
-               <!-- mysql -->
-               <!-- <dependency>
-                   <groupId>mysql</groupId>
-                   <artifactId>mysql-connector-java</artifactId>
-                   <version>5.1.1</version>
-               </dependency>-->
+        <!-- msssql -->
+               <!--   
+        <dependency>
+            <groupId>com.microsoft.sqlserver</groupId>
+            <artifactId>mssql-jdbc</artifactId>
+            <version>7.0.0.jre8</version>
+        </dependency>
+               -->
                
-               <!-- ojdbc   
+               <!-- oracle -->
+               <!--   
                <dependency>
                    <groupId>com.oracle</groupId>
-                       <artifactId>ojdbc5</artifactId>
-                       <version>11.2.0.3</version>
+                       <artifactId>ojdbc6</artifactId>
+                       <version>11.2.0.3.0</version>
                </dependency>
                -->
 
-               <!-- msssql 
+               <!-- mysql -->
+               <!-- 
                <dependency>
-                   <groupId>com.microsoft</groupId>
-                   <artifactId>sqljdbc</artifactId>
-                   <version>1.0</version>
+                   <groupId>mysql</groupId>
+                   <artifactId>mysql-connector-java</artifactId>
+                   <version>5.1.6</version>
                </dependency>
-               --> 
+               -->
                
        </dependencies>
        
diff --git 
a/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenConfig.java
 
b/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenConfig.java
index 8c92d95..92f7d93 100644
--- 
a/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenConfig.java
+++ 
b/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenConfig.java
@@ -58,6 +58,10 @@ public class CodeGenConfig extends XMLConfiguration {
         */
        private String dbTablePattern = null;
        /**
+        * flag whether to parse and generate views
+        */
+       private boolean generateViews = true;
+       /**
         * Name of the timestamp column used for optimistic locking (may be 
null)
         * e.g. "UPDATE_TIMESTAMP";
         */
@@ -321,7 +325,15 @@ public class CodeGenConfig extends XMLConfiguration {
                this.dbTablePattern = dbTablePattern;
        }
 
-       public String getTimestampColumn() {
+    public boolean isGenerateViews() {
+        return generateViews;
+    }
+
+    public void setGenerateViews(boolean generateViews) {
+        this.generateViews = generateViews;
+    }
+
+    public String getTimestampColumn() {
                return timestampColumn;
        }
 
diff --git 
a/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenParser.java
 
b/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenParser.java
index 44a187c..4f2b112 100644
--- 
a/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenParser.java
+++ 
b/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenParser.java
@@ -53,6 +53,12 @@ public class CodeGenParser {
 
        public static class InMemoryDatabase extends DBDatabase {
         private static final long serialVersionUID = 1L;
+        
+        @Override
+        public List<DBRelation> getRelations()
+        {
+            return relations;
+        }
        }
        
        public static class InMemoryView extends DBView {
@@ -141,13 +147,15 @@ public class CodeGenParser {
             int tableCount = 0; // Moved to be outside table pattern loop.
             int viewCount = 0;
             for(String pattern : tablePatterns){
-            
+                // types
+                String[] types = config.isGenerateViews() ? new String[] { 
"TABLE", "VIEW" }
+                                                          : new String[] { 
"TABLE" }; 
                            // Get table metadata
                    tables = dbMeta.getTables(
                                    config.getDbCatalog(), 
                                    config.getDbSchema(), 
                                    pattern == null ? pattern: pattern.trim(),
-                                               new String[] { "TABLE", "VIEW" 
});
+                                               types);
                    
                    // Add all tables and views 
                                while (tables.next()) {
@@ -248,6 +256,7 @@ public class CodeGenParser {
                                        refs[i]=refsOld[i];
                                refs[i]=reference;
                                // remove old relation
+                    log.warn("Duplicate relation {}", r.getName());
                                db.getRelations().remove(r);
                        } else {
                                refs = new DBRelation.DBReference[] { reference 
};
@@ -467,6 +476,7 @@ public class CodeGenParser {
                        empireType = DataType.INTEGER;
                        break;
                case Types.VARCHAR:
+               case Types.NVARCHAR:
                        empireType = DataType.VARCHAR;
                        break;
                case Types.DATE:
@@ -477,6 +487,7 @@ public class CodeGenParser {
                        empireType = DataType.DATETIME;
                        break;
                case Types.CHAR:
+        case Types.NCHAR:
                        empireType = DataType.CHAR;
                        break;
                case Types.DOUBLE:
@@ -493,7 +504,9 @@ public class CodeGenParser {
                        empireType = DataType.BOOL;
                        break;
                case Types.CLOB:
+               case Types.NCLOB:
                case Types.LONGVARCHAR:
+               case Types.LONGNVARCHAR:
                        empireType = DataType.CLOB;
                        break;
                case Types.BINARY:
diff --git a/empire-db-codegen/src/main/resources/templates/Database.vm 
b/empire-db-codegen/src/main/resources/templates/Database.vm
index 69590a3..aafa65c 100644
--- a/empire-db-codegen/src/main/resources/templates/Database.vm
+++ b/empire-db-codegen/src/main/resources/templates/Database.vm
@@ -93,12 +93,13 @@ public class $dbClassName extends DBDatabase {
 #foreach ($relation in $database.relations)
 #if($relation.references.size()==1)
 #foreach ($reference in $relation.references)
-               addRelation( 
${parser.getRowsetName($reference.sourceColumn.rowSet)}.${parser.getColumnName($reference.sourceColumn)}.referenceOn(${parser.getRowsetName($reference.targetColumn.rowSet)}.${parser.getColumnName($reference.targetColumn)}));
+               addRelation( "$relation.name", 
${parser.getRowsetName($reference.sourceColumn.rowSet)}.${parser.getColumnName($reference.sourceColumn)}.referenceOn(${parser.getRowsetName($reference.targetColumn.rowSet)}.${parser.getColumnName($reference.targetColumn)}));
 #end
 #else
 #foreach ($reference in $relation.references)
 #if($foreach.isFirst())
-               addRelation( 
${parser.getRowsetName($reference.sourceColumn.rowSet)}.${parser.getColumnName($reference.sourceColumn)}.referenceOn(${parser.getRowsetName($reference.targetColumn.rowSet)}.$parser.getColumnName($reference.targetColumn)),
+               addRelation( "$relation.name", 
+                                        
${parser.getRowsetName($reference.sourceColumn.rowSet)}.${parser.getColumnName($reference.sourceColumn)}.referenceOn(${parser.getRowsetName($reference.targetColumn.rowSet)}.$parser.getColumnName($reference.targetColumn)),
 #else
 #if($foreach.isLast())
                         
${parser.getRowsetName($reference.sourceColumn.rowSet)}.${parser.getColumnName($reference.sourceColumn)}.referenceOn(${parser.getRowsetName($reference.targetColumn.rowSet)}.$parser.getColumnName($reference.targetColumn)));

Reply via email to