hackedteam/rcs-console-library

View on GitHub
src/it/ht/rcs/console/search/controller/SearchManager.as

Summary

Maintainability
Test Coverage
package it.ht.rcs.console.search.controller
{
  import it.ht.rcs.console.DB;
  import it.ht.rcs.console.controller.ItemManager;
  import it.ht.rcs.console.search.model.SearchItem;
  
  import mx.rpc.events.FaultEvent;
  import mx.rpc.events.ResultEvent;

  public class SearchManager extends ItemManager
  {
    
    [Bindable]
    public var filter:Object = {};
    
    private static var _instance:SearchManager = new SearchManager();
    public static function get instance():SearchManager { return _instance; }
    
    override public function refresh():void
    {
      super.refresh();
      DB.instance.search.all(filter, onResult);
    }
    
    private function onResult(e:ResultEvent):void
    {
      clear();
      for each (var item:* in e.result.source)
        addItem(item);

      dispatchDataLoadedEvent();
    }
    
    // logic: when showing, if the item is present, replace it, if not, just add it.
    // if show returns an error the item is gone, delete it from list
    
    public function showItem(id:String, onResult:Function=null, onFault:Function=null):void
    {
      //default fault handler
      var faultHandler:Function = onFault != null ? onFault : 
      function(fe:FaultEvent):void {
        var current:SearchItem = getItem(id);
        if (current != null)
          removeItem(current);
      };
      
      DB.instance.search.show(id, function(re:ResultEvent):void {
        var item:SearchItem = re.result as SearchItem;
         if(item==null) return;
        var current:SearchItem = getItem(item._id);
        if (current != null)
          removeItem(current);
        addItem(item);
        if (onResult != null)
          onResult(item);
      }, faultHandler);
    }
    
  }

}