package com.adobe.arise.database
{
    import flash.data.SQLConnection;
    import flash.data.SQLStatement;
    import flash.events.SQLEvent;
    
    public class InitializeDatabase
        extends DBOperation
    {
        public function InitializeDatabase(responder:DatabaseResponder, sql:XML, connection:SQLConnection)
        {
            super(responder, sql, connection);
        }
        
        public function execute():void
        {
            createFeedTable();
        }
        
        private function createFeedTable():void
        {
            var stmt:SQLStatement = this.getSQLStatement();
            stmt.addEventListener(SQLEvent.RESULT, createPostTable);
            stmt.text = sql.feeds.create;
            stmt.execute();            
        }
        
        private function createPostTable(e:SQLEvent):void
        {
            var stmt:SQLStatement = this.getSQLStatement();
            stmt.addEventListener(SQLEvent.RESULT, createAuthorTable);
            stmt.text = sql.posts.create;
            stmt.execute();            
        }

        private function createAuthorTable(e:SQLEvent):void
        {
            var stmt:SQLStatement = this.getSQLStatement();
            stmt.addEventListener(SQLEvent.RESULT, createTopicTable);
            stmt.text = sql.authors.create;
            stmt.execute();            
        }

        private function createTopicTable(e:SQLEvent):void
        {
            var stmt:SQLStatement = this.getSQLStatement();
            stmt.addEventListener(SQLEvent.RESULT, dispatchEmptyResultEvent);
            stmt.text = sql.topics.create;
            stmt.execute();            
        }
    }
}