Revision: 3583
Author: [email protected]
Date: Tue Jun  1 13:03:12 2010
Log: Moved the SourceObjectIntegrityWatcher's pre-removal event into a magic check, to prevent the user from being prompted for a db removal from the server.
http://code.google.com/p/power-architect/source/detail?r=3583

Modified:
/trunk/src/main/java/ca/sqlpower/architect/SourceObjectIntegrityWatcher.java

=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/SourceObjectIntegrityWatcher.java Wed Feb 25 08:58:17 2009 +++ /trunk/src/main/java/ca/sqlpower/architect/SourceObjectIntegrityWatcher.java Tue Jun 1 13:03:12 2010
@@ -38,23 +38,27 @@
Messages.getString("cancel")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
         for (SQLObject so : e.getChildren()) {
             SQLDatabase db = (SQLDatabase) so;
-            try {
- List<SQLColumn> refs = SQLObjectUtils.findColumnsSourcedFromDatabase(session.getTargetDatabase(), db);
-                if (!refs.isEmpty()) {
- UserPromptResponse response = up.promptUser(refs.size(), db.getName());
-                    if (response == UserPromptResponse.OK) {
-                        // disconnect those columns' source columns
-                        for (SQLColumn col : refs) {
-                            col.setSourceColumn(null);
-                        }
-                    } else if (response == UserPromptResponse.NOT_OK) {
-                        e.veto();
-                    } else if (response == UserPromptResponse.CANCEL) {
-                        e.veto();
-                    }
-                }
-            } catch (SQLObjectException ex) {
-                throw new SQLObjectRuntimeException(ex);
+ // Setting source columns is a magical side effect, and the user
+            // shouldn't be prompted if the change came from the server.
+            if (db.isMagicEnabled()) {
+                try {
+ List<SQLColumn> refs = SQLObjectUtils.findColumnsSourcedFromDatabase(session.getTargetDatabase(), db);
+                    if (!refs.isEmpty()) {
+ UserPromptResponse response = up.promptUser(refs.size(), db.getName());
+                        if (response == UserPromptResponse.OK) {
+                            // disconnect those columns' source columns
+                            for (SQLColumn col : refs) {
+                                col.setSourceColumn(null);
+                            }
+                        } else if (response == UserPromptResponse.NOT_OK) {
+                            e.veto();
+                        } else if (response == UserPromptResponse.CANCEL) {
+                            e.veto();
+                        }
+                    }
+                } catch (SQLObjectException ex) {
+                    throw new SQLObjectRuntimeException(ex);
+                }
             }
         }
     }

Reply via email to