package com.adobe.arise.database
{
    import flash.data.SQLStatement;
    import flash.data.SQLConnection;
    import flash.events.EventDispatcher;
    import flash.events.SQLErrorEvent;
    import flash.events.SQLEvent;

    public class DBOperation
    {
        protected var sql:XML;
        protected var connection:SQLConnection;
        protected var responder:DatabaseResponder;
        
        public function DBOperation(responder:DatabaseResponder, sql:XML, connection:SQLConnection)
        {
            this.responder = responder;
            this.sql = sql;
            this.connection = connection;
        }
        
        protected function getSQLStatement():SQLStatement
        {
            var stmt:SQLStatement = new SQLStatement();
            stmt.sqlConnection = this.connection;
            stmt.addEventListener(SQLErrorEvent.ERROR,
                function(e:SQLErrorEvent):void
                {
                    var dbe:DatabaseEvent = new DatabaseEvent(DatabaseEvent.ERROR_EVENT);
                    dbe.data = e.error;
                    responder.dispatchEvent(dbe);
                });
            return stmt;
        }

        protected function dispatchEmptyResultEvent(e:SQLEvent):void
        {
            var dbe:DatabaseEvent = new DatabaseEvent(DatabaseEvent.RESULT_EVENT);
            responder.dispatchEvent(dbe)
        }
    }
}