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;

Reply via email to