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");