package com.modules.AcmeCreditUnion.view
{
import com.dl.modules.pipes.components.PipeAwareModule;
import com.dl.modules.pipes.events.ModuleEvents;
import com.dl.mortgageapp.MortgageAppEventNames;
import com.modules.AcmeCreditUnion.ModuleFacade;
import org.puremvc.as3.multicore.interfaces.INotification;
import org.puremvc.as3.multicore.patterns.observer.Notification;
import org.puremvc.as3.multicore.utilities.pipes.interfaces.IPipeMessage;
import org.puremvc.as3.multicore.utilities.pipes.messages.Message;
import org.puremvc.as3.multicore.utilities.pipes.plumbing.Junction;
import org.puremvc.as3.multicore.utilities.pipes.plumbing.JunctionMediator;
public class ModuleJunctionMediator extends JunctionMediator
{
public static const NAME:String = 'AcmeCreditUnionJunctionMediator';
private var moduleID:String;
public function ModuleJunctionMediator(moduleID:String)
{
super(NAME, new Junction());
this.moduleID = moduleID;
}
override public function listNotificationInterests():Array
{
var interests:Array = super.listNotificationInterests();
interests.push(MortgageAppEventNames.REQUEST_FOR_LOAN);
interests.push(ModuleFacade.QUOTE_GENERATED);
interests.push(ModuleEvents.UNLOAD_MODULE);
return interests;
}
override public function handleNotification(note:INotification):void
{
switch( note.getName() )
{
case ModuleFacade.QUOTE_GENERATED:
var quoteMessage:Message = new Message(MortgageAppEventNames.LOAN_QUOTE_READY,null,
new Notification(MortgageAppEventNames.LOAN_QUOTE_READY,note.getBody(),note.getType()));
junction.sendMessage(PipeAwareModule.MODULE_TO_APP_PIPE,quoteMessage);
break;
case ModuleEvents.UNLOAD_MODULE:
note.setBody(moduleID);
junction.sendMessage(PipeAwareModule.MODULE_TO_APP_PIPE,new Message(MortgageAppEventNames.UNLOAD_MODULE,null,note));
break;
default:
super.handleNotification(note);
}
}
override public function handlePipeMessage( message:IPipeMessage ):void
{
if(message.getBody() is INotification)
{
var note:INotification = message.getBody() as INotification;
switch(note.getName())
{
case MortgageAppEventNames.REQUEST_FOR_LOAN:
sendNotification(ModuleFacade.QUOTE_REQUESTED,note.getBody(),note.getType());
break;
}
}
}
}
}