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));
}
/**