Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.kcp.website.model
- {
- import flash.events.ErrorEvent;
- import flash.events.EventDispatcher;
- import flash.events.Event;
- import flash.net.NetConnection;
- import flash.net.Responder;
- import flash.net.URLLoader;
- import flash.net.URLRequest;
- /**
- * ...
- * @author Alan Bryant
- */
- public class Model extends EventDispatcher
- {
- private var connection:NetConnection;
- private var responder:Responder;
- private var urlLoader:URLLoader;
- private var dataCollection:Object;
- private var serverError:Object;
- private var configXML:XML;
- private var navList:XMLList;
- public function Model(configURL:String = "config.xml")
- {
- trace ( "new Model instance with config file passed in : " + configURL );
- //Setting default as "config.xml"
- urlLoader = new URLLoader();
- urlLoader.addEventListener(Event.COMPLETE, configLoaded);
- urlLoader.load(new URLRequest(configURL));
- //Error handlers that are not yet defined...
- //urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
- //urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
- //urlLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
- }
- /**
- * Getter for data array
- */
- public function get pageCollection():Object
- {
- return dataCollection;
- }
- /**
- * Getter method returns named object
- * @param name
- * @return
- */
- public function getPageObjectByName(contentName:String):Object
- {
- if (dataCollection[contentName] == null)
- {
- throw(new ErrorEvent(ErrorEvent.ERROR));
- }
- return dataCollection[contentName]
- }
- /**
- * Getter for config xml object
- */
- public function get config():XML
- {
- return configXML;
- }
- /**
- * Returns an XMLList of nav(sec) elements
- */
- public function get navigationList():XMLList
- {
- return navList;
- }
- public function get navigationTitles():Array
- {
- var titleList:Array = new Array();
- for (var i in navList)
- {
- titleList.push(navList[i].@title);
- }
- return titleList;
- }
- /**
- * Getter for resultEvent error Object
- */
- public function get errorObject():Object
- {
- return serverError;
- }
- /**
- * Action taken when config xml has been loaded
- * @param event
- */
- private function configLoaded(event:Event):void
- {
- //navList = new Array();
- configXML = new XML(event.target.data);
- navList = configXML.child("sec");
- loadData(configXML.attribute("gateway"), configXML.attribute("call"));
- }
- /**
- * Get data from server
- * @param connectionURL
- * @param connectionClass
- */
- private function loadData(connectionURL:String, connectionClass:String):void
- {
- connection = new NetConnection();
- trace ( "ATTEMPTING TO CONNECT TO: " + connectionURL );
- connection.connect(connectionURL);
- responder = new Responder(onResult, onError);
- trace ( "MAKING CONNNECTION CLASS CALL : " + connectionClass );
- connection.call(connectionClass, responder, 1);
- }
- /**
- * Fires dispatch event when data has been collected
- * if the result event is successful
- * @param result
- */
- private function onResult(result:Object):void
- {
- //dataCollection = result;
- dataCollection = new Object();
- for (var i in result)
- {
- dataCollection[i.toUpperCase()] = result[i];
- }
- dispatchEvent(new Event(Event.CHANGE));
- }
- /**
- * Reports any server errors if the result event is not successful
- * @param error
- */
- private function onError(error:Object):void
- {
- serverError = error;
- dispatchEvent(new ErrorEvent(ErrorEvent.ERROR));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement