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

Added H2 and HSQLDB checks to the critic system as it is done in the quick fix system and is being replaced. Also cleaned up the messages to reduce duplicate entries.
http://code.google.com/p/power-architect/source/detail?r=3650

Added:
/trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/H2UnsupportedFeaturesCritic.java /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/HSQLDBUnsupportedFeaturesCritic.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/java/ca/sqlpower/architect/ddl/critic/impl/DB2UnsupportedFeaturesCritic.java /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/MySQLUnsupportedFeaturesCritic.java /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/SQLServerUnsupportedFeaturesCritic.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/H2UnsupportedFeaturesCritic.java Mon Jun 28 11:53:08 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.Deferrability;
+import ca.sqlpower.sqlobject.SQLRelationship.UpdateDeleteRule;
+
+public class H2UnsupportedFeaturesCritic extends CriticAndSettings {
+
+    public H2UnsupportedFeaturesCritic() {
+ super(StarterPlatformTypes.H2.getName(), Messages.getString("UnsupportedFeaturesCritic.name", StarterPlatformTypes.H2.getName()));
+    }
+
+    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.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));
+        }
+        if (r.getDeferrability() != Deferrability.NOT_DEFERRABLE) {
+            criticisms.add(new Criticism(subject,
+ Messages.getString("UnsupportedFeaturesCritic.deferrabilityRuleNotSupported", getPlatformType(), r.getName()), this));
+        }
+        return criticisms;
+    }
+}
=======================================
--- /dev/null
+++ /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/HSQLDBUnsupportedFeaturesCritic.java Mon Jun 28 11:53:08 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.Deferrability;
+import ca.sqlpower.sqlobject.SQLRelationship.UpdateDeleteRule;
+
+public class HSQLDBUnsupportedFeaturesCritic extends CriticAndSettings {
+
+    public HSQLDBUnsupportedFeaturesCritic() {
+ super(StarterPlatformTypes.HSQLDB.getName(), Messages.getString("UnsupportedFeaturesCritic.name", StarterPlatformTypes.HSQLDB.getName()));
+    }
+
+    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.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));
+        }
+        if (r.getDeferrability() != Deferrability.NOT_DEFERRABLE) {
+            criticisms.add(new Criticism(subject,
+ Messages.getString("UnsupportedFeaturesCritic.deferrabilityRuleNotSupported", getPlatformType(), r.getName()), this));
+        }
+        return criticisms;
+    }
+}
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticAndSettings.java Fri Jun 25 14:57:36 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticAndSettings.java Mon Jun 28 11:53:08 2010
@@ -57,7 +57,9 @@
         MY_SQL("MySQL"),
         SQL_SERVER("SQL Server"),
         ORACLE("Oracle"),
-        DB2("DB2");
+        DB2("DB2"),
+        H2("H2"),
+        HSQLDB("HSQLDB");

         private final String name;

=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticManager.java Fri Jun 25 14:57:36 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticManager.java Mon Jun 28 11:53:08 2010
@@ -30,6 +30,8 @@
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.H2UnsupportedFeaturesCritic;
+import ca.sqlpower.architect.ddl.critic.impl.HSQLDBUnsupportedFeaturesCritic;
 import ca.sqlpower.architect.ddl.critic.impl.MySQLCommentCritic;
 import ca.sqlpower.architect.ddl.critic.impl.MySQLReservedWordsCritic;
import ca.sqlpower.architect.ddl.critic.impl.MySQLUnsupportedFeaturesCritic;
@@ -81,7 +83,9 @@
                 new SetNullOnNonNullableColumnCritic(),
                 new MySQLUnsupportedFeaturesCritic(),
                 new SQLServerUnsupportedFeaturesCritic(),
-                new DB2UnsupportedFeaturesCritic()
+                new DB2UnsupportedFeaturesCritic(),
+                new H2UnsupportedFeaturesCritic(),
+                new HSQLDBUnsupportedFeaturesCritic()
                 ));

     /**
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/DB2UnsupportedFeaturesCritic.java Fri Jun 25 14:57:36 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/DB2UnsupportedFeaturesCritic.java Mon Jun 28 11:53:08 2010
@@ -32,7 +32,7 @@
 public class DB2UnsupportedFeaturesCritic extends CriticAndSettings {

     public DB2UnsupportedFeaturesCritic() {
- super(StarterPlatformTypes.DB2.getName(), Messages.getString("DB2UnsupportedFeaturesCritic.name")); + super(StarterPlatformTypes.DB2.getName(), Messages.getString("UnsupportedFeaturesCritic.name", StarterPlatformTypes.DB2.getName()));
     }

     public List<Criticism> criticize(Object subject) {
@@ -42,16 +42,16 @@
         List<Criticism> criticisms = new ArrayList<Criticism>();
         if (r.getDeleteRule() == UpdateDeleteRule.SET_DEFAULT) {
             criticisms.add(new Criticism(subject,
- Messages.getString("DB2UnsupportedFeaturesCritic.deleteRuleNotSupported", r.getName()), this)); + Messages.getString("UnsupportedFeaturesCritic.deleteRuleNotSupported", getPlatformType(), 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)); + Messages.getString("UnsupportedFeaturesCritic.updateRuleNotSupported", getPlatformType(), r.getName()), this));
         }
         if (r.getDeferrability() != Deferrability.NOT_DEFERRABLE) {
             criticisms.add(new Criticism(subject,
- Messages.getString("DB2UnsupportedFeaturesCritic.deferrabilityRuleNotSupported", r.getName()), this)); + Messages.getString("UnsupportedFeaturesCritic.deferrabilityRuleNotSupported", getPlatformType(), r.getName()), this));
         }
         return criticisms;
     }
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/MySQLUnsupportedFeaturesCritic.java Fri Jun 25 13:32:09 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/MySQLUnsupportedFeaturesCritic.java Mon Jun 28 11:53:08 2010
@@ -37,7 +37,7 @@

     public MySQLUnsupportedFeaturesCritic() {
         super(StarterPlatformTypes.MY_SQL.getName(),
-                Messages.getString("MySQLUnsupportedFeaturesCritic.name"));
+ Messages.getString("UnsupportedFeaturesCritic.name", StarterPlatformTypes.MY_SQL.getName()));
     }

     public List<Criticism> criticize(Object subject) {
@@ -48,15 +48,15 @@

         if (r.getDeleteRule() == UpdateDeleteRule.SET_DEFAULT) {
             criticisms.add(new Criticism(subject,
- Messages.getString("MySQLUnsupportedFeaturesCritic.deleteNotSupported", r.getName()), this)); + Messages.getString("UnsupportedFeaturesCritic.deleteRuleNotSupported", getPlatformType(), r.getName()), this));
         }
         if (r.getDeferrability() != Deferrability.NOT_DEFERRABLE) {
             criticisms.add(new Criticism(subject,
- Messages.getString("MySQLUnsupportedFeaturesCritic.deferrabilityNotSupported", r.getName()), this)); + Messages.getString("UnsupportedFeaturesCritic.deferrabilityRuleNotSupported", getPlatformType(), r.getName()), this));
         }
         if (r.getUpdateRule() == UpdateDeleteRule.SET_DEFAULT) {
             criticisms.add(new Criticism(subject,
- Messages.getString("MySQLUnsupportedFeaturesCritic.updateNotSupported", r.getName()), this)); + Messages.getString("UnsupportedFeaturesCritic.updateRuleNotSupported", getPlatformType(), r.getName()), this));
         }

         return criticisms;
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/SQLServerUnsupportedFeaturesCritic.java Fri Jun 25 14:57:36 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/SQLServerUnsupportedFeaturesCritic.java Mon Jun 28 11:53:08 2010
@@ -32,7 +32,7 @@

     public SQLServerUnsupportedFeaturesCritic() {
         super(StarterPlatformTypes.SQL_SERVER.getName(),
- Messages.getString("SQLServerUnsupportedFeaturesCritic.name")); + Messages.getString("UnsupportedFeaturesCritic.name", StarterPlatformTypes.SQL_SERVER.getName()));
     }

     public List<Criticism> criticize(Object subject) {
@@ -43,7 +43,7 @@

         if (r.getDeferrability() != Deferrability.NOT_DEFERRABLE) {
             criticisms.add(new Criticism(subject,
- Messages.getString("SQLServerUnsupportedFeaturesCritic.deferrabilityNotSupported", r.getName()), this)); + Messages.getString("UnsupportedFeaturesCritic.deferrabilityRuleNotSupported", getPlatformType(), r.getName()), this));
         }

         return criticisms;
=======================================
--- /trunk/src/main/resources/ca/sqlpower/architect/ddl/critic/impl/messages.properties Fri Jun 25 14:57:36 2010 +++ /trunk/src/main/resources/ca/sqlpower/architect/ddl/critic/impl/messages.properties Mon Jun 28 11:53:08 2010
@@ -5,15 +5,11 @@
 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. +UnsupportedFeaturesCritic.deferrabilityRuleNotSupported={0} does not support {1}'s deferrability action. +UnsupportedFeaturesCritic.deleteRuleNotSupported={0} does not support {1}'s delete action. +UnsupportedFeaturesCritic.name=Warns when using features not supported by {0}. +UnsupportedFeaturesCritic.updateRuleNotSupported={0} does not support {1}'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. -MySQLUnsupportedFeaturesCritic.name=Warns when using features not supported by MySQL. -MySQLUnsupportedFeaturesCritic.updateNotSupported=MySQL does not support {0}'s update action. OracleReservedWordsCritic.name=Warns when objects are named reserved words in Oracle. PostgreSQLReservedWordsCritic.name=Warns when objects are named reserved words in PostgreSQL. ReservedWordsCritic.criticismDesc={0} named {1} is a reserved word. Please change the name.
@@ -26,5 +22,3 @@
 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