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) {

Reply via email to