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);

Reply via email to