vendor/symfony/src/Symfony/Bundle/DoctrineBundle/Command/InfoDoctrineCommand.php
changeset 0 7f95f8617b0b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/symfony/src/Symfony/Bundle/DoctrineBundle/Command/InfoDoctrineCommand.php	Sat Sep 24 15:40:41 2011 +0200
@@ -0,0 +1,80 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Bundle\DoctrineBundle\Command;
+
+use Doctrine\ORM\Mapping\MappingException;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+/**
+ * Show information about mapped entities
+ *
+ * @author Benjamin Eberlei <kontakt@beberlei.de>
+ */
+class InfoDoctrineCommand extends DoctrineCommand
+{
+    protected function configure()
+    {
+        $this
+            ->setName('doctrine:mapping:info')
+            ->addOption('em', null, InputOption::VALUE_OPTIONAL, 'The entity manager to use for this command')
+            ->setDescription('Show basic information about all mapped entities')
+            ->setHelp(<<<EOT
+The <info>doctrine:mapping:info</info> shows basic information about which
+entities exist and possibly if their mapping information contains errors or
+not.
+
+<info>php app/console doctrine:mapping:info</info>
+
+If you are using multiple entity managers you can pick your choice with the
+<info>--em</info> option:
+
+<info>php app/console doctrine:mapping:info --em=default</info>
+EOT
+        );
+    }
+
+    protected function execute(InputInterface $input, OutputInterface $output)
+    {
+        $entityManagerName = $input->getOption('em') ? $input->getOption('em') : $this->getContainer()->get('doctrine')->getDefaultEntityManagerName();
+
+        /* @var $entityManager Doctrine\ORM\EntityManager */
+        $entityManager = $this->getEntityManager($input->getOption('em'));
+
+        $entityClassNames = $entityManager->getConfiguration()
+                                          ->getMetadataDriverImpl()
+                                          ->getAllClassNames();
+
+        if (!$entityClassNames) {
+            throw new \LogicException(
+                'You do not have any mapped Doctrine ORM entities for any of your bundles. '.
+                'Create a class inside the Entity namespace of any of your bundles and provide '.
+                'mapping information for it with Annotations directly in the classes doc blocks '.
+                'or with XML/YAML in your bundles Resources/config/doctrine/ directory.'
+            );
+        }
+
+        $output->writeln(sprintf("Found <info>%d</info> entities mapped in entity manager <info>%s</info>:", count($entityClassNames), $entityManagerName));
+
+        foreach ($entityClassNames as $entityClassName) {
+            try {
+                $cm = $entityManager->getClassMetadata($entityClassName);
+                $output->writeln(sprintf("<info>[OK]</info>   %s", $entityClassName));
+            } catch (MappingException $e) {
+                $output->writeln("<error>[FAIL]</error> ".$entityClassName);
+                $output->writeln(sprintf("<comment>%s</comment>", $e->getMessage()));
+                $output->writeln('');
+            }
+        }
+    }
+}