-Delay exit until DB closed

git-svn-id: https://svn.apache.org/repos/asf/flex/whiteboard@1448561 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/fthomas/developerToolSuite/trunk/org.apache.flex.utilities.developerToolSuite.component-lib/src/main/flex/org/apache/flex/utilities/developerToolSuite/infrastructure/command/ExitUICommand.as b/fthomas/developerToolSuite/trunk/org.apache.flex.utilities.developerToolSuite.component-lib/src/main/flex/org/apache/flex/utilities/developerToolSuite/infrastructure/command/ExitUICommand.as
index 502fb84..241ce09 100644
--- a/fthomas/developerToolSuite/trunk/org.apache.flex.utilities.developerToolSuite.component-lib/src/main/flex/org/apache/flex/utilities/developerToolSuite/infrastructure/command/ExitUICommand.as
+++ b/fthomas/developerToolSuite/trunk/org.apache.flex.utilities.developerToolSuite.component-lib/src/main/flex/org/apache/flex/utilities/developerToolSuite/infrastructure/command/ExitUICommand.as
@@ -1,6 +1,7 @@
 package org.apache.flex.utilities.developerToolSuite.infrastructure.command {
     import flash.data.SQLResult;
     import flash.errors.SQLError;
+    import flash.events.SQLEvent;
 
     import mx.utils.ObjectUtil;
 
@@ -13,6 +14,7 @@
     public class ExitUICommand extends AbstractDBCommand {
 
         private var _msg:RequestExitApplicationMessage;
+        private var _terminateCommand:Function;
 
         public function execute(msg:RequestExitApplicationMessage):void {
             log.debug("Executing Command with message: " + ObjectUtil.toString(msg));
@@ -32,10 +34,12 @@
         override protected function result(result:SQLResult, terminateCommand:Boolean = true):void {
             super.result(result, false);
 
-            dispatch(new ApplicationExitReadyMessage());
+            db.addEventListener(SQLEvent.CLOSE, onDBClosed);
 
             if (terminateCommand) {
-                callback(new CommandCallBackResult(result));
+                _terminateCommand = function ():void {
+                    callback(new CommandCallBackResult(result));
+                }
             }
         }
 
@@ -48,5 +52,13 @@
                 callback(new CommandCallBackError(error.message, error.detailID));
             }
         }
+
+        private function onDBClosed(event:SQLEvent):void {
+            dispatch(new ApplicationExitReadyMessage());
+
+            if (_terminateCommand) {
+                _terminateCommand();
+            }
+        }
     }
 }
diff --git a/fthomas/developerToolSuite/trunk/org.apache.flex.utilities.developerToolSuite.executor-lib/src/main/flex/org/apache/flex/utilities/developerToolSuite/executor/application/database/ApplicationDB.as b/fthomas/developerToolSuite/trunk/org.apache.flex.utilities.developerToolSuite.executor-lib/src/main/flex/org/apache/flex/utilities/developerToolSuite/executor/application/database/ApplicationDB.as
index 1a5ba51..7de7fa0 100644
--- a/fthomas/developerToolSuite/trunk/org.apache.flex.utilities.developerToolSuite.executor-lib/src/main/flex/org/apache/flex/utilities/developerToolSuite/executor/application/database/ApplicationDB.as
+++ b/fthomas/developerToolSuite/trunk/org.apache.flex.utilities.developerToolSuite.executor-lib/src/main/flex/org/apache/flex/utilities/developerToolSuite/executor/application/database/ApplicationDB.as
@@ -19,6 +19,7 @@
     import flash.data.SQLResult;
     import flash.data.SQLStatement;
     import flash.errors.SQLError;
+    import flash.events.EventDispatcher;
     import flash.events.SQLErrorEvent;
     import flash.events.SQLEvent;
     import flash.filesystem.File;
@@ -29,7 +30,7 @@
 
     import org.apache.flex.utilities.developerToolSuite.executor.application.util.LogUtil;
 
-    public class ApplicationDB {
+    public class ApplicationDB extends EventDispatcher{
 
         public static const DB_VERSION:uint = 1;
 
@@ -82,6 +83,7 @@
 
         protected function closedHandler(event:SQLEvent):void {
             LOG.debug("the database was closed successfully");
+            dispatchEvent(event);
         }
 
         protected function errorHandler(event:SQLErrorEvent):void {
@@ -100,7 +102,7 @@
         }
 
         private function result(result:SQLResult):void {
-            _isBusy = false
+            _isBusy = false;
             if (_resultCallback) {
                 _resultCallback(result);
                 _resultCallback = null;
@@ -127,13 +129,5 @@
                 }
             }
         }
-
-        public function get isReady():Boolean {
-            return _isReady;
-        }
-
-        public function get isBusy():Boolean {
-            return _isBusy;
-        }
     }
 }
diff --git a/fthomas/developerToolSuite/trunk/org.apache.flex.utilities.developerToolSuite.executor-lib/src/main/flex/org/apache/flex/utilities/developerToolSuite/executor/infrastructure/command/AbstractDBCommand.as b/fthomas/developerToolSuite/trunk/org.apache.flex.utilities.developerToolSuite.executor-lib/src/main/flex/org/apache/flex/utilities/developerToolSuite/executor/infrastructure/command/AbstractDBCommand.as
index 1ecfdf9..21dcec3 100644
--- a/fthomas/developerToolSuite/trunk/org.apache.flex.utilities.developerToolSuite.executor-lib/src/main/flex/org/apache/flex/utilities/developerToolSuite/executor/infrastructure/command/AbstractDBCommand.as
+++ b/fthomas/developerToolSuite/trunk/org.apache.flex.utilities.developerToolSuite.executor-lib/src/main/flex/org/apache/flex/utilities/developerToolSuite/executor/infrastructure/command/AbstractDBCommand.as
@@ -27,7 +27,7 @@
 

     public class AbstractDBCommand {

 

-        protected var log:ILogger = LogUtil.getLogger(this);

+        protected var log:ILogger;

 

         [MessageDispatcher]

         public var dispatch:Function;

@@ -40,6 +40,10 @@
         protected var sql:String;

         protected var stmt:SQLStatement = new SQLStatement();

 

+        function AbstractDBCommand():void {

+            log = LogUtil.getLogger(this);

+        }

+

         protected function executeAsync():void {

             db.connect(prepareSql);

         }