Revision: 3533
Author: [email protected]
Date: Tue May 11 10:41:53 2010
Log: NEW - bug 2803: Creating new dimension is not wrapped in a transaction
http://trillian.sqlpower.ca/bugzilla/show_bug.cgi?id=2803
http://code.google.com/p/power-architect/source/detail?r=3533
Modified:
/trunk/src/main/java/ca/sqlpower/architect/swingui/olap/action/CreateDimensionAction.java
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/swingui/olap/action/CreateDimensionAction.java
Tue Apr 13 12:48:01 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/swingui/olap/action/CreateDimensionAction.java
Tue May 11 10:41:53 2010
@@ -50,6 +50,7 @@
public void actionPerformed(ActionEvent e) {
Dimension dim = new Dimension();
+ dim.setParent(schema);
int count = 1;
while (!OLAPUtil.isNameUnique(schema, Dimension.class, "New
Dimension " + count)) {
@@ -80,28 +81,26 @@
}
@Override
- public DataEntryPanel place(Point p) throws SQLObjectException {
- try {
- session.getWorkspace().begin("Create a dimension");
- schema.addDimension(dp.getModel());
- playpen.selectNone();
- playpen.addPlayPenComponent(dp, p);
- dp.setSelected(true,SelectionEvent.SINGLE_SELECT);
- session.getWorkspace().commit();
- } catch (Throwable e) {
- session.getWorkspace().rollback("Error occurred: " +
e.toString());
- throw new RuntimeException(e);
- }
-
+ public DataEntryPanel place(final Point p) throws
SQLObjectException {
DimensionEditPanel editPanel = new
DimensionEditPanel(dp.getModel()) {
- @Override
- public void discardChanges() {
- schema.removeDimension(dp.getModel());
- }
-
@Override
public boolean applyChanges() {
- return super.applyChanges();
+ if (super.applyChanges()) {
+ try {
+ session.getWorkspace().begin("Create a
dimension");
+ schema.addDimension(dp.getModel());
+ playpen.selectNone();
+ playpen.addPlayPenComponent(dp, p);
+
dp.setSelected(true,SelectionEvent.SINGLE_SELECT);
+ session.getWorkspace().commit();
+ return true;
+ } catch (Throwable e) {
+ session.getWorkspace().rollback("Error
occurred: " + e.toString());
+ throw new RuntimeException(e);
+ }
+ } else {
+ return false;
+ }
}
};
return editPanel;