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