From 2c37cd9a2181eb1075c7f8ba89f0a0572d340675 Mon Sep 17 00:00:00 2001 From: gabrielamayoli Date: Thu, 30 Oct 2014 16:26:25 -0200 Subject: [PATCH] Evita coleta de classe repetida e conserta versão do software --- src/Cacic/CommonBundle/DoctrineMigrations/Version20141030153634.php | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/Cacic/CommonBundle/Entity/ClassProperty.php | 2 +- src/Cacic/CommonBundle/Resources/config/doctrine/ClassProperty.orm.yml | 1 + src/Cacic/WSBundle/Controller/NeoController.php | 20 ++++++++++---------- 4 files changed, 80 insertions(+), 11 deletions(-) create mode 100644 src/Cacic/CommonBundle/DoctrineMigrations/Version20141030153634.php diff --git a/src/Cacic/CommonBundle/DoctrineMigrations/Version20141030153634.php b/src/Cacic/CommonBundle/DoctrineMigrations/Version20141030153634.php new file mode 100644 index 0000000..2f6565b --- /dev/null +++ b/src/Cacic/CommonBundle/DoctrineMigrations/Version20141030153634.php @@ -0,0 +1,68 @@ +container = $container; + } + + public function up(Schema $schema) + { + // this up() migration is auto-generated, please modify it to your needs + $this->abortIf($this->connection->getDatabasePlatform()->getName() != "postgresql", "Migration can only be executed safely on 'postgresql'."); + $logger = $this->container->get('logger'); + + $this->addSql(" + CREATE OR REPLACE FUNCTION conserta_propriedade() RETURNS VOID AS $$ + DECLARE + impr record; + v_id integer; + BEGIN + FOR impr IN select id_class_property + from class_property + where id_class IS NULL LOOP + + RAISE NOTICE 'Removing property_id = %',impr.id_class_property; + + DELETE FROM computador_coleta_historico + WHERE id_class_property = impr.id_class_property; + + DELETE FROM computador_coleta + WHERE id_class_property = impr.id_class_property; + + DELETE FROM class_property + WHERE id_class_property = impr.id_class_property; + + END LOOP; + RETURN; + END; + $$ LANGUAGE 'plpgsql'; + "); + $logger->info("Função de atualização das impressoras criada"); + $this->addSql("SELECT conserta_propriedade();"); + $logger->info("Propriedades nulas removaidas"); + $this->addSql("ALTER TABLE class_property ALTER id_class SET NOT NULL;"); + $logger->info("Índice único criado"); + + + } + + public function down(Schema $schema) + { + // this down() migration is auto-generated, please modify it to your needs + + } +} diff --git a/src/Cacic/CommonBundle/Entity/ClassProperty.php b/src/Cacic/CommonBundle/Entity/ClassProperty.php index 3edfeff..58be41a 100644 --- a/src/Cacic/CommonBundle/Entity/ClassProperty.php +++ b/src/Cacic/CommonBundle/Entity/ClassProperty.php @@ -172,4 +172,4 @@ class ClassProperty { return $this->nmPropertyName; } -} \ No newline at end of file +} diff --git a/src/Cacic/CommonBundle/Resources/config/doctrine/ClassProperty.orm.yml b/src/Cacic/CommonBundle/Resources/config/doctrine/ClassProperty.orm.yml index 8a24d93..d8e3305 100644 --- a/src/Cacic/CommonBundle/Resources/config/doctrine/ClassProperty.orm.yml +++ b/src/Cacic/CommonBundle/Resources/config/doctrine/ClassProperty.orm.yml @@ -39,5 +39,6 @@ Cacic\CommonBundle\Entity\ClassProperty: joinColumns: id_class: referencedColumnName: id_class + nullable: false orphanRemoval: false lifecycleCallbacks: { } diff --git a/src/Cacic/WSBundle/Controller/NeoController.php b/src/Cacic/WSBundle/Controller/NeoController.php index cbbf085..80050e3 100644 --- a/src/Cacic/WSBundle/Controller/NeoController.php +++ b/src/Cacic/WSBundle/Controller/NeoController.php @@ -267,7 +267,7 @@ class NeoController extends Controller { // 2 - Adiciona módulos da subrede $modulos = $em->getRepository('CacicCommonBundle:RedeVersaoModulo')->findBy(array('idRede' => $computador->getIdRede())); - $logger->debug("Módulos encontrados \n". print_r($modulos, true)); + //$logger->debug("Módulos encontrados \n". print_r($modulos, true)); $mods = array(); foreach($modulos as $elm) { $tipo = $elm->getTipo(); @@ -667,19 +667,19 @@ class NeoController extends Controller { $logger = $this->get('logger'); $em = $this->getDoctrine()->getManager(); - try { - $classObject = $em->getRepository('CacicCommonBundle:Classe')->findOneBy( array( - 'nmClassName'=> $classe - )); - } - catch(\Doctrine\ORM\NoResultException $e) { - $logger->error("COLETA: Classe não cadastrada: $classe \n$e"); + $classObject = $em->getRepository('CacicCommonBundle:Classe')->findOneBy( array( + 'nmClassName'=> $classe + )); + + if (empty($classObject)) { + $logger->error("COLETA: Classe não cadastrada: $classe"); return; } foreach (array_keys($valor) as $propriedade) { if (is_array($valor[$propriedade])) { $logger->error("COLETA: Atributo $propriedade multivalorado não implementado na coleta"); + $valor[$propriedade] = $valor[$propriedade][0]; continue; } $logger->debug("COLETA: Gravando dados da propriedade $propriedade com o valor ".$valor[$propriedade]); @@ -835,7 +835,7 @@ class NeoController extends Controller { $propSoftware->setUrlInfoAbout($valor['url']); } if (array_key_exists('version', $valor)) { - $propSoftware->setDisplayVersion($valor['url']); + $propSoftware->setDisplayVersion($valor['version']); } $em->persist($classProperty); @@ -871,4 +871,4 @@ class NeoController extends Controller { } -} \ No newline at end of file +} -- libgit2 0.21.2