CFeatureManager.js 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. /****************************************************************
  2. ** Licensed Materials - Property of IBM
  3. **
  4. ** BI and PM: qs
  5. **
  6. ** (C) Copyright IBM Corp. 2001, 2015
  7. **
  8. ** US Government Users Restricted Rights - Use, duplication or
  9. ** disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  10. *****************************************************************/
  11. // Copyright (C) 2008 Cognos ULC, an IBM Company. All Rights Reserved.
  12. // Cognos and the Cognos logo are trademarks of Cognos ULC (formerly Cognos Incorporated) in the United States and/or other countries. IBM and the IBM logo are trademarks of International Business Machines Corporation in the United States, or other countries, or both. Other company, product, or service names may be trademarks or service marks of others.
  13. var FEATURE_SETUP_FAILED = -2;
  14. var FEATURE_SETUP_ERROR_STATE = -1;
  15. var FEATURE_SETUP_WITHOUT_DIALOG = 0;
  16. var FEATURE_SETUP_REQUIRES_DIALOG = 1;
  17. var FEATURE_SETUP_REQUIRES_QOS = 2;
  18. function CFeatureManager()
  19. {
  20. this.m_oFeatureRegistry = new CFeatureRegistry();
  21. this.m_oFormMgr = goApplicationManager.getFormManager();
  22. this.m_oFeatureObjFactory = new CFeatureObjectFactory();
  23. this.m_aFeatureLaunchStack = new Array();
  24. };
  25. CFeatureManager.prototype.getFeatureRegistry = function ()
  26. {
  27. return this.m_oFeatureRegistry;
  28. };
  29. CFeatureManager.prototype.getFeatureObjectFactory = function ()
  30. {
  31. return this.m_oFeatureObjFactory;
  32. };
  33. CFeatureManager.prototype.getFeatureLaunchStack = function ()
  34. {
  35. return this.m_aFeatureLaunchStack;
  36. };
  37. CFeatureManager.prototype.getAllFeatureDetailsInStack = function (iFeatureIdx)
  38. {
  39. var aFeatureLaunchStack = this.getFeatureLaunchStack();
  40. if (typeof iFeatureIdx != "number")
  41. {
  42. iFeatureIdx = aFeatureLaunchStack.length - 1;
  43. }
  44. var aFeatureDetails = new Array();
  45. if (this.m_aFeatureLaunchStack.length > 0)
  46. {
  47. var sCurrentFeatureName = aFeatureLaunchStack[iFeatureIdx];
  48. var idxFeature;
  49. var oFeatureObject = this.getFeatureRegistry().getRegisteredFeature(sCurrentFeatureName);
  50. for (idxFeature in oFeatureObject)
  51. {
  52. var idxFeatureDetails = aFeatureDetails.length;
  53. aFeatureDetails[idxFeatureDetails] = new Array();
  54. aFeatureDetails[idxFeatureDetails][0] = typeof oFeatureObject[idxFeature];
  55. aFeatureDetails[idxFeatureDetails][1] = idxFeature.toString();
  56. if (typeof oFeatureObject[idxFeature] == "function")
  57. {
  58. aFeatureDetails[idxFeatureDetails][2] = "[Function code]";
  59. }
  60. else
  61. {
  62. aFeatureDetails[idxFeatureDetails][2] = oFeatureObject[idxFeature];
  63. }
  64. }
  65. }
  66. return aFeatureDetails;
  67. };
  68. CFeatureManager.prototype.launchFeature = function (sFeatureName, aFeatureParams)
  69. {
  70. if (this.getFeatureRegistry().isRegistered(sFeatureName) === true && this.getFeatureRegistry().isFeatureLaunchable(sFeatureName) === true)
  71. {
  72. var iFeatureState = this.setupFeature(sFeatureName, aFeatureParams);
  73. if (iFeatureState !== FEATURE_SETUP_REQUIRES_QOS)
  74. {
  75. if (iFeatureState == FEATURE_SETUP_WITHOUT_DIALOG || iFeatureState == FEATURE_SETUP_REQUIRES_DIALOG)
  76. {
  77. this.m_aFeatureLaunchStack[this.m_aFeatureLaunchStack.length] = sFeatureName;
  78. }
  79. if (iFeatureState == FEATURE_SETUP_REQUIRES_DIALOG)
  80. {
  81. if (goApplicationManager)
  82. {
  83. goApplicationManager.getWindowManager().showDialogFrame();
  84. }
  85. var aFeatureDefinedParams = this.retrieveFeatureParams(sFeatureName);
  86. if (this.m_oFormMgr !== null)
  87. {
  88. var oNewForm = this.m_oFormMgr.setupDialogForm(aFeatureDefinedParams, true);
  89. if (oNewForm !== null)
  90. {
  91. var oldUnload = window.onbeforeunload;
  92. window.onbeforeunload = null;
  93. this.m_oFormMgr.submitForm(oNewForm);
  94. window.onbeforeunload = oldUnload;
  95. }
  96. }
  97. }
  98. }
  99. }
  100. };
  101. CFeatureManager.prototype.setupFeature = function (sFeatureName, aFeatureParams)
  102. {
  103. try
  104. {
  105. var oRegdFeature = this.getFeatureRegistry().getRegisteredFeature(sFeatureName);
  106. if (oRegdFeature instanceof AFeatureObject)
  107. {
  108. if (oRegdFeature.isQualityOfServiceRequired() === true)
  109. {
  110. if (cfgSize("CalcFns") === 0 || cfgGet("currentMetadataFunctionOperations") != "all")
  111. {
  112. this.setupQoSForFeature(sFeatureName, aFeatureParams);
  113. fetchMetadataFunctionList();
  114. return FEATURE_SETUP_REQUIRES_QOS;
  115. }
  116. oRegdFeature.setQualityOfServiceStatus(false);
  117. }
  118. var aNewFeatureParams = [];
  119. if (typeof aFeatureParams == "string")
  120. {
  121. aNewFeatureParams.push(aFeatureParams);
  122. }
  123. else if (typeof aFeatureParams != "undefined" && aFeatureParams !== null)
  124. {
  125. for (var iParamNum = 0; iParamNum < aFeatureParams.length; iParamNum++)
  126. {
  127. aNewFeatureParams.push(aFeatureParams[iParamNum]);
  128. }
  129. }
  130. oRegdFeature.setup(aNewFeatureParams);
  131. if (oRegdFeature.isInErrorState())
  132. {
  133. oRegdFeature.processErrorState();
  134. return FEATURE_SETUP_ERROR_STATE;
  135. }
  136. else if (oRegdFeature.isDialogRequired())
  137. {
  138. return FEATURE_SETUP_REQUIRES_DIALOG;
  139. }
  140. else if (oRegdFeature.isSafeWithoutDialog())
  141. {
  142. oRegdFeature.proceedWithoutDialog();
  143. return FEATURE_SETUP_WITHOUT_DIALOG;
  144. }
  145. }
  146. }
  147. catch (e)
  148. {
  149. if (typeof gQSDebug != "undefined" && gQSDebug)
  150. {
  151. alert(e);
  152. }
  153. }
  154. return FEATURE_SETUP_FAILED;
  155. };
  156. CFeatureManager.prototype.setupQoSForFeature = function (sFeatureName, aFeatureParams)
  157. {
  158. var oAppManager = null;
  159. if (typeof goApplicationManager != "undefined" && goApplicationManager instanceof CApplicationManager)
  160. {
  161. oAppManager = goApplicationManager;
  162. }
  163. else if (typeof goDialogManager != "undefined" && goDialogManager instanceof CDialogManager)
  164. {
  165. oAppManager = goDialogManager.getApplicationManager();
  166. }
  167. else if (typeof goWindowManager != "undefined" && goWindowManager instanceof CWindowManager)
  168. {
  169. oAppManager = goWindowManager.getApplicationManager();
  170. }
  171. if (oAppManager !== null)
  172. {
  173. oAppManager.add("featureWaitingToLaunch", sFeatureName);
  174. oAppManager.add("featureWaitingToLaunchParams", aFeatureParams);
  175. }
  176. };
  177. CFeatureManager.prototype.retrieveFeatureParams = function (sFeatureName)
  178. {
  179. var aFeatureParams = new Array();
  180. try
  181. {
  182. var oRegdFeature = this.getFeatureRegistry().getRegisteredFeature(sFeatureName);
  183. if (oRegdFeature instanceof AFeatureObject)
  184. {
  185. aFeatureParams = oRegdFeature.getDialogParameters();
  186. }
  187. }
  188. catch (e)
  189. {
  190. }
  191. return aFeatureParams;
  192. };
  193. CFeatureManager.prototype.executeFeature = function (sFeatureName, aFeatureParams)
  194. {
  195. try
  196. {
  197. var oRegdFeature = this.getFeatureRegistry().getRegisteredFeature(sFeatureName);
  198. if (oRegdFeature instanceof AFeatureObject)
  199. {
  200. return oRegdFeature.execute(aFeatureParams);
  201. }
  202. }
  203. catch (e)
  204. {
  205. }
  206. return false;
  207. };
  208. CFeatureManager.prototype.registerFeatures = function ()
  209. {
  210. var aFeatures = goIncludedFeatures.keys();
  211. for (var idxFeature = 0; idxFeature < aFeatures.length; idxFeature++)
  212. {
  213. var sFeatureName = aFeatures[idxFeature];
  214. var oFeatureObject = this.getFeatureObjectFactory().getFeatureObject(sFeatureName);
  215. if (oFeatureObject instanceof AFeatureObject)
  216. {
  217. this.getFeatureRegistry().register(sFeatureName, oFeatureObject, goIncludedFeatures.get(sFeatureName));
  218. }
  219. else
  220. {
  221. this.getFeatureRegistry().addToUnregisteredList(sFeatureName, oFeatureObject);
  222. }
  223. }
  224. aFeatures = goExcludedFeatures.keys();
  225. for (var idxFeature = 0; idxFeature < aFeatures.length; idxFeature++)
  226. {
  227. var sFeatureName = aFeatures[idxFeature];
  228. var oFeatureObject = this.getFeatureObjectFactory().getFeatureObject(sFeatureName);
  229. this.getFeatureRegistry().addToUnregisteredList(sFeatureName, oFeatureObject);
  230. }
  231. };