Author: jfuerth
Date: Thu Nov  6 14:02:16 2008
New Revision: 2820

Modified:
   trunk/src/ca/sqlpower/architect/ddl/DDLUtils.java
   trunk/src/ca/sqlpower/architect/ddl/SQLServerDDLGenerator.java

Log:
Fixed bug 1698. The generic SQL Server DDL generator is now an abstract class, and abstract classes are no longer included in the list of available generators returned from DDLUtils.

Projects that were saved using the generic SQL Server DDL generator will revert to the generic generic generator, and users will have to pick the version-appropriate generator once after the upgrade.

Modified: trunk/src/ca/sqlpower/architect/ddl/DDLUtils.java
==============================================================================
--- trunk/src/ca/sqlpower/architect/ddl/DDLUtils.java   (original)
+++ trunk/src/ca/sqlpower/architect/ddl/DDLUtils.java Thu Nov 6 14:02:16 2008
@@ -18,6 +18,7 @@
  */
 package ca.sqlpower.architect.ddl;

+import java.lang.reflect.Modifier;
 import java.util.Vector;

 import org.apache.log4j.Logger;
@@ -148,13 +149,15 @@
* Finds all DDL Generators configured in the given data source collection.
      */
public static Vector<Class<? extends DDLGenerator>> getDDLTypes(DataSourceCollection dsc) {
-        Vector<Class<? extends DDLGenerator>> dbTypeList = new Vector();
+ Vector<Class<? extends DDLGenerator>> dbTypeList = new Vector<Class<? extends DDLGenerator>>();
         for (SPDataSourceType dst : dsc.getDataSourceTypes()) {
             if (dst.getDDLGeneratorClass() != null) {
                 try {
Class<?> loadedClass = Class.forName(dst.getDDLGeneratorClass()); Class<? extends DDLGenerator> ddlgClass = loadedClass.asSubclass(DDLGenerator.class); - if (!dbTypeList.contains(ddlgClass)) dbTypeList.add(ddlgClass); + if ( (!dbTypeList.contains(ddlgClass)) && (!Modifier.isAbstract(ddlgClass.getModifiers())) ) {
+                        dbTypeList.add(ddlgClass);
+                    }
                 } catch (Exception e) {
                     logger.warn(
"Couldn't initialize DDL Generator class " + dst.getDDLGeneratorClass() +

Modified: trunk/src/ca/sqlpower/architect/ddl/SQLServerDDLGenerator.java
==============================================================================
--- trunk/src/ca/sqlpower/architect/ddl/SQLServerDDLGenerator.java (original) +++ trunk/src/ca/sqlpower/architect/ddl/SQLServerDDLGenerator.java Thu Nov 6 14:02:16 2008
@@ -34,8 +34,12 @@
 import ca.sqlpower.architect.SQLRelationship;
 import ca.sqlpower.architect.SQLRelationship.Deferrability;

-
-public class SQLServerDDLGenerator extends GenericDDLGenerator {
+/**
+ * The base class for version-specific SQL Server DDL generators. This class is
+ * marked abstract because it is not appropriate to use it directly on any
+ * version of SQL Server.
+ */
+public abstract class SQLServerDDLGenerator extends GenericDDLGenerator {
        public SQLServerDDLGenerator() throws SQLException {
                super();
        }
@@ -43,10 +47,10 @@
        public static final String GENERATOR_VERSION = "$Revision$";
private static final Logger logger = Logger.getLogger(SQLServerDDLGenerator.class);

-       private static HashSet reservedWords;
+       private static HashSet<String> reservedWords;

        static {
-               reservedWords = new HashSet();
+               reservedWords = new HashSet<String>();
                reservedWords.add("ADD");
                reservedWords.add("ALL");
                reservedWords.add("ALTER");

Reply via email to