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()
));
/**