/**
  * @param EiTestSetBlockParam $blockParam
  * @param EiTestSetBlockStack $parentStack
  * @return EiTestSetDataSet|null
  */
 public function getDataFromDataSet(EiTestSetBlockParam $blockParam, EiTestSetBlockStack $parentStack = null)
 {
     /** @var EiTestSetDataSetTable $tableDSS */
     $tableDSS = Doctrine_Core::getTable("EiTestSetDataSet");
     $mapping = null;
     if ($parentStack == null) {
         $mapping = $blockParam->getEiVersionStructure()->getMappingDataSet(EiBlockDataSetMapping::$TYPE_IN);
         $mapping != null ? $tableDSS->getRelatedDataFromUniqueDataSetStructure($blockParam->getEiTestSetId(), $mapping) : null;
     }
     return $mapping;
 }
 /**
  * @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 EiTestSetBlockParam $parent
  * @return int
  */
 public function getCountMappingFromTestSetJdd($testSet, $parent = null)
 {
     $count = 0;
     $mapId = $this->getEiDatasetStructureId();
     $testSetDS = $testSet->getFilteredEiTestSetDataSet($mapId);
     $nb = $testSetDS->count();
     if ($nb > 0) {
         $contexteBlock = $parent != null ? $parent->getBlockContext() : "";
         /** @var EiTestSetDataSet $line */
         foreach ($testSetDS as $line) {
             // TODO: Améliorer
             $contexteJdd = $line->getContext();
             if ($contexteJdd == $contexteBlock) {
                 $count++;
             }
         }
     }
     return $count;
 }
Beispiel #4
0
 /**
  * @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;
     }
 }