Revision: 3130
Author: [email protected]
Date: Thu Jul 23 14:49:49 2009
Log: Added support for some of the new JDBC 4.0 data types (NCHAR, NVARCHAR, NCLOB)
http://code.google.com/p/power-architect/source/detail?r=3130

Modified:
 /trunk/regress/ca/sqlpower/architect/ddl/GenericDDLGeneratorTest.java
 /trunk/src/ca/sqlpower/architect/ddl/GenericDDLGenerator.java
 /trunk/src/ca/sqlpower/architect/ddl/GenericTypeDescriptor.java
 /trunk/src/ca/sqlpower/architect/ddl/Oracle9PlusDDLGenerator.java
 /trunk/src/ca/sqlpower/architect/ddl/SQLServerDDLGenerator.java

=======================================
--- /trunk/regress/ca/sqlpower/architect/ddl/GenericDDLGeneratorTest.java Fri May 22 06:08:44 2009 +++ /trunk/regress/ca/sqlpower/architect/ddl/GenericDDLGeneratorTest.java Thu Jul 23 14:49:49 2009
@@ -23,6 +23,7 @@
 import junit.framework.TestCase;
 import ca.sqlpower.sqlobject.SQLRelationship;
 import ca.sqlpower.sqlobject.SQLTable;
+import ca.sqlpower.sqlobject.SQLType;
 import java.sql.Types;
 import java.util.List;

@@ -46,32 +47,55 @@
         assertEquals(1, ddl.getWarnings().size());
     }

