/** * @param sfWebRequest $request * @return EiDataSet|null */ private function processCreateEmpty(sfWebRequest $request) { // Déclaration de la connexion SQL. $connection = Doctrine_Manager::connection(); // Instanciation du logger. $this->logger = sfContext::getInstance()->getLogger(); $this->logger->info("----------------------------------------------------------"); $this->logger->info("--- DEBUT SAUVEGARDE DATA SET (CREATE EMPTY)"); try { // On débute la transaction. $connection->beginTransaction(); $ei_user = $this->getUser()->getGuardUser()->getEiUser(); $nom = $request->getParameter("name"); $desc = $request->getParameter("description"); // Déclaration du template. $ei_data_set_template = null; $ei_node_template = null; // Récupération du jeu de données de base si enregistrement. $dataSetSourceId = $request->getParameter("dataSetSource"); // On récupère le data set template source (si enregistrement). $dataSetTemplateSourceId = $request->getParameter("dataSetTemplateSource"); // On récupère le dossier où enregistrer le JDD. $dataSetDirId = $request->getPostParameter("dataSetDir"); // LOGS $this->logger->info("-- JDD SOURCE ID : " . $dataSetSourceId); $this->logger->info("-- JDD TEMPLATE SOURCE ID : " . $dataSetTemplateSourceId); $this->logger->info("-- JDD DIR ID : " . $dataSetDirId); if ($dataSetSourceId != null) { // LOGS $this->logger->info("-- DATA SET SOURCE ID NOT NULL "); /** @var EiDataSet $dataSetSource Récupération du jeu de données source. */ $dataSetSource = Doctrine_Core::getTable("EiDataSet")->find($dataSetSourceId); if ($dataSetSource != null && $dataSetSource->getEiDataSetTemplate() != null) { // LOGS $this->logger->info("-- DATA SET SOURCE (" . $dataSetSource->getId() . ") ET TEMPLATE (" . $dataSetSource->getEiDataSetTemplate()->getId() . ") NOT NULL "); $ei_data_set_template = $dataSetSource->getEiDataSetTemplate(); $ei_node_template = $ei_data_set_template->getEiNode(); // On modifie le nom et la description. $nom = $ei_data_set_template->getName(); $desc = $ei_data_set_template->getDescription() . " V" . ($ei_data_set_template->getEiDataSets()->count() + 1); } else { $dataSetSource = Doctrine_Core::getTable("EiDataSetTemplate")->find($dataSetSourceId); if ($dataSetSource != null) { // LOGS $this->logger->info("-- DATA SET SOURCE (" . $dataSetSource->getId() . ") ET TEMPLATE (" . $dataSetSource->getEiDataSetTemplate()->getId() . ") NOT NULL "); $ei_data_set_template = $dataSetSource; $ei_node_template = $ei_data_set_template->getEiNode(); // On modifie le nom et la description. $nom = $ei_data_set_template->getName(); $desc = $ei_data_set_template->getDescription() . " V" . ($ei_data_set_template->getEiDataSets()->count() + 1); } } } elseif ($dataSetTemplateSourceId != null) { /** @var EiDataSetTemplate $dataSetSource */ $dataSetSource = Doctrine_Core::getTable("EiDataSetTemplate")->find($dataSetTemplateSourceId); if ($dataSetSource != null) { // LOGS $this->logger->info("-- DATA SET SOURCE (" . $dataSetSource->getEiDataSetRefId() . ") ET TEMPLATE (" . $dataSetSource->getId() . ") NOT NULL "); $ei_data_set_template = $dataSetSource; $ei_node_template = $ei_data_set_template->getEiNode(); // On modifie le nom et la description. $nom = $ei_data_set_template->getName(); $desc = $ei_data_set_template->getDescription() . " V" . ($ei_data_set_template->getEiDataSets()->count() + 1); } } if ($ei_data_set_template == null) { // LOGS $this->logger->info("-- CREATION D'UN NOUVEAU TEMPLATE"); // Création du template. //=> NODE $ei_node_template = new EiNode(); $ei_node_template->createEmpty($request->getParameter("ei_node_parent_id"), $this->ei_project, $request->getParameter("name")); //=> TEMPLATE. $ei_data_set_template = new EiDataSetTemplate(); $ei_data_set_template->createEmpty($nom, $desc, $ei_node_template, $ei_user); // Sauvegarde du template. $ei_data_set_template->save($connection); } $this->logger->info("----------------------------------------------------------"); $this->logger->info("--- FIN SAUVEGARDE DATA SET (CREATE EMPTY)"); $this->logger->info("----------------------------------------------------------"); // Création du jeu de données. //=> NODE $ei_node = new EiNode(); $ei_node->createEmpty($ei_node_template->getId(), $this->ei_project, $request->getParameter("name")); //=> JEU DE DONNEES $ei_data_set = new EiDataSet(); if ($this->getUser() !== null) { $ei_data_set->user_id = $ei_user->getUserId(); $ei_data_set->user_ref = $ei_user->getRefId(); } //=> Création à vide. $ei_data_set->createEmpty($nom, $desc, $ei_node, $this->ei_scenario); //=> Affectation du template. $ei_data_set->setEiDataSetTemplate($ei_data_set_template); //=> SAUVEGARDE $ei_data_set->save($connection); // Affectation du jeu de données au template. $ei_data_set_template->setEiDataSet($ei_data_set); $ei_data_set_template->save($connection); // Création des lignes du jeu de données. $ei_data_set->createRootDataLine(); $connection->commit(); } catch (Exception $e) { $connection->rollback(); return null; } return $ei_data_set; }