protected function execute(InputInterface $input, OutputInterface $output)
 {
     $dmName = $input->getOption('dm');
     $dmName = $dmName ? $dmName : 'default';
     $dmServiceName = sprintf('doctrine.odm.mongodb.%s_document_manager', $dmName);
     $dm = $this->container->get($dmServiceName);
     $dirOrFile = $input->getOption('fixtures');
     if ($dirOrFile) {
         $paths = is_array($dirOrFile) ? $dirOrFile : array($dirOrFile);
     } else {
         $paths = array();
         foreach ($this->container->get('kernel')->getBundles() as $bundle) {
             $paths[] = $bundle->getPath() . '/DataFixtures/MongoDB';
         }
     }
     $loader = new DataFixturesLoader($this->container);
     foreach ($paths as $path) {
         if (is_dir($path)) {
             $loader->loadFromDirectory($path);
         }
     }
     $fixtures = $loader->getFixtures();
     $purger = new MongoDBPurger($dm);
     $executor = new MongoDBExecutor($dm, $purger);
     $executor->setLogger(function ($message) use($output) {
         $output->writeln(sprintf('  <comment>></comment> <info>%s</info>', $message));
     });
     $executor->execute($fixtures, $input->getOption('append'));
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $dm = $this->getContainer()->get('doctrine_mongodb')->getManager($input->getOption('dm'));
     $dirOrFile = $input->getOption('fixtures');
     if ($dirOrFile) {
         $paths = is_array($dirOrFile) ? $dirOrFile : array($dirOrFile);
     } else {
         $paths = $this->getContainer()->getParameter('doctrine_mongodb.odm.fixtures_dirs');
         $paths = is_array($paths) ? $paths : array($paths);
         foreach ($this->getContainer()->get('kernel')->getBundles() as $bundle) {
             $paths[] = $bundle->getPath() . '/DataFixtures/MongoDB';
         }
     }
     $loader = new ContainerAwareLoader($this->getContainer());
     foreach ($paths as $path) {
         if (is_dir($path)) {
             $loader->loadFromDirectory($path);
         }
     }
     $fixtures = $loader->getFixtures();
     if (!$fixtures) {
         throw new \InvalidArgumentException(sprintf('Could not find any fixtures to load in: %s', "\n\n- " . implode("\n- ", $paths)));
     }
     $purger = new MongoDBPurger($dm);
     $executor = new MongoDBExecutor($dm, $purger);
     $executor->setLogger(function ($message) use($output) {
         $output->writeln(sprintf('  <comment>></comment> <info>%s</info>', $message));
     });
     $executor->execute($fixtures, $input->getOption('append'));
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $dmName = $input->getOption('dm');
     $dmName = $dmName ? $dmName : 'default';
     $dmServiceName = sprintf('doctrine.odm.mongodb.%s_document_manager', $dmName);
     if (!$this->container->has($dmServiceName)) {
         throw new InvalidArgumentException(sprintf('Could not find a document manager configured with the name "%s". Check your ' . 'application configuration to configure your Doctrine document managers.', $dmName));
     }
     $dm = $this->container->get($dmServiceName);
     $dirOrFile = $input->getOption('fixtures');
     if ($dirOrFile) {
         $paths = is_array($dirOrFile) ? $dirOrFile : array($dirOrFile);
     } else {
         $paths = array();
         foreach ($this->container->get('kernel')->getBundles() as $bundle) {
             $paths[] = $bundle->getPath() . '/DataFixtures/MongoDB';
         }
     }
     $loader = new DataFixturesLoader($this->container);
     foreach ($paths as $path) {
         if (is_dir($path)) {
             $loader->loadFromDirectory($path);
         }
     }
     $fixtures = $loader->getFixtures();
     if (!$fixtures) {
         throw new InvalidArgumentException(sprintf('Could not find any fixtures to load in: %s', "\n\n- " . implode("\n- ", $paths)));
     }
     $purger = new MongoDBPurger($dm);
     $executor = new MongoDBExecutor($dm, $purger);
     $executor->setLogger(function ($message) use($output) {
         $output->writeln(sprintf('  <comment>></comment> <info>%s</info>', $message));
     });
     $executor->execute($fixtures, $input->getOption('append'));
 }
 /**
  * setup mongo-odm and load fixtures
  *
  * @return void
  */
 public function setUp()
 {
     AnnotationDriver::registerAnnotationClasses();
     $config = new Configuration();
     $config->setHydratorDir('/tmp/hydrators');
     $config->setHydratorNamespace('Hydrators');
     $config->setProxyDir('/tmp/proxies');
     $config->setProxyNamespace('Proxies');
     $config->setMetadataDriverImpl(AnnotationDriver::create(__DIR__ . '/Documents/'));
     $dm = DocumentManager::create(new Connection(), $config);
     $loader = new Loader();
     $loader->addFixture(new MongoOdmFixtures());
     $executor = new MongoDBExecutor($dm, new MongoDBPurger());
     $executor->execute($loader->getFixtures());
     $this->builder = $dm->createQueryBuilder('Graviton\\Rql\\Documents\\Foo');
 }
