Revision: 3646
Author: [email protected]
Date: Fri Jun 25 14:57:36 2010
Log: NEW - bug 2458: Create Critic Manager
http://trillian.sqlpower.ca/bugzilla/show_bug.cgi?id=2458

Added in more critics for the unsupported features to give the critics the same functionality as the existing quick fix system.
http://code.google.com/p/power-architect/source/detail?r=3646

Added:
/trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/DB2UnsupportedFeaturesCritic.java /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/SQLServerUnsupportedFeaturesCritic.java
Modified:
/trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticAndSettings.java
 /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticManager.java
/trunk/src/main/resources/ca/sqlpower/architect/ddl/critic/impl/messages.properties

=======================================
--- /dev/null
+++ /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/DB2UnsupportedFeaturesCritic.java Fri Jun 25 14:57:36 2010
@@ -0,0 +1,59 @@
+/*
+ * 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.Deferrability;
+import ca.sqlpower.sqlobject.SQLRelationship.UpdateDeleteRule;
+
+public class DB2UnsupportedFeaturesCritic extends CriticAndSettings {
+
+    public DB2UnsupportedFeaturesCritic() {
+ super(StarterPlatformTypes.DB2.getName(), Messages.getString("DB2UnsupportedFeaturesCritic.name"));
+    }
+
+    public List<Criticism> criticize(Object subject) {
+ if (!(subject instanceof SQLRelationship)) return Collections.emptyList();
+
+        SQLRelationship r = (SQLRelationship) subject;
+        List<Criticism> criticisms = new ArrayList<Criticism>();
+        if (r.getDeleteRule() == UpdateDeleteRule.SET_DEFAULT) {
+            criticisms.add(new Criticism(subject,
+ Messages.getString("DB2UnsupportedFeaturesCritic.deleteRuleNotSupported", r.getName()), this));
+        }
+        if (r.getUpdateRule() != UpdateDeleteRule.RESTRICT
+                && (r.getUpdateRule() != UpdateDeleteRule.NO_ACTION)) {
+            criticisms.add(new Criticism(subject,
+ Messages.getString("DB2UnsupportedFeaturesCritic.updateRuleNotSupported", r.getName()), this));
+        }
+        if (r.getDeferrability() != Deferrability.NOT_DEFERRABLE) {
+            criticisms.add(new Criticism(subject,
+ Messages.getString("DB2UnsupportedFeaturesCritic.deferrabilityRuleNotSupported", r.getName()), this));
+        }
+        return criticisms;
+    }
+
+}
=======================================
--- /dev/null
+++ /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/SQLServerUnsupportedFeaturesCritic.java Fri Jun 25 14:57:36 2010
@@ -0,0 +1,52 @@
+/*
+ * 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.Deferrability;
+
+public class SQLServerUnsupportedFeaturesCritic extends CriticAndSettings {
+
+    public SQLServerUnsupportedFeaturesCritic() {
+        super(StarterPlatformTypes.SQL_SERVER.getName(),
+ Messages.getString("SQLServerUnsupportedFeaturesCritic.name"));
+    }
+
+    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.getDeferrability() != Deferrability.NOT_DEFERRABLE) {
+            criticisms.add(new Criticism(subject,
+ Messages.getString("SQLServerUnsupportedFeaturesCritic.deferrabilityNotSupported", r.getName()), this));
+        }
+
+        return criticisms;
+    }
+
+}
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticAndSettings.java Fri Jun 25 11:31:05 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticAndSettings.java Fri Jun 25 14:57:36 2010
@@ -56,7 +56,8 @@
         POSTGRESQL("PostgreSQL"),
         MY_SQL("MySQL"),
         SQL_SERVER("SQL Server"),
-        ORACLE("Oracle");
+        ORACLE("Oracle"),
+        DB2("DB2");

         private final String name;

=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticManager.java Fri Jun 25 13:32:09 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticManager.java Fri Jun 25 14:57:36 2010
@@ -28,6 +28,7 @@
import ca.sqlpower.architect.ddl.critic.CriticAndSettings.StarterPlatformTypes;
 import ca.sqlpower.architect.ddl.critic.impl.AlphaNumericNameCritic;
import ca.sqlpower.architect.ddl.critic.impl.AlphaNumericSequenceNameCritic;
+import ca.sqlpower.architect.ddl.critic.impl.DB2UnsupportedFeaturesCritic;
 import ca.sqlpower.architect.ddl.critic.impl.EmptyRelationshipCritic;
 import ca.sqlpower.architect.ddl.critic.impl.MySQLCommentCritic;
 import ca.sqlpower.architect.ddl.critic.impl.MySQLReservedWordsCritic;
@@ -38,6 +39,7 @@
 import ca.sqlpower.architect.ddl.critic.impl.PrimaryKeyCritic;
 import ca.sqlpower.architect.ddl.critic.impl.RelationshipMappingTypeCritic;
 import ca.sqlpower.architect.ddl.critic.impl.SQLServerReservedWordsCritic;
+import ca.sqlpower.architect.ddl.critic.impl.SQLServerUnsupportedFeaturesCritic; import ca.sqlpower.architect.ddl.critic.impl.SetDefaultOnColumnWithNoDefaultCritic; import ca.sqlpower.architect.ddl.critic.impl.SetNullOnNonNullableColumnCritic;
 import ca.sqlpower.object.AbstractSPObject;
@@ -77,7 +79,9 @@
                 new SQLServerReservedWordsCritic(),
                 new SetDefaultOnColumnWithNoDefaultCritic(),
                 new SetNullOnNonNullableColumnCritic(),
-                new MySQLUnsupportedFeaturesCritic()
+                new MySQLUnsupportedFeaturesCritic(),
+                new SQLServerUnsupportedFeaturesCritic(),
+                new DB2UnsupportedFeaturesCritic()
                 ));

     /**
=======================================
--- /trunk/src/main/resources/ca/sqlpower/architect/ddl/critic/impl/messages.properties Fri Jun 25 13:32:09 2010 +++ /trunk/src/main/resources/ca/sqlpower/architect/ddl/critic/impl/messages.properties Fri Jun 25 14:57:36 2010
@@ -5,6 +5,10 @@
 AlphaNumericNameCritic.name=Warns on non-alpha-numeric physical names.
AlphaNumericSequenceNameCritic.name=Warns on non-alpha-numeric sequence names. AlphaNumericSequenceNameCritic.quickFixMessage=Sequence name not legal for column {0}. +DB2UnsupportedFeaturesCritic.deferrabilityRuleNotSupported=DB2 does not support {0}'s deferrability action. +DB2UnsupportedFeaturesCritic.deleteRuleNotSupported=DB2 does not support {0}'s delete action. +DB2UnsupportedFeaturesCritic.name=Warns when using features not supported by DB2. +DB2UnsupportedFeaturesCritic.updateRuleNotSupported=DB2 does not support {0}'s update action. MySQLReservedWordsCritic.name=Warns when objects are named reserved words in MySQL. MySQLUnsupportedFeaturesCritic.deferrabilityNotSupported=MySQL does not support {0}'s deferrability action. MySQLUnsupportedFeaturesCritic.deleteNotSupported=MySQL does not support {0}'s delete action.
@@ -22,3 +26,5 @@
 SetNullOnNonNullableColumnCritic.quickFix=Make {0} nullable.
SetNullOnNonNullableColumnCritic.updateRuleCriticism=SET NULL update action in relationship {0} references non-nullable column {1}. SQLServerReservedWordsCritic.name=Warns when objects are named reserved words in SQL Server. +SQLServerUnsupportedFeaturesCritic.name=Warns when using features not supported by SQL Server. +SQLServerUnsupportedFeaturesCritic.deferrabilityNotSupported=SQL Server does not support {0}'s deferrability action.

Reply via email to