/** * @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 EiTestSetBlockParam $parent * @param null $index * @param string $path * @return mixed */ public function generateTestSetParameters(EiTestSet $testSet = null, $parent = null, $index = null, $path = "", $deep = false, Doctrine_Connection $conn = null) { $conn = $conn == null ? Doctrine_Manager::connection() : $conn; $path .= "/" . $this->getName(); $chronometre = new Chronometre(); $recupStr = $chronometre->lancerChrono("Récupération structure param", true); // Vérification si l'élément existe. /** @var EiTestSetBlockParam $element */ $element = EiTestSetBlockParamTable::getInstance()->findOneByEiTestSetIdAndPath($testSet->getId(), $path); $chronometre->arreterEtAfficherChrono("Récupération structure param", $recupStr); $eltExists = $element == null ? false : true; if (!$eltExists) { $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()); } } $recupMap = $chronometre->lancerChrono("Récupération du mapping", true); /** @var EiBlockDataSetMapping $mapping */ $mapping = $this->getMapping(EiBlockDataSetMapping::$TYPE_IN); if ($mapping != null && $parent->getType() == EiVersionStructure::$TYPE_FOREACH) { /** @var EiMappingStructureSyncIn $iteratorMap */ $iteratorMap = $parent->getEiVersionStructure()->getIteratorMapping(); /** @var Doctrine_Node_NestedSet $node */ $node = $mapping != null ? $mapping->getEiDataSetStructureMapping()->getNode() : null; $indexToMap = !$node->isDescendantOf($iteratorMap->getEiDataSetStructureMapping()) ? 1 : $index; $value = $mapping->getValueFromTestSetJdd($testSet, $indexToMap, $parent); } elseif ($mapping != null) { $value = $mapping->getValueFromTestSetJdd($testSet, $index, $parent); } else { $value = ""; } $chronometre->arreterEtAfficherChrono("Récupération du mapping", $recupMap); // Sauvegarde de la valeur de l'élément. $element->setValue($value); $saveChro = $chronometre->lancerChrono("Sauvegarde paramètre de block", true); $element->save($conn); if (!$eltExists) { if (!$parent->getNode()->getChildren()) { $element->getNode()->insertAsFirstChildOf($parent); } else { $element->getNode()->insertAsNextSiblingOf($parent->getNode()->getLastChild()); } } $chronometre->arreterEtAfficherChrono("Sauvegarde paramètre de block", $saveChro); 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; } }