confighelper.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #include "confighelper.hpp"
  2. #include "XMLTags.h"
  3. #include "jlib.hpp"
  4. #include "jprop.hpp"
  5. #include "jptree.hpp"
  6. #include "build-config.h"
  7. #define STANDARD_CONFIG_BUILDSETFILE "buildset.xml"
  8. #define STANDARD_CONFIG_CONFIGXML_DIR "/componentfiles/configxml/"
  9. CConfigHelper::CConfigHelper() : m_pDefBldSet(NULL)
  10. {
  11. }
  12. CConfigHelper::~CConfigHelper()
  13. {
  14. }
  15. CConfigHelper* CConfigHelper::getInstance(const IPropertyTree *cfg, const char* esp_name)
  16. {
  17. static CConfigHelper *pConfigHelper = NULL;
  18. if (pConfigHelper != NULL)
  19. {
  20. return pConfigHelper;
  21. }
  22. if (cfg == NULL || esp_name == NULL)
  23. {
  24. return NULL;
  25. }
  26. pConfigHelper = new CConfigHelper();
  27. StringBuffer xpath;
  28. xpath.setf("%s/%s/%s[%s='%s']/%s",XML_TAG_SOFTWARE, XML_TAG_ESPPROCESS, XML_TAG_ESPSERVICE, XML_ATTR_NAME, esp_name, XML_TAG_LOCALCONFFILE);
  29. pConfigHelper->m_strConfFile = cfg->queryProp(xpath.str());
  30. xpath.clear().appendf("%s/%s/%s[%s='%s']/%s",XML_TAG_SOFTWARE, XML_TAG_ESPPROCESS, XML_TAG_ESPSERVICE, XML_ATTR_NAME, esp_name, XML_TAG_LOCALENVCONFFILE);
  31. pConfigHelper->m_strEnvConfFile = cfg->queryProp(xpath.str());
  32. if (pConfigHelper->m_strConfFile.length() > 0 && pConfigHelper->m_strEnvConfFile.length() > 0)
  33. {
  34. Owned<IProperties> pParams = createProperties(pConfigHelper->m_strConfFile);
  35. Owned<IProperties> pEnvParams = createProperties(pConfigHelper->m_strEnvConfFile);
  36. pConfigHelper->m_strConfigXMLDir = pEnvParams->queryProp(TAG_PATH);
  37. if ( pConfigHelper->m_strConfigXMLDir.length() == 0)
  38. {
  39. pConfigHelper->m_strConfigXMLDir = INSTALL_DIR;
  40. }
  41. pConfigHelper->m_strBuildSetFileName = pParams->queryProp(TAG_BUILDSET);
  42. pConfigHelper->m_strBuildSetFilePath.append(pConfigHelper->m_strConfigXMLDir).append(STANDARD_CONFIG_CONFIGXML_DIR).append( pConfigHelper->m_strBuildSetFileName.length() > 0 ? pConfigHelper->m_strBuildSetFileName : STANDARD_CONFIG_BUILDSETFILE);
  43. pConfigHelper->m_pDefBldSet.set(createPTreeFromXMLFile(pConfigHelper->m_strBuildSetFilePath.str()));
  44. }
  45. return pConfigHelper;
  46. }
  47. bool CConfigHelper::isInBuildSet(const char* comp_process_name, const char* comp_name) const
  48. {
  49. StringBuffer xpath;
  50. xpath.appendf("./%s/%s/%s[%s=\"%s\"][%s=\"%s\"]", XML_TAG_PROGRAMS, XML_TAG_BUILD, XML_TAG_BUILDSET, XML_ATTR_PROCESS_NAME, comp_process_name, XML_ATTR_NAME, comp_name);
  51. if (strcmp(XML_TAG_DIRECTORIES,comp_name) != 0 && m_pDefBldSet->hasProp(xpath.str()) == false)
  52. {
  53. return false;
  54. }
  55. else
  56. {
  57. return true;
  58. }
  59. }
  60. void CConfigHelper::getNewComponentListFromBuildSet(const IPropertyTree *pEnvTree, StringArray &sCompArray) const
  61. {
  62. if (pEnvTree == NULL || m_pDefBldSet == NULL)
  63. return;
  64. StringBuffer xpathBuildSetFile;
  65. xpathBuildSetFile.appendf("./%s/%s/%s", XML_TAG_PROGRAMS, XML_TAG_BUILD, XML_TAG_BUILDSET);
  66. Owned<IPropertyTreeIterator> iter = m_pDefBldSet->getElements(xpathBuildSetFile.str());
  67. ForEach(*iter)
  68. {
  69. StringBuffer xpath;
  70. IPropertyTree* pSetting = &iter->query();
  71. StringBuffer strBuildSetName(pSetting->queryProp(XML_ATTR_NAME));
  72. xpath.appendf("%s/%s/%s[%s=\"%s\"]", XML_TAG_PROGRAMS, XML_TAG_BUILD, XML_TAG_BUILDSET, XML_ATTR_NAME, strBuildSetName.str());
  73. if (pEnvTree->hasProp(xpath.str()) == false)
  74. {
  75. sCompArray.append(strBuildSetName.str());
  76. }
  77. }
  78. }
  79. void CConfigHelper::addNewComponentsFromBuildSetToEnv(IPropertyTree *pEnvTree)
  80. {
  81. if (pEnvTree == NULL)
  82. return;
  83. StringArray sCompArray;
  84. getNewComponentListFromBuildSet(pEnvTree, sCompArray);
  85. if (sCompArray.length() == 0)
  86. return;
  87. for (int idx = 0; idx < sCompArray.length(); idx++)
  88. {
  89. StringBuffer xpath;
  90. xpath.appendf("%s/%s/%s[%s=\"%s\"]", XML_TAG_PROGRAMS, XML_TAG_BUILD, XML_TAG_BUILDSET, XML_ATTR_NAME, (sCompArray.item(idx)));
  91. if (pEnvTree->hasProp(xpath.str()) == true)
  92. continue;
  93. pEnvTree->queryPropTree(XML_TAG_PROGRAMS"/"XML_TAG_BUILD)->addPropTree(XML_TAG_BUILDSET, createPTreeFromIPT(m_pDefBldSet->queryPropTree(xpath.str())));
  94. }
  95. }