Revision: 3731
Author: [email protected]
Date: Wed Jul 14 08:59:53 2010
Log: NEW - bug 2458: Create Critic Manager
http://trillian.sqlpower.ca/bugzilla/show_bug.cgi?id=2458
Added a critic that will prompt users for more information if there are
missing mandatory fields in a data source.
http://code.google.com/p/power-architect/source/detail?r=3731
Modified:
/trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticAndSettings.java
/trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticFix.java
/trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticManager.java
/trunk/src/main/java/ca/sqlpower/architect/swingui/action/ExportDDLAction.java
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticAndSettings.java
Tue Jul 13 15:38:56 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticAndSettings.java
Wed Jul 14 08:59:53 2010
@@ -22,6 +22,7 @@
import java.util.Collections;
import java.util.List;
+import ca.sqlpower.architect.ArchitectProject;
import ca.sqlpower.architect.ddl.DB2DDLGenerator;
import ca.sqlpower.architect.ddl.DDLGenerator;
import ca.sqlpower.architect.ddl.H2DDLGenerator;
@@ -32,6 +33,7 @@
import ca.sqlpower.architect.ddl.SQLServer2000DDLGenerator;
import ca.sqlpower.architect.ddl.SQLServer2005DDLGenerator;
import ca.sqlpower.architect.ddl.SQLServerDDLGenerator;
+import ca.sqlpower.architect.swingui.ArchitectSwingSession;
import ca.sqlpower.object.AbstractSPObject;
import ca.sqlpower.object.SPObject;
import ca.sqlpower.object.annotation.Accessor;
@@ -247,4 +249,23 @@
}
super.setParent(parent);
}
-}
+
+ /**
+ * Walks up the tree to the session and returns it as a swing session.
The
+ * critic system only exists in the swing version of the Architect as
it is
+ * not core functionality.
+ *
+ * @return The session as a swing session if the critic is connected
to a
+ * session. This may return null if the critic is not
connected.
+ */
+ protected ArchitectSwingSession getSession() {
+ CriticGrouping grouping = getParent();
+ if (grouping == null) return null;
+ CriticManager manager = grouping.getParent();
+ if (manager == null) return null;
+ ArchitectProject project = manager.getParent();
+ if (project == null) return null;
+ ArchitectSwingSession session = (ArchitectSwingSession)
project.getSession();
+ return session;
+ }
+}
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticFix.java
Wed Jul 14 07:10:07 2010
+++ /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticFix.java
Wed Jul 14 08:59:53 2010
@@ -34,7 +34,7 @@
* Fixes of this type display some kind of dialog the user must
* interact with to fix the criticism.
*/
- DIALOG_FIX;
+ PROMPT_FIX;
}
/**
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticManager.java
Fri Jul 9 08:12:54 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticManager.java
Wed Jul 14 08:59:53 2010
@@ -60,6 +60,7 @@
import ca.sqlpower.object.annotation.NonBound;
import ca.sqlpower.object.annotation.NonProperty;
import ca.sqlpower.object.annotation.Transient;
+import ca.sqlpower.sql.JDBCDataSource;
import ca.sqlpower.sql.JDBCDataSourceType;
/**
@@ -200,6 +201,9 @@
for (JDBCDataSourceType dsType :
getParent().getSession().getDataSources().getDataSourceTypes()) {
criticisms.addAll(criticize(generatorClass, dsType));
}
+ for (JDBCDataSource ds :
getParent().getSession().getDataSources().getConnections()) {
+ criticisms.addAll(criticize(generatorClass, ds));
+ }
return criticisms;
}
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/swingui/action/ExportDDLAction.java
Mon Jul 12 08:21:11 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/swingui/action/ExportDDLAction.java
Wed Jul 14 08:59:53 2010
@@ -40,8 +40,10 @@
import ca.sqlpower.architect.ddl.ConflictResolver;
import ca.sqlpower.architect.ddl.DDLGenerator;
import ca.sqlpower.architect.ddl.DDLStatement;
+import ca.sqlpower.architect.ddl.critic.CriticFix;
import ca.sqlpower.architect.ddl.critic.Criticism;
import ca.sqlpower.architect.ddl.critic.CriticismBucket;
+import ca.sqlpower.architect.ddl.critic.CriticFix.FixType;
import ca.sqlpower.architect.swingui.ASUtils;
import ca.sqlpower.architect.swingui.ArchitectFrame;
import ca.sqlpower.architect.swingui.ArchitectSwingSession;
@@ -138,9 +140,14 @@
warningDialog.dispose();
for (Criticism criticism :
bucket.getCriticisms()) {
if (!criticism.getFixes().isEmpty()) {
- //applying the first one each time as
there is no
- //decision what to apply by the user
for this case
- criticism.getFixes().get(0).apply();
+ for (CriticFix fix :
criticism.getFixes()) {
+ if
(fix.getFixType().equals(FixType.QUICK_FIX)) {
+ fix.apply();
+ //applying the first quick fix
each time as there is no
+ //decision what to apply by
the user for this case
+ break;
+ }
+ }
}
}
checkErrorsAndGenerateDDL(ddlg);