contentRootId = 'catalog-treeRootNode'; $this->contentRootTag = 'catalogList'; $this->attributes = array('name' => '', 'intervals' => ''); // + 'parameters' $this->optionalAttributes = array(); $this->objTagName = 'catalog'; $this->id_prefix = 'cat_'; // 'tt_' ? if (!file_exists($this->xmlName)) { $this->createDom(); $this->xp = new domxpath($this->contentDom); } } public function getTmpObject($folderId, $name, $onlyDescription = false) { $filePath = USERWORKINGDIR.$folderId.'/'.$name.'.xml'; if (!file_exists($filePath)) return array('error' => 'Cannot find result file'); $dom = new DomDocument('1.0'); $dom->formatOutput = true; if (!$dom -> load($filePath)) return array('error' => 'Cannot load result file'); $nameNodes = $dom->getElementsByTagName('name'); if ($nameNodes->length > 0) $attributesToReturn['name'] = $nameNodes->item(0)->nodeValue; $descNodes = $dom->getElementsByTagName('description'); if ($descNodes->length > 0) $attributesToReturn['description'] = $descNodes->item(0)->nodeValue; $creatNodes = $dom->getElementsByTagName('created'); if ($creatNodes->length > 0) $attributesToReturn['created'] = $creatNodes->item(0)->nodeValue; $histNodes = $dom->getElementsByTagName('history'); if ($histNodes->length > 0) $attributesToReturn['history'] = $histNodes->item(0)->nodeValue; $attributesToReturn['objName'] = $name; $attributesToReturn['folderId'] = $folderId; $attributesToReturn['success'] = true; if (!$onlyDescription) { $intNodes = $dom->getElementsByTagName('intervals'); foreach ($intNodes as $intNode) { $startNodes = $intNode->getElementsByTagName('start'); if ($startNodes->length <= 0) return array('error' => 'Error detected in result file'); $stopNodes = $intNode->getElementsByTagName('stop'); if ($stopNodes->length <= 0) return array('error' => 'Error detected in result file'); // for catalog $paramNodes = $intNode->getElementsByTagName('param'); $params = array(); if ($paramNodes->length > 0) foreach ( $paramNodes as $paramNode ) $params[] = $paramNode->nodeValue; $attributesToReturn['intervals'][] = array('start' => $startNodes->item(0)->nodeValue, 'stop' => $stopNodes->item(0)->nodeValue, 'paramTable' => $params); } // for catalog $paramsNodes = $dom->getElementsByTagName('parameter'); if ($paramsNodes->length > 0){ $paramsArray = array(); foreach ($paramsNodes as $paramNode) { $oneParam = array(); foreach ($paramNode->attributes as $attr) $oneParam[$attr->nodeName] = $attr->nodeValue; if (substr($paramNode->getAttribute('id'),0,8) == 'stat_cov') { $oneParam['size'] = '1'; $oneParam['name'] = 'Flag'; } $paramsArray[] = $oneParam; } $attributesToReturn['success'] = true; $attributesToReturn['parameters'] = $paramsArray; } else return array('error' => 'No information on parameters in result file'); } return $attributesToReturn; } // public function loadIntervalsFromTT($id,$typeTT,$start = NULL, $limit = NULL) // { // // if ($typeTT == 'sharedtimeTable') { // $pathid = SHAREDPATH.'TT/'.$id; // } // else { // $pathid = USERTTDIR.$id; // } // // //load intervals from TT id // if (!file_exists($pathid.'.xml')) // return array('success' => false, 'message' => "Cannot find TT file ".$id); // // $this->objectDom -> load($pathid.'.xml'); // // if (!($objToGet = $this->objectDom->getElementById($id))) // return array('success' => false, 'message' => NO_SUCH_ID." ".$id); // // $xpath = new DOMXPath($this->objectDom); // $intervals = $xpath->query('//intervals'); // // $result = array(); // // if (!isset($start) || !isset($limit)) // { // foreach ($intervals as $interval) // { // $startTime = $interval->getElementsByTagName('start')->item(0)->nodeValue; // $stopTime = $interval->getElementsByTagName('stop')->item(0)->nodeValue; // array_push($result, array('start' => $startTime, 'stop' => $stopTime)); // } // } // else // { // for ($i = 0; $i < $limit; ++$i) // { // if ($start+$i >= $intervals->length) // break; // $startTime = $intervals->item($start+$i)->getElementsByTagName('start')->item(0)->nodeValue; // $stopTime = $intervals->item($start+$i)->getElementsByTagName('stop')->item(0)->nodeValue; // array_push($result, array('start' => $startTime, 'stop' => $stopTime)); // } // } // // return array( // 'totalCount' => $intervals->length, // 'intervals' => $result, // 'start' => isset($start) ? $start : 0, // 'limit' => isset($limit) ? $limit : 0, // 'success' => true // ); // // } /* * catalog header */ protected function setParamDescription($params) { $paramsElement = $this->objectDom->createElement('parametres'); foreach ($params as $param) { $paramElement = $this->objectDom->createElement('param'); $attrArray = (array)$param; foreach ($attrArray as $key => $value) $paramElement->setAttribute($key, $value); $paramsElement->appendChild($paramElement); } return $paramsElement; } protected function createIntervalElement($interval) { $newInterval = $this->objectDom->createElement('intervals'); $newInterval->appendChild($this->objectDom->createElement('start',$interval['start'])); $newInterval->appendChild($this->objectDom->createElement('stop',$interval['stop'])); foreach ($interval as $key =>$value) { if (substr($key,0,5) == 'param') $newInterval->appendChild($this->objectDom->createElement('param', $value)); } return $newInterval; } public function createObject($p, $folder){ if ($p -> leaf) { $result = $this->createParameter($p, $folder); if ($result['error']) return $result; $cacheMgr = new CatalogCacheMgr(); if (isset($p->cacheToken) && ($p->cacheToken != '')) { $resultSaveInt = $cacheMgr->saveInTT($result['id'], "update", $p->cacheToken); if (!$resultSaveInt['success']) { if ($resultSaveInt['message']) return array('error' => $resultSaveInt['message']); else return array('error' => 'Unknown error during intervals save'); } } return $result; } // else return $this->createFolder($p); //TODO check if this is possible? else return array('error' => 'createFolder should be called from RENAME'); } } ?>