/** * @param EiTestSet $testSet * @param null $parent * @param null $index * @param string $path * @param bool $deep * @param Doctrine_Connection $conn * * @return EiTestSetBlockParam|mixed|void */ public function generateTestSetParameters(EiTestSet $testSet = null, $parent = null, $index = null, $path = "", $deep = true, Doctrine_Connection $conn = null) { $conn = $conn == null ? Doctrine_Manager::connection() : $conn; $chronometre = new Chronometre(); $index = $index == null ? 1 : $index; $path .= "/" . $this->getName() . "[" . $index . "]"; // Vérification si l'élément existe. $element = EiTestSetBlockParamTable::getInstance()->findOneByEiTestSetIdAndPath($testSet->getId(), $path); if ($element == null) { // Création de l'élément. $element = new EiTestSetBlockParam(); $element->setEiVersionStructureId($this->getId()); $element->setName($this->getName()); $element->setSlug($this->getSlug()); $element->setType($this->getType()); $element->setEiTestSetId($testSet->getId()); $element->setIndexRepetition($index); $element->setPath($path); if ($parent != null) { $element->setParentId($parent->getId()); } $element->save($conn); if ($parent == null) { $element->setRootId($element->getId()); $element->setLft(1); $element->setRgt(2); $element->setLevel(0); $element->save($conn); } elseif ($parent != null) { /** @var EiTestSetBlockParam $parent */ $parent->refresh(true); if (!$parent->getNode()->getChildren()) { $element->getNode()->insertAsFirstChildOf($parent); } else { $element->getNode()->insertAsNextSiblingOf($parent->getNode()->getLastChild()); } } } $chronometre->lancerChrono("Récupération des paramètres"); /** @var EiBlockParam[] $parametres */ $parametres = $this->getParams(); $chronometre->arreterEtAfficherChrono(); $chronometre->lancerChrono("Génération des paramètres"); /** @var EiBlockParam $param */ foreach ($parametres as $param) { $param->generateTestSetParameters($testSet, $element, $index, $path); } $chronometre->arreterEtAfficherChrono(); /** @var EiVersionStructure[] $descendants */ $descendants = $this->getNode()->getDescendants(true); if ($deep === true && $descendants) { /** @var EiVersionStructure $descendant */ foreach ($descendants as $descendant) { /** @var EiBlock $descendant */ if ($descendant instanceof EiBlock || $descendant instanceof EiBlockForeach) { $descendant->generateTestSetParameters($testSet, $element, $index, $path, false, $conn); } } } else { return $element; } }
/** * @param EiTestSet $testSet * @param null $parent * @param null $index * @param string $path * @param bool $deep * @return mixed|void */ public function generateTestSetParameters(EiTestSet $testSet = null, $parent = null, $index = null, $path = "", $deep = true, Doctrine_Connection $conn = null) { $conn = $conn == null ? Doctrine_Manager::connection() : $conn; $chronometre = new Chronometre(); $modeCreation = true; $index = $index == null ? 1 : $index; $newPath = $path . "/" . $this->getName(); $nombreElts = 1; /** @var EiBlockParam[] $parametres */ $parametres = $this->getParams(); /** @var EiMappingStructureSyncIn $iteratorMap */ $iteratorMap = $this->getIteratorMapping(); $chronometre->lancerChrono("Calcul Mapping"); // if( $this->nombreElts != null ){ // $nombreElts = $this->nombreElts; // } // else{ // $nombreElts = $iteratorMap->getCountMappingFromTestSetJdd($testSet, $parent); // $this->nombreElts = $nombreElts; // } $chronometre->arreterEtAfficherChrono(); if ($index == null && $nombreElts > 1) { return $this->generateTestSetParameters($testSet, $parent, 1, $path); } $newPath .= "[" . $index . "]"; // Vérification si l'élément existe. /** @var EiTestSetBlockParam $element */ $element = EiTestSetBlockParamTable::getInstance()->findOneByEiTestSetIdAndPath($testSet->getId(), $newPath); if ($element == null) { // Création de l'élément. $element = new EiTestSetBlockParam(); $element->setEiVersionStructureId($this->getId()); $element->setName($this->getName()); $element->setSlug($this->getSlug()); $element->setType($this->getType()); $element->setEiTestSetId($testSet->getId()); $element->setIndexRepetition($index); $element->setPath($newPath); if ($parent != null) { $element->setParentId($parent->getId()); } $element->save($conn); if ($parent == null) { $element->setRootId($element->getId()); $element->setLft(1); $element->setRgt(2); $element->setLevel(0); $element->save($conn); } else { /** @var EiTestSetBlockParam $parent */ $parent->refresh(true); if (!$parent->getNode()->getChildren()) { $element->getNode()->insertAsFirstChildOf($parent); } else { $element->getNode()->insertAsNextSiblingOf($parent->getNode()->getLastChild()); } } } else { $modeCreation = false; } $element->getBlockContext(); $chronometre->lancerChrono("Génération des paramètres"); /** @var EiBlockParam $param */ foreach ($parametres as $param) { $param->generateTestSetParameters($testSet, $element, $index, $newPath, false, $conn); } $chronometre->arreterEtAfficherChrono(); /** @var EiVersionStructure[] $descendants */ $descendants = $this->getNode()->getDescendants(true); if ($deep === true && $descendants) { /** @var EiVersionStructure $descendant */ foreach ($descendants as $descendant) { /** @var EiBlock $descendant */ if ($descendant instanceof EiBlock || $descendant instanceof EiBlockForeach) { $descendant->generateTestSetParameters($testSet, $element, 1, $newPath); } } } if ($deep === true && $index < $nombreElts && $modeCreation == true) { return $this->generateTestSetParameters($testSet, $parent, $index + 1, $path); } else { return $element; } }