Revision: 3703
Author: [email protected]
Date: Fri Jul  9 08:12:54 2010
Log: NEW - bug 2458: Create Critic Manager
http://trillian.sqlpower.ca/bugzilla/show_bug.cgi?id=2458

The CriticManager now decides what objects get criticized instead of individual methods passing in a root. This lets the critic manager pass in objects that are not in the root but we want criticized in the future (like JDBC Data Source Types).
http://code.google.com/p/power-architect/source/detail?r=3703

Modified:
 /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/swingui/critic/CriticismObjectRenderer.java /trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticismTableModel.java

=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticManager.java Tue Jul 6 10:54:22 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/ddl/critic/CriticManager.java Fri Jul 9 08:12:54 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.JDBCDataSourceType;

 /**
* A collection of settings that defines what critics are enabled in the system
@@ -172,14 +173,34 @@
         addChild(newGrouping, criticGroupings.size());
         newGrouping.addChild(critic, 0);
     }
+
+    /**
+     * Do a full critique of all objects the critic manager currently knows
+     * are important to validate. These criticisms are immutable after they
+     * are created.
+     */
+    public List<Criticism> criticize() {
+        return criticize(null);
+    }

     /**
* Returns a list of criticisms calculated by critics in this manager based - * on the object passed to them. These criticisms are immutable after they
-     * are created.
+     * on the objects the manager knows to criticize. These criticisms are
+     * immutable after they are created.
+     *
+     * @param generatorClass
+ * The generator type we will be using to create DDL with. Will
+     *            limit some of the enabled critics to only use critics
+ * associated with this DDL generators of this type. If null all
+     *            enabled critics will be used.
      */
-    public List<Criticism> criticize(Object root) {
-        return criticize(null, root);
+ public List<Criticism> criticize(Class<? extends DDLGenerator> generatorClass) {
+        List<Criticism> criticisms = new ArrayList<Criticism>();
+ criticisms.addAll(criticize(generatorClass, getParent().getTargetDatabase())); + for (JDBCDataSourceType dsType : getParent().getSession().getDataSources().getDataSourceTypes()) {
+            criticisms.addAll(criticize(generatorClass, dsType));
+        }
+        return criticisms;
     }

     /**
@@ -193,7 +214,7 @@
* associated with this DDL generators of this type. If null all
      *            enabled critics will be used.
      */
- public List<Criticism> criticize(Class<? extends DDLGenerator> generatorClass, Object root) { + private List<Criticism> criticize(Class<? extends DDLGenerator> generatorClass, Object root) {
         List<Critic> critics = new ArrayList<Critic>();
         for (CriticGrouping grouping : criticGroupings) {
             if (!grouping.isEnabled()) continue;
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/action/ExportDDLAction.java Thu Jul 8 13:42:50 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/action/ExportDDLAction.java Fri Jul 9 08:12:54 2010
@@ -99,7 +99,7 @@
              */
private void checkErrorsAndGenerateDDL(final DDLGenerator ddlg) { List<Criticism> criticisms = session.getWorkspace().getCriticManager(). - criticize(ddlg.getClass(), session.getTargetDatabase());
+                    criticize(ddlg.getClass());
                 if (criticisms.isEmpty()) {
                     try {
                         generateAndDisplayDDL(ddlPanel, ddlg);
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticismObjectRenderer.java Tue Jul 6 07:14:52 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticismObjectRenderer.java Fri Jul 9 08:12:54 2010
@@ -25,6 +25,7 @@
 import javax.swing.table.DefaultTableCellRenderer;

 import ca.sqlpower.object.SPObject;
+import ca.sqlpower.sql.JDBCDataSourceType;
 import ca.sqlpower.sqlobject.SQLObject;

 /**
@@ -53,6 +54,8 @@
             return name;
         } else if (value instanceof SPObject) {
             return ((SPObject) value).getName();
+        } else if (value instanceof JDBCDataSourceType) {
+            return ((JDBCDataSourceType) value).getName();
         } else {
             return value.toString();
         }
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticismTableModel.java Thu Jul 8 12:27:26 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticismTableModel.java Fri Jul 9 08:12:54 2010
@@ -30,6 +30,7 @@
 import ca.sqlpower.architect.ddl.critic.CriticismListener;
 import ca.sqlpower.architect.ddl.critic.CriticAndSettings.Severity;
 import ca.sqlpower.architect.swingui.ArchitectSwingSession;
+import ca.sqlpower.sql.JDBCDataSourceType;
 import ca.sqlpower.sqlobject.SQLColumn;
 import ca.sqlpower.sqlobject.SQLIndex;
 import ca.sqlpower.sqlobject.SQLRelationship;
@@ -54,6 +55,8 @@
             return "Relationship";
         } else if (SQLIndex.class.equals(c)) {
             return "Index";
+        } else if (JDBCDataSourceType.class.equals(c)) {
+            return "Data Source Type";
         } else {
             return c.getSimpleName();
         }

Reply via email to