package com.adobe.cairngorm.samples.dashboard.command
{
    import com.adobe.cairngorm.business.Responder;
    import com.adobe.cairngorm.commands.Command;
    import com.adobe.cairngorm.control.CairngormEvent;
    import com.adobe.cairngorm.samples.dashboard.business.StockMarketDelegate;
    import com.adobe.cairngorm.samples.dashboard.events.GetStockQuoteEvent;
    import com.adobe.cairngorm.samples.dashboard.model.ModelLocator;
    import com.adobe.cairngorm.samples.dashboard.model.StockQuote;

    public class GetStockQuoteCommand implements Command, Responder
    {
        private var model : ModelLocator = ModelLocator.getInstance();
         private var stockQuote : StockQuote = model.stockQuote;
         
         public function execute( event : CairngormEvent ) : void
       {
          stockQuote.isPending = true;
             
           var stockQuoteEvent : GetStockQuoteEvent = GetStockQuoteEvent( event );          
          var symbol : String = stockQuoteEvent.symbol;
          var delegate : StockMarketDelegate = new StockMarketDelegate( this );
          delegate.getQuoteForSymbol( symbol );    
       }
        
       public function onResult( event : * = null ) : void
       {
            //for demo purpose: event would normally be an event object of remote service result.            
            stockQuote.lastStockQuote = event as Number;            
            stockQuote.isPending = false;
            stockQuote.statusMessage = "";
       }
        
       public function onFault( event : * = null ) : void
       {
          stockQuote.lastStockQuote = NaN;
           stockQuote.statusMessage = "Quote retrieval error.";
           stockQuote.isPending = false;
       }
    }
}