示例#5
0
 public function indexAction()
 {
     /**
      * @var $console \Zend\Console\Adapter\Posix
      * @var $entityManager \Doctrine\ODM\MongoDB\DocumentManager
      */
     $console = $this->getServiceLocator()->get('console');
     $fixtures_path = $this->getServiceLocator()->get('config');
     $entityManager = $this->getServiceLocator()->get('doctrine.documentmanager.odm_default');
     $request = $this->getRequest();
     $loader = new Loader();
     switch ($request) {
         case $request->getParam('load'):
             $console->writeLine('Loading fixtures', ColorInterface::RED);
             $purger = new MongoDBPurger();
             $executor = new MongoDBExecutor($entityManager, $purger);
             foreach ($fixtures_path['zflabs-odm-fixture'] as $key => $path) {
                 $loader->loadFromDirectory($path);
                 $fixtures = $loader->getFixtures();
                 foreach ($fixtures as $value) {
                     if ($request->getParam('purge')) {
                         $executor->purge();
                     }
                     $executor->load($entityManager, $value);
                     $console->write(get_class($value), ColorInterface::BLUE);
                     $console->writeLine('[OK]', ColorInterface::BLUE);
                 }
             }
             break;
         case $request->getParam('check'):
             foreach ($fixtures_path['zflabs-odm-fixture'] as $key => $path) {
                 $loader->loadFromDirectory($path);
                 $fixtures = $loader->getFixtures();
                 foreach ($fixtures as $value) {
                     $console->writeLine(get_class($value), ColorInterface::BLUE);
                 }
             }
             break;
     }
 }
 /**
  * Load test fixtures.
  *
  * @param ObjectManager $om
  */
 protected function loadFixtures(ObjectManager $om)
 {
     if ($om instanceof \Doctrine\ORM\EntityManager) {
         $purger = new ORMPurger();
         $executor = new ORMExecutor($om, $purger);
     } elseif ($om instanceof \Doctrine\ODM\MongoDB\DocumentManager) {
         $purger = new MongoDBPurger();
         $executor = new MongoDBExecutor($om, $purger);
     }
     $fixtures = new TransUnitData();
     $executor->execute(array($fixtures), false);
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $dm = $this->getContainer()->get('doctrine_mongodb')->getManager($input->getOption('dm'));
     $dirOrFile = $input->getOption('fixtures');
     $bundles = $input->getOption('bundles');
     if ($bundles && $dirOrFile) {
         throw new \InvalidArgumentException('Use only one option: --bundles or --fixtures.');
     }
     if ($input->isInteractive() && !$input->getOption('append')) {
         $helper = $this->getHelper('question');
         $question = new ConfirmationQuestion('Careful, database will be purged. Do you want to continue (y/N) ?', false);
         if (!$helper->ask($input, $output, $question)) {
             return;
         }
     }
     if ($dirOrFile) {
         $paths = is_array($dirOrFile) ? $dirOrFile : array($dirOrFile);
     } elseif ($bundles) {
         $kernel = $this->getContainer()->get('kernel');
         foreach ($bundles as $bundle) {
             $paths[] = $kernel->getBundle($bundle)->getPath();
         }
     } else {
         $paths = $this->getContainer()->getParameter('doctrine_mongodb.odm.fixtures_dirs');
         $paths = is_array($paths) ? $paths : array($paths);
         foreach ($this->getContainer()->get('kernel')->getBundles() as $bundle) {
             $paths[] = $bundle->getPath() . '/DataFixtures/MongoDB';
         }
     }
     $loaderClass = $this->getContainer()->getParameter('doctrine_mongodb.odm.fixture_loader');
     $loader = new $loaderClass($this->getContainer());
     foreach ($paths as $path) {
         if (is_dir($path)) {
             $loader->loadFromDirectory($path);
         } else {
             if (is_file($path)) {
                 $loader->loadFromFile($path);
             }
         }
     }
     $fixtures = $loader->getFixtures();
     if (!$fixtures) {
         throw new \InvalidArgumentException(sprintf('Could not find any fixtures to load in: %s', "\n\n- " . implode("\n- ", $paths)));
     }
     $purger = new MongoDBPurger($dm);
     $executor = new MongoDBExecutor($dm, $purger);
     $executor->setLogger(function ($message) use($output) {
         $output->writeln(sprintf('  <comment>></comment> <info>%s</info>', $message));
     });
     $executor->execute($fixtures, $input->getOption('append'));
 }
 /**
  * DocumentFiextureを生成する
  * @param array $objects
  */
 protected function loadDocumentFixtures($objects)
 {
     if (!is_array($objects)) {
         $objects = array($objects);
     }
     $loader = new Loader($this->getKernel()->getContainer());
     $dm = $this->getDocumentManager();
     foreach ($objects as $object) {
         if (class_exists($object)) {
             $loader->addFixture(new $object());
         }
     }
     $fixtures = $loader->getFixtures();
     $purger = new MongoDBPurger($dm);
     $executor = new MongoDBExecutor($dm, $purger);
     $executor->execute($fixtures);
 }
 /**
  * Construct new fixtures loader instance.
  *
  * @param DocumentManager $manager DocumentManager instance used for persistence.
  * @param LoaderInterface $loader
  * @param MongoDBPurger   $purger
  */
 public function __construct(DocumentManager $manager, LoaderInterface $loader, MongoDBPurger $purger = null)
 {
     parent::__construct($manager, $purger);
     $this->loader = $loader;
 }