示例#1
0
 /**
  * {@inheritDoc}
  */
 public function load(ObjectManager $om)
 {
     $om = $this->container->get('vib.doctrine.registry')->getManagerForClass('VIB\\FliesBundle\\Entity\\Stock');
     $vm = $this->container->get('vib.doctrine.registry')->getManagerForClass('VIB\\FliesBundle\\Entity\\Vial');
     $om->disableAutoAcl();
     $vm->disableAutoAcl();
     $user = $this->getReference('user');
     $stock_1 = new Stock();
     $stock_1->setName('stock 1');
     $stock_1->setGenotype('yw');
     $om->persist($stock_1);
     $om->flush();
     $om->createACL($stock_1, $user);
     $vm->createACL($stock_1->getVials(), $user);
     $this->addReference('stock_1', $stock_1);
     $stock_2 = new Stock();
     $stock_2->setName('stock 2');
     $stock_2->setGenotype('yw;Sp/CyO');
     $om->persist($stock_2);
     $om->flush();
     $om->createACL($stock_2, $user);
     $vm->createACL($stock_2->getVials(), $user);
     $this->addReference('stock_2', $stock_2);
     $admin = $this->getReference('admin');
     $stock_3 = new Stock();
     $stock_3->setName('stock 3');
     $stock_3->setGenotype('yw;;Tm2/Tm6');
     $om->persist($stock_3);
     $om->flush();
     $om->createACL($stock_3, $admin);
     $vm->createACL($stock_3->getVials(), $admin);
     $this->addReference('stock_3', $stock_3);
     $stock_4 = new Stock();
     $stock_4->setName('stock 4');
     $stock_4->setGenotype('yw/Fm7');
     $om->persist($stock_4);
     $om->flush();
     $om->createACL($stock_4, $admin);
     $vm->createACL($stock_4->getVials(), $admin);
     $this->addReference('stock_4', $stock_4);
     $om->enableAutoAcl();
     $vm->enableAutoAcl();
 }
示例#2
0
 public function crossParentNameProvider()
 {
     $stock = new Stock();
     $stock->setGenotype('test genotype');
     $stock->setName('test stock');
     $stockVial = new StockVial();
     $stockVial->setStock($stock);
     $injection = new InjectionVial();
     $injection->setTargetStock($stock);
     $injection->setConstructName('test');
     return array(array(new FakeCrossVial(), null, 'test'), array(new FakeCrossVial(), $stockVial, 'test parent'), array(new FakeCrossVial(), $injection, 'test parent'), array(new FakeCrossVial(), new CrossVial(), 'test'));
 }