-               public void testGenerateComment() throws Exception {
-        GenericDDLGenerator ddl = new GenericDDLGenerator();
-        SQLTable tbl = new SQLTable();
-                               tbl.initFolders(true);
-                               tbl.setPhysicalName("test_table");
-                               tbl.setRemarks("Test single ' quotes");
-                               SQLColumn id = new SQLColumn(tbl, "id", 
Types.INTEGER, 0, 0);
-                               id.setRemarks("The row's primary key");
-                               tbl.addColumn(id);
-                               SQLColumn name = new SQLColumn(tbl, "name", 
Types.VARCHAR, 50, 0);
-                               name.setRemarks("The person's name");
-                               tbl.addColumn(name);
-                               ddl.addTable(tbl);
-
-                               // the first statement is the CREATE table
- // second, third and fourth statements should be the COMMENT ON ... statements
-                               List<DDLStatement> stmts = 
ddl.getDdlStatements();
-                               assertEquals(4, stmts.size());
-
-                               String sql = stmts.get(1).getSQLText().trim();
- assertEquals("COMMENT ON TABLE test_table IS 'Test single '' quotes'", sql);
-
-                               sql = stmts.get(2).getSQLText().trim();
- assertEquals("COMMENT ON COLUMN test_table.id IS 'The row''s primary key'", sql);
-
-                               sql = stmts.get(3).getSQLText().trim();
- assertEquals("COMMENT ON COLUMN test_table.name IS 'The person''s name'", sql);
-               }
-}
+       public void testGenerateComment() throws Exception {
+               GenericDDLGenerator ddl = new GenericDDLGenerator();
+               SQLTable tbl = new SQLTable();
+               tbl.initFolders(true);
+               tbl.setPhysicalName("test_table");
+               tbl.setRemarks("Test single ' quotes");
+               SQLColumn id = new SQLColumn(tbl, "id", Types.INTEGER, 0, 0);
+               id.setRemarks("The row's primary key");
+               tbl.addColumn(id);
+               SQLColumn name = new SQLColumn(tbl, "name", Types.VARCHAR, 50, 
0);
+               name.setRemarks("The person's name");
+               tbl.addColumn(name);
+               ddl.addTable(tbl);
+
+               // the first statement is the CREATE table
+ // second, third and fourth statements should be the COMMENT ON ... statements
+               List<DDLStatement> stmts = ddl.getDdlStatements();
+               assertEquals(4, stmts.size());
+
+               String sql = stmts.get(1).getSQLText().trim();
+ assertEquals("COMMENT ON TABLE test_table IS 'Test single '' quotes'", sql);
+
+               sql = stmts.get(2).getSQLText().trim();
+ assertEquals("COMMENT ON COLUMN test_table.id IS 'The row''s primary key'", sql);
+
+               sql = stmts.get(3).getSQLText().trim();
+ assertEquals("COMMENT ON COLUMN test_table.name IS 'The person''s name'", sql);
+       }
+
+       public void testNewTypes() throws Exception {
+               GenericDDLGenerator ddl = new GenericDDLGenerator(false);
+               SQLTable tbl = new SQLTable();
+               tbl.initFolders(true);
+               tbl.setPhysicalName("test_table");
+
+ SQLColumn col1 = new SQLColumn(tbl, "N_TEST", SQLType.NVARCHAR, "NVARCHAR", 1000, 0, 0, "",
+                 null, null, false);
+               assertEquals("NVARCHAR(1000)", ddl.getColumnDataTypeName(col1));
+               assertEquals("NVARCHAR(1000)", ddl.columnType(col1));
+
+ SQLColumn col2 = new SQLColumn(tbl, "N_CHARTEST", SQLType.NCHAR, "NCHAR", 1000, 0, 0, "",
+                 null, null, false);
+               assertEquals("NCHAR(1000)", ddl.getColumnDataTypeName(col2));
+               assertEquals("NCHAR(1000)", ddl.columnType(col2));
+
+ SQLColumn col3 = new SQLColumn(tbl, "N_CLOB_TEST", SQLType.NCLOB, "NCLOB", 1000, 0, 0, "",
+                 null, null, false);
+               assertEquals("NCLOB", ddl.getColumnDataTypeName(col3));
+               assertEquals("NCLOB", ddl.columnType(col3));
+
+       }
+}
=======================================
--- /trunk/src/ca/sqlpower/architect/ddl/GenericDDLGenerator.java Fri May 22 06:08:44 2009 +++ /trunk/src/ca/sqlpower/architect/ddl/GenericDDLGenerator.java Thu Jul 23 14:49:49 2009
@@ -923,6 +923,9 @@
typeMap.put(Integer.valueOf(Types.TINYINT), new GenericTypeDescriptor("TINYINT", Types.TINYINT, 3, null, null, DatabaseMetaData.columnNullable, false, false)); typeMap.put(Integer.valueOf(Types.VARBINARY), new GenericTypeDescriptor("VARBINARY", Types.VARBINARY, 8000, null, null, DatabaseMetaData.columnNullable, true, false)); typeMap.put(Integer.valueOf(Types.VARCHAR), new GenericTypeDescriptor("VARCHAR", Types.VARCHAR, 8000, "'", "'", DatabaseMetaData.columnNullable, true, false)); + typeMap.put(Integer.valueOf(SQLType.NVARCHAR), new GenericTypeDescriptor("NVARCHAR", SQLType.NVARCHAR, 8000, "'", "'", DatabaseMetaData.columnNullable, true, false)); + typeMap.put(Integer.valueOf(SQLType.NCHAR), new GenericTypeDescriptor("NCHAR", SQLType.NCHAR, 8000, "'", "'", DatabaseMetaData.columnNullable, true, false)); + typeMap.put(Integer.valueOf(SQLType.NCLOB), new GenericTypeDescriptor("NCLOB", SQLType.NCLOB, 2147483647, "'", "'", DatabaseMetaData.columnNullable, false, false));
                }
                else
                {
=======================================
--- /trunk/src/ca/sqlpower/architect/ddl/GenericTypeDescriptor.java Tue Mar 25 07:38:28 2008 +++ /trunk/src/ca/sqlpower/architect/ddl/GenericTypeDescriptor.java Thu Jul 23 14:49:49 2009
@@ -18,6 +18,7 @@
  */
 package ca.sqlpower.architect.ddl;

+import ca.sqlpower.sqlobject.SQLType;
 import java.sql.DatabaseMetaData;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -86,6 +87,7 @@
                case Types.STRUCT:
                case Types.TIME:
                case Types.TIMESTAMP:
+               case SQLType.NCLOB:
                default:
                        hasScale = false;
                        hasPrecision = false;
@@ -102,6 +104,8 @@
                case Types.TINYINT:
                case Types.VARBINARY:
                case Types.VARCHAR:
+               case SQLType.NVARCHAR:
+               case SQLType.NCHAR:
                        hasPrecision = true;
                        hasScale = false;
                        break;
=======================================
--- /trunk/src/ca/sqlpower/architect/ddl/Oracle9PlusDDLGenerator.java Mon Nov 24 15:34:32 2008 +++ /trunk/src/ca/sqlpower/architect/ddl/Oracle9PlusDDLGenerator.java Thu Jul 23 14:49:49 2009
@@ -19,6 +19,7 @@

 package ca.sqlpower.architect.ddl;

+import ca.sqlpower.sqlobject.SQLType;
 import java.sql.DatabaseMetaData;
 import java.sql.SQLException;
 import java.sql.Types;
@@ -67,6 +68,9 @@
typeMap.put(Integer.valueOf(Types.LONGVARCHAR), new GenericTypeDescriptor("LONG", Types.LONGVARCHAR, 2000000000L, null, null, DatabaseMetaData.columnNullable, false, false)); typeMap.put(Integer.valueOf(Types.VARBINARY), new GenericTypeDescriptor("LONG RAW", Types.VARBINARY, 2000000000L, null, null, DatabaseMetaData.columnNullable, false, false)); typeMap.put(Integer.valueOf(Types.VARCHAR), new GenericTypeDescriptor("VARCHAR2", Types.VARCHAR, 4000, "'", "'", DatabaseMetaData.columnNullable, true, false)); + typeMap.put(Integer.valueOf(SQLType.NVARCHAR), new GenericTypeDescriptor("NVARCHAR", SQLType.NVARCHAR, 8000, "'", "'", DatabaseMetaData.columnNullable, true, false)); + typeMap.put(Integer.valueOf(SQLType.NCHAR), new GenericTypeDescriptor("NCHAR", SQLType.NCHAR, 8000, "'", "'", DatabaseMetaData.columnNullable, true, false)); + typeMap.put(Integer.valueOf(SQLType.NCLOB), new GenericTypeDescriptor("NCLOB", SQLType.NCLOB, 2147483647, "'", "'", DatabaseMetaData.columnNullable, true, false));
     }

 }
