Revision: 3515
Author: mo.jeff
Date: Mon May 10 11:25:06 2010
Log: Modified the DDL generation so that it is based on the User defined
type definitions
http://code.google.com/p/power-architect/source/detail?r=3515
Modified:
/trunk/regress/ca/sqlpower/architect/ddl/GenericDDLGeneratorTest.java
/trunk/src/main/java/ca/sqlpower/architect/ddl/DB2DDLGenerator.java
/trunk/src/main/java/ca/sqlpower/architect/ddl/GenericDDLGenerator.java
/trunk/src/main/java/ca/sqlpower/architect/ddl/H2DDLGenerator.java
/trunk/src/main/java/ca/sqlpower/architect/ddl/HSQLDBDDLGenerator.java
/trunk/src/main/java/ca/sqlpower/architect/ddl/MySqlDDLGenerator.java
/trunk/src/main/java/ca/sqlpower/architect/ddl/Oracle8DDLGenerator.java
/trunk/src/main/java/ca/sqlpower/architect/ddl/Oracle9PlusDDLGenerator.java
/trunk/src/main/java/ca/sqlpower/architect/ddl/OracleDDLGenerator.java
/trunk/src/main/java/ca/sqlpower/architect/ddl/PostgresDDLGenerator.java
/trunk/src/main/java/ca/sqlpower/architect/ddl/SQLServer2000DDLGenerator.java
/trunk/src/main/java/ca/sqlpower/architect/ddl/SQLServer2005DDLGenerator.java
=======================================
--- /trunk/regress/ca/sqlpower/architect/ddl/GenericDDLGeneratorTest.java
Fri May 7 11:49:29 2010
+++ /trunk/regress/ca/sqlpower/architect/ddl/GenericDDLGeneratorTest.java
Mon May 10 11:25:06 2010
@@ -24,6 +24,8 @@
import ca.sqlpower.sqlobject.SQLRelationship;
import ca.sqlpower.sqlobject.SQLTable;
import ca.sqlpower.sqlobject.SQLType;
+import
ca.sqlpower.sqlobject.SQLTypePhysicalPropertiesProvider.PropertyType;
+
import java.sql.Types;
import java.util.List;
@@ -81,19 +83,23 @@
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, false);
+
col1.getUserDefinedSQLType().getDefaultPhysicalProperties().setScaleType(PropertyType.NOT_APPLICABLE);
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, false);
+
col2.getUserDefinedSQLType().getDefaultPhysicalProperties().setScaleType(PropertyType.NOT_APPLICABLE);
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, false);
+
col3.getUserDefinedSQLType().getDefaultPhysicalProperties().setPrecisionType(PropertyType.NOT_APPLICABLE);
+
col3.getUserDefinedSQLType().getDefaultPhysicalProperties().setScaleType(PropertyType.NOT_APPLICABLE);
assertEquals("NCLOB", ddl.getColumnDataTypeName(col3));
assertEquals("NCLOB", ddl.columnType(col3));
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/ddl/DB2DDLGenerator.java Sun
Feb 21 04:13:41 2010
+++ /trunk/src/main/java/ca/sqlpower/architect/ddl/DB2DDLGenerator.java Mon
May 10 11:25:06 2010
@@ -158,4 +158,8 @@
endStatement(DDLStatement.StatementType.ALTER, oldIndex);
}
-}
+ @Override
+ protected String getPlatformName() {
+ return "DB2";
+ }
+}
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/ddl/GenericDDLGenerator.java
Fri Mar 5 13:07:31 2010
+++ /trunk/src/main/java/ca/sqlpower/architect/ddl/GenericDDLGenerator.java
Mon May 10 11:25:06 2010
@@ -46,10 +46,13 @@
import ca.sqlpower.sqlobject.SQLSequence;
import ca.sqlpower.sqlobject.SQLTable;
import ca.sqlpower.sqlobject.SQLType;
+import ca.sqlpower.sqlobject.SQLTypePhysicalPropertiesProvider;
+import ca.sqlpower.sqlobject.UserDefinedSQLType;
import ca.sqlpower.sqlobject.SQLIndex.AscendDescend;
import ca.sqlpower.sqlobject.SQLRelationship.ColumnMapping;
import ca.sqlpower.sqlobject.SQLRelationship.Deferrability;
import ca.sqlpower.sqlobject.SQLRelationship.UpdateDeleteRule;
+import
ca.sqlpower.sqlobject.SQLTypePhysicalPropertiesProvider.PropertyType;
public class GenericDDLGenerator implements DDLGenerator {
@@ -735,10 +738,11 @@
def.append(" ");
def.append(columnType(c));
- if ( c.getDefaultValue() != null
&& !c.getDefaultValue().equals("")) {
+ String defaultValue =
c.getUserDefinedSQLType().getDefaultValue(getPlatformName());
+ if ( defaultValue != null && !defaultValue.equals("")) {
def.append(" ");
def.append("DEFAULT ");
- def.append(c.getDefaultValue());
+ def.append(defaultValue);
}
def.append(columnNullability(c));
@@ -760,15 +764,22 @@
}
}
+ protected String getPlatformName() {
+ return SQLTypePhysicalPropertiesProvider.GENERIC_PLATFORM;
+ }
+
/** Columnn type */
public String columnType(SQLColumn c) {
StringBuffer def = new StringBuffer();
- GenericTypeDescriptor td = failsafeGetTypeDescriptor(c);
- def.append(td.getName());
- if (td.getHasPrecision()) {
- def.append("("+c.getPrecision());
- if (td.getHasScale()) {
- def.append(","+c.getScale());
+ UserDefinedSQLType columnType = c.getUserDefinedSQLType();
+ if (columnType.getUpstreamType() != null) {
+ columnType = columnType.getUpstreamType();
+ }
+ def.append(columnType.getPhysicalName(getPlatformName()));
+ if (columnType.getPrecisionType(getPlatformName()) !=
PropertyType.NOT_APPLICABLE) {
+
def.append("("+columnType.getPrecision(getPlatformName()));
+ if (columnType.getScaleType(getPlatformName()) !=
PropertyType.NOT_APPLICABLE) {
+
def.append(","+columnType.getScale(getPlatformName()));
}
def.append(")");
}
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/ddl/H2DDLGenerator.java Sun
Feb 21 04:13:41 2010
+++ /trunk/src/main/java/ca/sqlpower/architect/ddl/H2DDLGenerator.java Mon
May 10 11:25:06 2010
@@ -62,6 +62,11 @@
return "Schema";
}
+ @Override
+ protected String getPlatformName() {
+ return "H2 Database";
+ }
+
@Override
public String columnType(SQLColumn c) {
if (c.isAutoIncrement()) {
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/ddl/HSQLDBDDLGenerator.java
Sun Feb 21 04:13:41 2010
+++ /trunk/src/main/java/ca/sqlpower/architect/ddl/HSQLDBDDLGenerator.java
Mon May 10 11:25:06 2010
@@ -74,6 +74,11 @@
return super.columnType(c);
}
}
+
+ @Override
+ protected String getPlatformName() {
+ return "HSQLDB";
+ }
@Override
public String getDeferrabilityClause(SQLRelationship r) {
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/ddl/MySqlDDLGenerator.java
Fri Mar 5 13:07:31 2010
+++ /trunk/src/main/java/ca/sqlpower/architect/ddl/MySqlDDLGenerator.java
Mon May 10 11:25:06 2010
@@ -459,6 +459,11 @@
return type;
}
+ @Override
+ protected String getPlatformName() {
+ return "MySQL";
+ }
+
@Override
public void addIndex(SQLIndex index) throws SQLObjectException {
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/ddl/Oracle8DDLGenerator.java
Mon Nov 24 15:34:32 2008
+++ /trunk/src/main/java/ca/sqlpower/architect/ddl/Oracle8DDLGenerator.java
Mon May 10 11:25:06 2010
@@ -36,6 +36,11 @@
return "Oracle 8i";
}
+ @Override
+ protected String getPlatformName() {
+ return "Oracle 8i";
+ }
+
@Override
public void writeHeader() {
println("-- Created by SQLPower Oracle 8i DDL
Generator "+GENERATOR_VERSION+" --");
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/ddl/Oracle9PlusDDLGenerator.java
Thu Sep 3 13:57:37 2009
+++
/trunk/src/main/java/ca/sqlpower/architect/ddl/Oracle9PlusDDLGenerator.java
Mon May 10 11:25:06 2010
@@ -37,6 +37,11 @@
return "Oracle 9i/10g";
}
+ @Override
+ protected String getPlatformName() {
+ return "Oracle 10g";
+ }
+
@Override
public void writeHeader() {
println("-- Created by SQLPower Oracle 9i/10g DDL
Generator "+GENERATOR_VERSION+" --");
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/ddl/OracleDDLGenerator.java
Thu Feb 25 00:03:39 2010
+++ /trunk/src/main/java/ca/sqlpower/architect/ddl/OracleDDLGenerator.java
Mon May 10 11:25:06 2010
@@ -173,7 +173,7 @@
}
public String getName() {
- return "Oracle";
+ return "Oracle 8i";
}
@Override
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/ddl/PostgresDDLGenerator.java
Fri Mar 5 13:07:31 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/ddl/PostgresDDLGenerator.java
Mon May 10 11:25:06 2010
@@ -422,6 +422,11 @@
}
}
+ @Override
+ protected String getPlatformName() {
+ return "PostgreSQL";
+ }
+
@Override
public void renameIndex(SQLIndex oldIndex, SQLIndex newIndex) throws
SQLObjectException {
print("ALTER INDEX ");
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/ddl/SQLServer2000DDLGenerator.java
Thu Jan 29 12:02:55 2009
+++
/trunk/src/main/java/ca/sqlpower/architect/ddl/SQLServer2000DDLGenerator.java
Mon May 10 11:25:06 2010
@@ -42,6 +42,11 @@
return "Microsoft SQL Server 2000";
}
+ @Override
+ protected String getPlatformName() {
+ return "SQL Server 2000";
+ }
+
@Override
public boolean supportsDeleteAction(SQLRelationship r) {
UpdateDeleteRule action = r.getDeleteRule();
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/ddl/SQLServer2005DDLGenerator.java
Thu Jan 29 12:02:55 2009
+++
/trunk/src/main/java/ca/sqlpower/architect/ddl/SQLServer2005DDLGenerator.java
Mon May 10 11:25:06 2010
@@ -41,6 +41,11 @@
public String getName() {
return "Microsoft SQL Server 2005";
}
+
+ @Override
+ protected String getPlatformName() {
+ return "SQL Server 2005";
+ }
@Override
public boolean supportsDeleteAction(SQLRelationship r) {