示例#3
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $filename = $input->getArgument('csv');
     $file = fopen($filename, 'r');
     $logfilename = $input->getArgument('logfile');
     $logfile = fopen($logfilename, 'w');
     $listfilename = $input->getArgument('listfile');
     $importlist = array();
     if ($listfilename) {
         $listfile = fopen($listfilename, 'r');
         if ($listfile) {
             while ($data = fgetcsv($listfile, 0, "\t")) {
                 $importlist[] = $data[0];
             }
         }
     }
     $dialog = $this->getHelperSet()->get('dialog');
     $this->container = $this->getApplication()->getKernel()->getContainer();
     $connection = $this->container->get('database_connection');
     $om = $this->container->get('vib.doctrine.registry')->getManagerForClass('VIB\\CoreBundle\\Entity\\Entity');
     $vm = $this->container->get('vib.doctrine.registry')->getManagerForClass('VIB\\FliesBundle\\Entity\\StockVial');
     $om->disableAutoAcl();
     $vm->disableAutoAcl();
     $stocks = array();
     $stock_register = array();
     $vials = array();
     if ($file) {
         while ($data = fgetcsv($file, 0, "\t")) {
             $trim = " \t\n\r\v\"";
             $owner_name = trim($data[0], $trim);
             $stock_name = trim($data[1], $trim);
             $stock_genotype = trim($data[2], $trim);
             $creator_name = trim($data[4], $trim);
             $stock_notes = trim($data[5], $trim);
             $stock_vendor = trim($data[6], $trim);
             $stock_vendor_id = trim($data[7], $trim);
             $stock_info_url = str_replace(" ", "", trim($data[8], $trim));
             $stock_verified = trim($data[9], $trim) == "yes" ? true : false;
             $stock_vials_size = trim($data[10], $trim);
             $stock_vials_size = $stock_vials_size == "" ? 'medium' : $stock_vials_size;
             $stock_vials_number = (int) trim($data[11], $trim);
             $stock_vials_number = $stock_vials_number <= 0 ? 1 : $stock_vials_number;
             $stock_vials_food = trim($data[12], $trim);
             $stock_vials_food = $stock_vials_food == "" ? 'standard' : $stock_vials_food;
             $test = $om->getRepository('VIB\\FliesBundle\\Entity\\Stock')->findOneByName($stock_name);
             if (!in_array($stock_name, $stock_register) && $creator_name == "" && null === $test) {
                 if ($stock_vendor != "" && $stock_vendor_id != "") {
                     $output->write("Querying FlyBase for " . $stock_name . ": ");
                     $stock_data = $this->getStockData($stock_vendor, $stock_vendor_id);
                     if (count($stock_data) == 1) {
                         $stock_genotype = $stock_data[0]['stock_genotype'];
                         $stock_info_url = $stock_data[0]['stock_link'];
                         $output->writeln("success");
                     } elseif (count($stock_data) != 1) {
                         $output->writeln("failed");
                     }
                 }
                 $stock = new Stock();
                 $stock->setName($stock_name);
                 $stock->setGenotype($stock_genotype);
                 $stock->setNotes($stock_notes);
                 $stock->setVendor($stock_vendor);
                 $stock->setVendorId($stock_vendor_id);
                 $stock->setInfoURL($stock_info_url);
                 $stock->setVerified($stock_verified);
                 for ($i = 0; $i < $stock_vials_number - 1; $i++) {
                     $vial = new StockVial();
                     $stock->addVial($vial);
                 }
                 $stock_vials = $stock->getVials();
                 foreach ($stock_vials as $vial) {
                     $vial->setSize($stock_vials_size);
                     $vial->setFood($stock_vials_food);
                 }
                 $stock_register[] = $stock_name;
                 $stocks[$owner_name][$stock_name] = $stock;
             } else {
                 $vials[$owner_name][$stock_name]['size'] = $stock_vials_size;
                 $vials[$owner_name][$stock_name]['number'] = $stock_vials_number;
                 $vials[$owner_name][$stock_name]['food'] = $stock_vials_food;
             }
         }
     }
     $connection->beginTransaction();
     foreach ($stocks as $user_name => $user_stocks) {
         try {
             $user = $this->container->get('user_provider')->loadUserByUsername($user_name);
         } catch (UsernameNotFoundException $e) {
             $user = null;
         }
         if ($user instanceof UserInterface) {
             $output->writeln("Adding stocks for user " . $user_name . ":");
             $userStocks = new ArrayCollection();
             $userVials = new ArrayCollection();
             foreach ($user_stocks as $stock_name => $stock) {
                 $om->persist($stock);
                 $userStocks->add($stock);
                 $userVials->add($stock->getVials());
                 $output->write(".");
                 fprintf($logfile, "%s\n", $stock->getName());
             }
             $om->flush();
             $output->writeln("");
             $output->write("Creating ACLs...");
             $om->createACL($userStocks, $user);
             $vm->createACL($userVials, $user);
             $output->writeln(" done");
         } else {
             $output->writeln("<error>User " . $user_name . " does not exits. Skipping!</error>");
         }
     }
     foreach ($vials as $user_name => $user_vials) {
         try {
             $user = $this->container->get('user_provider')->loadUserByUsername($user_name);
         } catch (UsernameNotFoundException $e) {
             $user = null;
         }
         if ($user instanceof UserInterface) {
             $output->writeln("Adding vials for user " . $user_name . ":");
             $userVials = new ArrayCollection();
             foreach ($user_vials as $stock_name => $stock_vials) {
                 $stock = $om->getRepository('VIB\\FliesBundle\\Entity\\Stock')->findOneByName($stock_name);
                 if ($stock instanceof Stock) {
                     $stockVials = new ArrayCollection();
                     for ($i = 0; $i < $stock_vials['number']; $i++) {
                         $vial = new StockVial();
                         $stock->addVial($vial);
                         $stockVials->add($vial);
                         $userVials->add($vial);
                     }
                     foreach ($stockVials as $vial) {
                         $vial->setSize($stock_vials['number']);
                         $vial->setFood($stock_vials['number']);
                         $vm->persist($vial);
                     }
                     $output->write(".");
                 } else {
                     $output->write("?");
                 }
             }
             $output->writeln("");
             $vm->flush();
             $vm->createACL($userVials, $user);
         } else {
             $output->writeln("<error>User " . $user_name . " does not exits. Skipping!</error>");
         }
     }
     $message = 'Stocks and vials have been created. Commit?';
     if ($dialog->askConfirmation($output, '<question>' . $message . '</question>', true)) {
         $connection->commit();
     } else {
         $connection->rollback();
         $connection->close();
     }
     $om->enableAutoAcl();
     $vm->enableAutoAcl();
 }