=======================================
--- /trunk/src/ca/sqlpower/architect/ddl/SQLServerDDLGenerator.java Fri May 22 06:08:44 2009 +++ /trunk/src/ca/sqlpower/architect/ddl/SQLServerDDLGenerator.java Thu Jul 23 14:49:49 2009
@@ -35,6 +35,7 @@
 import ca.sqlpower.sqlobject.SQLRelationship;
 import ca.sqlpower.sqlobject.SQLTable;
 import ca.sqlpower.sqlobject.SQLRelationship.Deferrability;
+import ca.sqlpower.sqlobject.SQLType;

 /**
* The base class for version-specific SQL Server DDL generators. This class is
@@ -291,6 +292,9 @@
typeMap.put(Integer.valueOf(Types.TINYINT), new GenericTypeDescriptor("TINYINT", Types.TINYINT, 3, null, null, DatabaseMetaData.columnNullable, false, false)); typeMap.put(Integer.valueOf(Types.VARBINARY), new GenericTypeDescriptor("VARBINARY", Types.VARBINARY, 8000, null, null, DatabaseMetaData.columnNullable, true, false)); typeMap.put(Integer.valueOf(Types.VARCHAR), new GenericTypeDescriptor("VARCHAR", Types.VARCHAR, 8000, "'", "'", DatabaseMetaData.columnNullable, true, false)); + typeMap.put(Integer.valueOf(SQLType.NVARCHAR), new GenericTypeDescriptor("NVARCHAR", SQLType.NVARCHAR, 4000, "'", "'", DatabaseMetaData.columnNullable, true, false)); + typeMap.put(Integer.valueOf(SQLType.NCHAR), new GenericTypeDescriptor("NCHAR", SQLType.NCHAR, 4000, "'", "'", DatabaseMetaData.columnNullable, true, false)); + typeMap.put(Integer.valueOf(SQLType.NCLOB), new GenericTypeDescriptor("NCLOB", SQLType.NCLOB, 2147483647, "'", "'", DatabaseMetaData.columnNullable, true, false));
        }

     /**

Reply via email to