Revision: 3679
Author: [email protected]
Date: Tue Jul 6 11:49:13 2010
Log: NEW - bug 2458: Create Critic Manager
http://trillian.sqlpower.ca/bugzilla/show_bug.cgi?id=2458
Grouping the critic setting changes into one transaction to simplify the
persist calls.
http://code.google.com/p/power-architect/source/detail?r=3679
Modified:
/trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticManagerPanel.java
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticManagerPanel.java
Tue Jul 6 10:54:22 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/swingui/critic/CriticManagerPanel.java
Tue Jul 6 11:49:13 2010
@@ -55,12 +55,17 @@
*/
private final List<CriticGroupingPanel> groupingPanels = new
ArrayList<CriticGroupingPanel>();
+ /**
+ * The critic manager being updated by this panel.
+ */
+ private CriticManager criticManager;
+
public CriticManagerPanel(ArchitectSwingSession session) {
mainPanel = new JPanel();
DefaultFormBuilder builder = new DefaultFormBuilder(new
FormLayout("pref"));
- final CriticManager criticManager =
session.getWorkspace().getCriticManager();
+ criticManager = session.getWorkspace().getCriticManager();
for (CriticGrouping grouping : criticManager.getCriticGroupings())
{
CriticGroupingPanel criticGroupingPanel = new
CriticGroupingPanel(grouping);
builder.append(criticGroupingPanel.getPanel());
@@ -103,10 +108,18 @@
}
private boolean doApplyChanges() {
- for (CriticGroupingPanel panel : groupingPanels) {
- if (!panel.applyChanges()) {
- return false;
- }
+ try {
+ criticManager.begin("Updating manager by user");
+ for (CriticGroupingPanel panel : groupingPanels) {
+ if (!panel.applyChanges()) {
+ criticManager.rollback("Could not apply changes.");
+ return false;
+ }
+ }
+ criticManager.commit();
+ } catch (Throwable t) {
+ criticManager.rollback(t.getMessage());
+ throw new RuntimeException(t);
}
return true;
}