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.