Advertisement
Guest User

Untitled

a guest
May 20th, 2018
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.66 KB | None | 0 0
  1. package com.kcp.website.model
  2. {
  3. import flash.events.ErrorEvent;
  4. import flash.events.EventDispatcher;
  5. import flash.events.Event;
  6. import flash.net.NetConnection;
  7. import flash.net.Responder;
  8. import flash.net.URLLoader;
  9. import flash.net.URLRequest;
  10.  
  11. /**
  12. * ...
  13. * @author Alan Bryant
  14. */
  15. public class Model extends EventDispatcher
  16. {
  17. private var connection:NetConnection;
  18. private var responder:Responder;
  19. private var urlLoader:URLLoader;
  20. private var dataCollection:Object;
  21. private var serverError:Object;
  22. private var configXML:XML;
  23. private var navList:XMLList;
  24.  
  25. public function Model(configURL:String = "config.xml")
  26. {
  27. trace ( "new Model instance with config file passed in : " + configURL );
  28. //Setting default as "config.xml"
  29. urlLoader = new URLLoader();
  30. urlLoader.addEventListener(Event.COMPLETE, configLoaded);
  31. urlLoader.load(new URLRequest(configURL));
  32.  
  33. //Error handlers that are not yet defined...
  34. //urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
  35. //urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
  36. //urlLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
  37. }
  38. /**
  39. * Getter for data array
  40. */
  41. public function get pageCollection():Object
  42. {
  43. return dataCollection;
  44. }
  45. /**
  46. * Getter method returns named object
  47. * @param name
  48. * @return
  49. */
  50. public function getPageObjectByName(contentName:String):Object
  51. {
  52. if (dataCollection[contentName] == null)
  53. {
  54. throw(new ErrorEvent(ErrorEvent.ERROR));
  55. }
  56. return dataCollection[contentName]
  57. }
  58. /**
  59. * Getter for config xml object
  60. */
  61. public function get config():XML
  62. {
  63. return configXML;
  64. }
  65. /**
  66. * Returns an XMLList of nav(sec) elements
  67. */
  68. public function get navigationList():XMLList
  69. {
  70. return navList;
  71. }
  72. public function get navigationTitles():Array
  73. {
  74. var titleList:Array = new Array();
  75. for (var i in navList)
  76. {
  77. titleList.push(navList[i].@title);
  78. }
  79. return titleList;
  80. }
  81. /**
  82. * Getter for resultEvent error Object
  83. */
  84. public function get errorObject():Object
  85. {
  86. return serverError;
  87. }
  88. /**
  89. * Action taken when config xml has been loaded
  90. * @param event
  91. */
  92. private function configLoaded(event:Event):void
  93. {
  94. //navList = new Array();
  95. configXML = new XML(event.target.data);
  96. navList = configXML.child("sec");
  97. loadData(configXML.attribute("gateway"), configXML.attribute("call"));
  98. }
  99. /**
  100. * Get data from server
  101. * @param connectionURL
  102. * @param connectionClass
  103. */
  104. private function loadData(connectionURL:String, connectionClass:String):void
  105. {
  106. connection = new NetConnection();
  107. trace ( "ATTEMPTING TO CONNECT TO: " + connectionURL );
  108. connection.connect(connectionURL);
  109. responder = new Responder(onResult, onError);
  110. trace ( "MAKING CONNNECTION CLASS CALL : " + connectionClass );
  111. connection.call(connectionClass, responder, 1);
  112. }
  113. /**
  114. * Fires dispatch event when data has been collected
  115. * if the result event is successful
  116. * @param result
  117. */
  118. private function onResult(result:Object):void
  119. {
  120. //dataCollection = result;
  121. dataCollection = new Object();
  122. for (var i in result)
  123. {
  124. dataCollection[i.toUpperCase()] = result[i];
  125. }
  126.  
  127. dispatchEvent(new Event(Event.CHANGE));
  128. }
  129. /**
  130. * Reports any server errors if the result event is not successful
  131. * @param error
  132. */
  133. private function onError(error:Object):void
  134. {
  135. serverError = error;
  136. dispatchEvent(new ErrorEvent(ErrorEvent.ERROR));
  137. }
  138. }
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement