Revision: 3654
Author: [email protected]
Date: Mon Jun 28 12:59:51 2010
Log: NEW - bug 2458: Create Critic Manager
http://trillian.sqlpower.ca/bugzilla/show_bug.cgi?id=2458

Added in the last of the unsupported features for each platform type we support and has unsupported features.
http://code.google.com/p/power-architect/source/detail?r=3654

Added:
/trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/OracleUnsupportedFeaturesCritic.java /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/SQLServer2000UnsupportedFeaturesCritic.java /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/SQLServer2005UnsupportedFeaturesCritic.java
Modified:
/trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticAndSettings.java
 /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticManager.java

=======================================
--- /dev/null
+++ /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/OracleUnsupportedFeaturesCritic.java Mon Jun 28 12:59:51 2010
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2010, SQL Power Group Inc.
+ *
+ * This file is part of SQL Power Architect.
+ *
+ * SQL Power Architect is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * SQL Power Architect is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package ca.sqlpower.architect.ddl.critic.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import ca.sqlpower.architect.ddl.critic.CriticAndSettings;
+import ca.sqlpower.architect.ddl.critic.Criticism;
+import ca.sqlpower.sqlobject.SQLRelationship;
+import ca.sqlpower.sqlobject.SQLRelationship.UpdateDeleteRule;
+
+public class OracleUnsupportedFeaturesCritic extends CriticAndSettings {
+
+    public OracleUnsupportedFeaturesCritic() {
+        super(StarterPlatformTypes.ORACLE.getName(),
+ Messages.getString("UnsupportedFeaturesCritic.name", StarterPlatformTypes.ORACLE.getName()));
+    }
+
+    public List<Criticism> criticize(Object subject) {
+ if (!(subject instanceof SQLRelationship)) return Collections.emptyList();
+
+        List<Criticism> criticisms = new ArrayList<Criticism>();
+        SQLRelationship r = (SQLRelationship) subject;
+
+        if ((r.getDeleteRule() != UpdateDeleteRule.NO_ACTION) &&
+            (r.getDeleteRule() != UpdateDeleteRule.RESTRICT)) {
+            criticisms.add(new Criticism(subject,
+ Messages.getString("UnsupportedFeaturesCritic.deleteRuleNotSupported", getPlatformType(), r.getName()), this));
+        }
+        if (r.getUpdateRule() == UpdateDeleteRule.SET_DEFAULT) {
+            criticisms.add(new Criticism(subject,
+ Messages.getString("UnsupportedFeaturesCritic.updateRuleNotSupported", getPlatformType(), r.getName()), this));
+        }
+
+        return criticisms;
+    }
+
+}
=======================================
--- /dev/null
+++ /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/SQLServer2000UnsupportedFeaturesCritic.java Mon Jun 28 12:59:51 2010
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2010, SQL Power Group Inc.
+ *
+ * This file is part of SQL Power Architect.
+ *
+ * SQL Power Architect is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * SQL Power Architect is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package ca.sqlpower.architect.ddl.critic.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import ca.sqlpower.architect.ddl.critic.CriticAndSettings;
+import ca.sqlpower.architect.ddl.critic.Criticism;
+import ca.sqlpower.sqlobject.SQLRelationship;
+import ca.sqlpower.sqlobject.SQLRelationship.UpdateDeleteRule;
+
+public class SQLServer2000UnsupportedFeaturesCritic extends CriticAndSettings {
+
+    public SQLServer2000UnsupportedFeaturesCritic() {
+        super(StarterPlatformTypes.SQL_SERVER_2000.getName(),
+ Messages.getString("UnsupportedFeaturesCritic.name", StarterPlatformTypes.SQL_SERVER_2000.getName()));
+    }
+
+    public List<Criticism> criticize(Object subject) {
+ if (!(subject instanceof SQLRelationship)) return Collections.emptyList();
+
+        List<Criticism> criticisms = new ArrayList<Criticism>();
+        SQLRelationship r = (SQLRelationship) subject;
+
+        if ((r.getDeleteRule() != UpdateDeleteRule.CASCADE)
+            && (r.getDeleteRule() != UpdateDeleteRule.NO_ACTION)) {
+            criticisms.add(new Criticism(subject,
+ Messages.getString("UnsupportedFeaturesCritic.deleteRuleNotSupported", getPlatformType(), r.getName()), this));
+        }
+        if ((r.getUpdateRule() != UpdateDeleteRule.CASCADE)
+                && (r.getUpdateRule() != UpdateDeleteRule.NO_ACTION)) {
+            criticisms.add(new Criticism(subject,
+ Messages.getString("UnsupportedFeaturesCritic.updateRuleNotSupported", getPlatformType(), r.getName()), this));
+        }
+
+        return criticisms;
+    }
+
+}
=======================================
--- /dev/null
+++ /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/SQLServer2005UnsupportedFeaturesCritic.java Mon Jun 28 12:59:51 2010
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2010, SQL Power Group Inc.
+ *
+ * This file is part of SQL Power Architect.
+ *
+ * SQL Power Architect is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * SQL Power Architect is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package ca.sqlpower.architect.ddl.critic.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import ca.sqlpower.architect.ddl.critic.CriticAndSettings;
+import ca.sqlpower.architect.ddl.critic.Criticism;
+import ca.sqlpower.sqlobject.SQLRelationship;
+import ca.sqlpower.sqlobject.SQLRelationship.UpdateDeleteRule;
+
+public class SQLServer2005UnsupportedFeaturesCritic extends CriticAndSettings {
+
+    public SQLServer2005UnsupportedFeaturesCritic() {
+        super(StarterPlatformTypes.SQL_SERVER_2005.getName(),
+ Messages.getString("UnsupportedFeaturesCritic.name", StarterPlatformTypes.SQL_SERVER_2005.getName()));
+    }
+
+    public List<Criticism> criticize(Object subject) {
+ if (!(subject instanceof SQLRelationship)) return Collections.emptyList();
+
+        List<Criticism> criticisms = new ArrayList<Criticism>();
+        SQLRelationship r = (SQLRelationship) subject;
+
+        if (r.getDeleteRule() == UpdateDeleteRule.RESTRICT) {
+            criticisms.add(new Criticism(subject,
+ Messages.getString("UnsupportedFeaturesCritic.deleteRuleNotSupported", getPlatformType(), r.getName()), this));
+        }
+        if (r.getUpdateRule() == UpdateDeleteRule.RESTRICT) {
+            criticisms.add(new Criticism(subject,
+ Messages.getString("UnsupportedFeaturesCritic.updateRuleNotSupported", getPlatformType(), r.getName()), this));
+        }
+
+        return criticisms;
+    }
+}
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticAndSettings.java Mon Jun 28 11:53:08 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticAndSettings.java Mon Jun 28 12:59:51 2010
@@ -56,6 +56,8 @@
         POSTGRESQL("PostgreSQL"),
         MY_SQL("MySQL"),
         SQL_SERVER("SQL Server"),
+        SQL_SERVER_2000("SQL Server 2000"),
+        SQL_SERVER_2005("SQL Server 2005"),
         ORACLE("Oracle"),
         DB2("DB2"),
         H2("H2"),
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticManager.java Mon Jun 28 11:53:08 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticManager.java Mon Jun 28 12:59:51 2010
@@ -37,9 +37,12 @@
import ca.sqlpower.architect.ddl.critic.impl.MySQLUnsupportedFeaturesCritic;
 import ca.sqlpower.architect.ddl.critic.impl.OraclePhysicalNameCritic;
 import ca.sqlpower.architect.ddl.critic.impl.OracleReservedWordsCritic;
+import ca.sqlpower.architect.ddl.critic.impl.OracleUnsupportedFeaturesCritic;
 import ca.sqlpower.architect.ddl.critic.impl.PostgreSQLReservedWordsCritic;
 import ca.sqlpower.architect.ddl.critic.impl.PrimaryKeyCritic;
 import ca.sqlpower.architect.ddl.critic.impl.RelationshipMappingTypeCritic;
+import ca.sqlpower.architect.ddl.critic.impl.SQLServer2000UnsupportedFeaturesCritic; +import ca.sqlpower.architect.ddl.critic.impl.SQLServer2005UnsupportedFeaturesCritic;
 import ca.sqlpower.architect.ddl.critic.impl.SQLServerReservedWordsCritic;
import ca.sqlpower.architect.ddl.critic.impl.SQLServerUnsupportedFeaturesCritic; import ca.sqlpower.architect.ddl.critic.impl.SetDefaultOnColumnWithNoDefaultCritic;
@@ -68,24 +71,37 @@
      */
     private static final List<CriticAndSettings> STARTING_CRITICS =
         Collections.unmodifiableList(Arrays.asList(
+                //generics
                 new PrimaryKeyCritic(),
                 new RelationshipMappingTypeCritic(),
                 new EmptyRelationshipCritic(),
                 new AlphaNumericNameCritic(),
                 new AlphaNumericSequenceNameCritic(),
-                new PostgreSQLReservedWordsCritic(),
-                new OraclePhysicalNameCritic(),
-                new OracleReservedWordsCritic(),
-                new MySQLCommentCritic(),
-                new MySQLReservedWordsCritic(),
-                new SQLServerReservedWordsCritic(),
                 new SetDefaultOnColumnWithNoDefaultCritic(),
                 new SetNullOnNonNullableColumnCritic(),
-                new MySQLUnsupportedFeaturesCritic(),
-                new SQLServerUnsupportedFeaturesCritic(),
+                //DB2
                 new DB2UnsupportedFeaturesCritic(),
+                //H2
                 new H2UnsupportedFeaturesCritic(),
-                new HSQLDBUnsupportedFeaturesCritic()
+                //HSQLDB
+                new HSQLDBUnsupportedFeaturesCritic(),
+                //MySQL
+                new MySQLCommentCritic(),
+                new MySQLReservedWordsCritic(),
+                new MySQLUnsupportedFeaturesCritic(),
+                //Oracle
+                new OraclePhysicalNameCritic(),
+                new OracleReservedWordsCritic(),
+                new OracleUnsupportedFeaturesCritic(),
+                //Postgres
+                new PostgreSQLReservedWordsCritic(),
+                //SQL Server
+                new SQLServerUnsupportedFeaturesCritic(),
+                new SQLServerReservedWordsCritic(),
+                //SQL Server 2000
+                new SQLServer2000UnsupportedFeaturesCritic(),
+                //SQL Server 2005
+                new SQLServer2005UnsupportedFeaturesCritic()
                 ));

     /**

Reply via email to