Repository: empire-db
Updated Branches:
  refs/heads/master 9a45804ce -> 1ff38e379


EMPIREDB-252

Project: http://git-wip-us.apache.org/repos/asf/empire-db/repo
Commit: http://git-wip-us.apache.org/repos/asf/empire-db/commit/1ff38e37
Tree: http://git-wip-us.apache.org/repos/asf/empire-db/tree/1ff38e37
Diff: http://git-wip-us.apache.org/repos/asf/empire-db/diff/1ff38e37

Branch: refs/heads/master
Commit: 1ff38e379c12f7fc103439eb76dc5c3d2bb683e7
Parents: 9a45804
Author: Jan Glaubitz <[email protected]>
Authored: Fri Dec 2 11:20:16 2016 +0100
Committer: Jan Glaubitz <[email protected]>
Committed: Fri Dec 2 11:20:16 2016 +0100

----------------------------------------------------------------------
 .../apache/empire/db/codegen/CodeGenParser.java |  6 ++-
 .../empire/db/codegen/CodeGenParserMySQL.java   | 43 ++++++++++++++++++++
 .../apache/empire/db/codegen/CodeGenerator.java |  1 +
 3 files changed, 49 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/empire-db/blob/1ff38e37/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenParser.java
----------------------------------------------------------------------
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 28b9ca8..e34292c 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
@@ -365,8 +365,8 @@ public class CodeGenParser {
                        throws SQLException {
                String name = rs.getString("COLUMN_NAME");
                DataType empireType = getEmpireDataType(rs.getInt("DATA_TYPE"));
+               double colSize = getColumnSize(empireType, 
rs.getInt("DATA_TYPE"), rs.getInt("COLUMN_SIZE"));
                
-               double colSize = rs.getInt("COLUMN_SIZE");
                if (empireType==DataType.DECIMAL || empireType==DataType.FLOAT)
                {       // decimal digits
                        int decimalDig = rs.getInt("DECIMAL_DIGITS");
@@ -434,6 +434,10 @@ public class CodeGenParser {
                
        }
        
+       protected double getColumnSize(DataType empireType, int dataType, int 
columnSize) {
+               return columnSize;
+       }
+
        /**
         * Adds DBColumn object to the given DBTable. The DBColumn is created 
from
         * the given ResultSet

http://git-wip-us.apache.org/repos/asf/empire-db/blob/1ff38e37/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenParserMySQL.java
----------------------------------------------------------------------
diff --git 
a/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenParserMySQL.java
 
b/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenParserMySQL.java
new file mode 100644
index 0000000..a4673ad
--- /dev/null
+++ 
b/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenParserMySQL.java
@@ -0,0 +1,43 @@
+package org.apache.empire.db.codegen;
+
+import java.sql.Types;
+
+import org.apache.empire.data.DataType;
+
+public class CodeGenParserMySQL extends CodeGenParser {
+
+       // private static final Logger log = 
LoggerFactory.getLogger(CodeGenParserMySQL.class);
+       
+       public CodeGenParserMySQL(CodeGenConfig config) {
+               super(config);
+       }
+
+       @Override
+       protected double getColumnSize(DataType empireType, int dataType, int 
columnSize) {
+               
+               switch (empireType) {
+                       
+                       case INTEGER: {
+                               // return size in byte, depending on MySQL 
Integer Types
+                               // see 
http://dev.mysql.com/doc/refman/5.7/en/integer-types.html
+                               // ignore the "real" columnsize as its just a 
"format hint"
+                               switch(dataType) {
+                                       case Types.TINYINT:
+                                               return 1; // TINYINT, 1 byte
+                                       case Types.SMALLINT:
+                                               return 2; // SMALLINT, 2 byte
+                                       case Types.BIGINT:
+                                               return 8; // BIGINT, 8 byte
+                                       default: 
+                                               return 4; // Types.INTEGER, 
INT, 4 byte
+                               }
+                       }
+                       
+                       default:
+                               return super.getColumnSize(empireType, 
dataType, columnSize);
+                       
+               }
+               
+       }
+       
+}

http://git-wip-us.apache.org/repos/asf/empire-db/blob/1ff38e37/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenerator.java
----------------------------------------------------------------------
diff --git 
a/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenerator.java
 
b/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenerator.java
index a936837..25325a6 100644
--- 
a/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenerator.java
+++ 
b/empire-db-codegen/src/main/java/org/apache/empire/db/codegen/CodeGenerator.java
@@ -54,6 +54,7 @@ public class CodeGenerator {
                
                // read the database model
                CodeGenParser parser = new CodeGenParser(config);
+               // CodeGenParser parser = new CodeGenParserMySQL(config);
                DBDatabase db = parser.loadDbModel();
                
                // create the source-code for that database

Reply via email to