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 2019/07/18 13:54:59 UTC
[empire-db] branch master updated: EMPIREDB-297: Bugfix for sql
data types NCHAR, NVARCHAR and NCLOB.
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 <do...@apache.org>
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)));