CFeatureRegistry.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  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_IS_NOT_FEATURE = -3;
  14. var FEATURE_ALREADY_REGISTERED = -2;
  15. var FEATURE_NOT_REGISTERED = -1;
  16. var FEATURE_FAILED_REGISTRATION = 0;
  17. var FEATURE_REGISTRATION_SUCCEEDED = 1;
  18. var FEATURE_FAILED_DEREGISTRATION = -4;
  19. var FEATURE_DEREGISTRATION_SUCCEEDED = 2;
  20. var FEATURE_REGISTERED_STATE = "registered";
  21. var FEATURE_DEREGISTERED_STATE = "deregistered";
  22. function CFeatureRegistry()
  23. {
  24. this.m_aRegisteredFeatures = new Array();
  25. this.m_aRegisteredFeaturesLaunchableStatus = new Array();
  26. this.m_aUnregisteredFeatures = new Array();
  27. };
  28. CFeatureRegistry.prototype.register = function (sFeatureName, oFeatureObject, bCanBeLaunched)
  29. {
  30. if (this.isRegistered(sFeatureName) === true)
  31. {
  32. return FEATURE_ALREADY_REGISTERED;
  33. }
  34. try
  35. {
  36. if (oFeatureObject instanceof AFeatureObject)
  37. {
  38. oFeatureObject.m_sFeatureState = FEATURE_REGISTERED_STATE;
  39. this.m_aRegisteredFeatures[sFeatureName] = oFeatureObject;
  40. this.m_aRegisteredFeaturesLaunchableStatus[sFeatureName] = bCanBeLaunched;
  41. }
  42. else
  43. {
  44. this.addToUnregisteredList(sFeatureName, oFeatureObject);
  45. return FEATURE_IS_NOT_FEATURE;
  46. }
  47. }
  48. catch (e)
  49. {
  50. return FEATURE_FAILED_REGISTRATION;
  51. }
  52. return FEATURE_REGISTRATION_SUCCEEDED;
  53. };
  54. CFeatureRegistry.prototype.addToUnregisteredList = function (sFeatureName, oFeatureObject)
  55. {
  56. try
  57. {
  58. this.m_aUnregisteredFeatures[sFeatureName] = oFeatureObject;
  59. }
  60. catch (e)
  61. {
  62. return false;
  63. }
  64. return true;
  65. };
  66. CFeatureRegistry.prototype.isRegistered = function (sFeatureName)
  67. {
  68. if (typeof this.m_aRegisteredFeatures[sFeatureName] != "undefined")
  69. {
  70. if (this.m_aRegisteredFeatures[sFeatureName] instanceof AFeatureObject)
  71. {
  72. return true;
  73. }
  74. else
  75. {
  76. this.deregister(sFeatureName, true);
  77. }
  78. }
  79. return false;
  80. };
  81. CFeatureRegistry.prototype.getAllRegisteredFeatures = function ()
  82. {
  83. return this.m_aRegisteredFeatures;
  84. };
  85. CFeatureRegistry.prototype.getAllUnregisteredFeatures = function ()
  86. {
  87. return this.m_aUnregisteredFeatures;
  88. };
  89. CFeatureRegistry.prototype.getRegisteredFeature = function (sFeatureName)
  90. {
  91. if (this.isRegistered(sFeatureName) === false)
  92. {
  93. return FEATURE_NOT_REGISTERED;
  94. }
  95. try
  96. {
  97. return this.m_aRegisteredFeatures[sFeatureName];
  98. }
  99. catch (e)
  100. {
  101. return FEATURE_FAILED_REGISTRATION;
  102. }
  103. };
  104. CFeatureRegistry.prototype.isFeatureLaunchable = function (sFeatureName)
  105. {
  106. if (this.isRegistered(sFeatureName) === false)
  107. {
  108. return false;
  109. }
  110. try
  111. {
  112. return this.m_aRegisteredFeaturesLaunchableStatus[sFeatureName];
  113. }
  114. catch (e)
  115. {
  116. return false;
  117. }
  118. };
  119. CFeatureRegistry.prototype.deregister = function (sFeatureName, bForceDeregistration)
  120. {
  121. if (!bForceDeregistration && this.isRegistered(sFeatureName) === false)
  122. {
  123. return FEATURE_NOT_REGISTERED;
  124. }
  125. try
  126. {
  127. this.m_aRegisteredFeatures[sFeatureName].m_sFeatureState = FEATURE_DEREGISTERED_STATE;
  128. this.addToUnregisteredList(sFeatureName, this.getRegisteredFeature(sFeatureName));
  129. this.m_aRegisteredFeatures = deleteArrayEntry(this.m_aRegisteredFeatures, sFeatureName);
  130. this.m_aRegisteredFeaturesLaunchableStatus = deleteArrayEntry(this.m_aRegisteredFeaturesLaunchableStatus, sFeatureName);
  131. }
  132. catch (e)
  133. {
  134. return FEATURE_FAILED_DEREGISTRATION;
  135. }
  136. return FEATURE_DEREGISTRATION_SUCCEEDED;
  137. };