Revision: 3645
Author: [email protected]
Date: Fri Jun 25 13:32:09 2010
Log: NEW - bug 2458: Create Critic Manager
http://trillian.sqlpower.ca/bugzilla/show_bug.cgi?id=2458
Added a critic for features in Architect that are not supported by MySQL.
This is for making the critics have the same functionality as the quick fix
implementation.
http://code.google.com/p/power-architect/source/detail?r=3645
Added:
/trunk/src/main/java/ca/sqlpower/architect/ddl/critic/impl/MySQLUnsupportedFeaturesCritic.java
Modified:
/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/MySQLUnsupportedFeaturesCritic.java
Fri Jun 25 13:32:09 2010
@@ -0,0 +1,65 @@
+/*
+ * 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;
+
+/**
+ * Criticizes the model if features of Architect are used that are not
supported
+ * in MySQL.
+ */
+public class MySQLUnsupportedFeaturesCritic extends CriticAndSettings {
+
+ public MySQLUnsupportedFeaturesCritic() {
+ super(StarterPlatformTypes.MY_SQL.getName(),
+ Messages.getString("MySQLUnsupportedFeaturesCritic.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.getDeleteRule() == UpdateDeleteRule.SET_DEFAULT) {
+ criticisms.add(new Criticism(subject,
+
Messages.getString("MySQLUnsupportedFeaturesCritic.deleteNotSupported",
r.getName()), this));
+ }
+ if (r.getDeferrability() != Deferrability.NOT_DEFERRABLE) {
+ criticisms.add(new Criticism(subject,
+
Messages.getString("MySQLUnsupportedFeaturesCritic.deferrabilityNotSupported",
r.getName()), this));
+ }
+ if (r.getUpdateRule() == UpdateDeleteRule.SET_DEFAULT) {
+ criticisms.add(new Criticism(subject,
+
Messages.getString("MySQLUnsupportedFeaturesCritic.updateNotSupported",
r.getName()), this));
+ }
+
+ return criticisms;
+ }
+
+}
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticManager.java
Fri Jun 25 12:48:20 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticManager.java
Fri Jun 25 13:32:09 2010
@@ -31,6 +31,7 @@
import ca.sqlpower.architect.ddl.critic.impl.EmptyRelationshipCritic;
import ca.sqlpower.architect.ddl.critic.impl.MySQLCommentCritic;
import ca.sqlpower.architect.ddl.critic.impl.MySQLReservedWordsCritic;
+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.PostgreSQLReservedWordsCritic;
@@ -75,7 +76,8 @@
new MySQLReservedWordsCritic(),
new SQLServerReservedWordsCritic(),
new SetDefaultOnColumnWithNoDefaultCritic(),
- new SetNullOnNonNullableColumnCritic()
+ new SetNullOnNonNullableColumnCritic(),
+ new MySQLUnsupportedFeaturesCritic()
));
/**
=======================================
---
/trunk/src/main/resources/ca/sqlpower/architect/ddl/critic/impl/messages.properties
Fri Jun 25 12:48:20 2010
+++
/trunk/src/main/resources/ca/sqlpower/architect/ddl/critic/impl/messages.properties
Fri Jun 25 13:32:09 2010
@@ -6,6 +6,10 @@
AlphaNumericSequenceNameCritic.name=Warns on non-alpha-numeric sequence
names.
AlphaNumericSequenceNameCritic.quickFixMessage=Sequence name not legal for
column {0}.
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.