Added capability to store/load the DOM in one go !

SVN:trunk[1979]
This commit is contained in:
Denis Flaven
2012-05-07 09:10:32 +00:00
parent 44c2beff51
commit c4ffbf1798

View File

@@ -109,10 +109,10 @@ class ModelFactory
protected $sRootDir;
protected $oDOMDocument;
protected $oRoot;
protected $oModules;
protected $oClasses;
protected $oMenus;
static protected $aLoadedClasses;
static protected $aLoadedMenus;
static protected $aWellKnownParents = array('DBObject', 'CMDBObject','cmdbAbstractObject');
// static protected $aWellKnownMenus = array('DataAdministration', 'Catalogs', 'ConfigManagement', 'Contact', 'ConfigManagementCI', 'ConfigManagement:Shortcuts', 'ServiceManagement');
static protected $aLoadedModules;
@@ -125,6 +125,8 @@ class ModelFactory
$this->oDOMDocument = new MFDocument();
$this->oRoot = $this->oDOMDocument->CreateElement('itop_design');
$this->oDOMDocument->AppendChild($this->oRoot);
$this->oModules = $this->oDOMDocument->CreateElement('loaded_modules');
$this->oRoot->AppendChild($this->oModules);
$this->oClasses = $this->oDOMDocument->CreateElement('classes');
$this->oRoot->AppendChild($this->oClasses);
foreach (self::$aWellKnownParents as $sWellKnownParent)
@@ -141,8 +143,6 @@ class ModelFactory
$oElement = $this->oDOMDocument->CreateElement($sElementName);
$this->oRoot->AppendChild($oElement);
}
self::$aLoadedClasses = array();
self::$aLoadedMenus = array();
self::$aLoadedModules = array();
self::$aLoadErrors = array();
@@ -158,6 +158,26 @@ class ModelFactory
$oNode->Dump();
}
public function LoadFromFile($sCacheFile)
{
$this->oDOMDocument->load($sCacheFile);
$this->oRoot = $this->oDOMDocument->firstChild;
$this->oModules = $this->oRoot->getElementsByTagName('loaded_modules')->item(0);
self::$aLoadedModules = array();
foreach($this->oModules->getElementsByTagName('module') as $oModuleNode)
{
$sId = $oModuleNode->getAttribute('id');
$sRootDir = $oModuleNode->GetChildText('root_dir');
$sLabel = $oModuleNode->GetChildText('label');
self::$aLoadedModules[] = new MFModule($sId, $sRootDir, $sLabel);
}
}
public function SaveToFile($sCacheFile)
{
$this->oDOMDocument->save($sCacheFile);
}
/**
* To progressively replace LoadModule
* @param xxx xxx
@@ -254,6 +274,14 @@ class ModelFactory
$sModuleName = $oModule->GetName();
$aClasses = array();
self::$aLoadedModules[] = $oModule;
// For persistence in the cache
$oModuleNode = $this->oDOMDocument->CreateElement('module');
$oModuleNode->setAttribute('id', $oModule->GetId());
$oModuleNode->AppendChild($this->oDOMDocument->CreateElement('root_dir', $oModule->GetRootDir()));
$oModuleNode->AppendChild($this->oDOMDocument->CreateElement('label', $oModule->GetLabel()));
$this->oModules->AppendChild($oModuleNode);
foreach($aDataModels as $sXmlFile)
{
$oDocument = new MFDocument();