From 4cf5b7afdcf9e6761076adcba38e3ddc262737f7 Mon Sep 17 00:00:00 2001 From: Benjamin Eberlei Date: Sun, 11 Apr 2010 10:51:31 +0200 Subject: [PATCH] DDC-510 Move Exception for no Metadata Driver from Configuration to EntityManager::create, commit missing MetadataFilter --- lib/Doctrine/ORM/Configuration.php | 4 - lib/Doctrine/ORM/EntityManager.php | 4 +- .../ORM/Tools/Console/MetadataFilter.php | 80 +++++++++++++++++++ 3 files changed, 83 insertions(+), 5 deletions(-) create mode 100644 lib/Doctrine/ORM/Tools/Console/MetadataFilter.php diff --git a/lib/Doctrine/ORM/Configuration.php b/lib/Doctrine/ORM/Configuration.php index 4f7de0b4e..1376a3aa2 100644 --- a/lib/Doctrine/ORM/Configuration.php +++ b/lib/Doctrine/ORM/Configuration.php @@ -176,10 +176,6 @@ class Configuration extends \Doctrine\DBAL\Configuration */ public function getMetadataDriverImpl() { - if ($this->_attributes['metadataDriverImpl'] == null) { - throw ORMException::missingMappingDriverImpl(); - } - return $this->_attributes['metadataDriverImpl']; } diff --git a/lib/Doctrine/ORM/EntityManager.php b/lib/Doctrine/ORM/EntityManager.php index d915f1d63..e2db2b0d0 100644 --- a/lib/Doctrine/ORM/EntityManager.php +++ b/lib/Doctrine/ORM/EntityManager.php @@ -595,7 +595,9 @@ class EntityManager */ public static function create($conn, Configuration $config, EventManager $eventManager = null) { - $config->getMetadataDriverImpl(); // assert this is set + if (!$config->getMetadataDriverImpl()) { + throw ORMException::missingMappingDriverImpl(); + } if (is_array($conn)) { $conn = \Doctrine\DBAL\DriverManager::getConnection($conn, $config, ($eventManager ?: new EventManager())); diff --git a/lib/Doctrine/ORM/Tools/Console/MetadataFilter.php b/lib/Doctrine/ORM/Tools/Console/MetadataFilter.php new file mode 100644 index 000000000..efd720802 --- /dev/null +++ b/lib/Doctrine/ORM/Tools/Console/MetadataFilter.php @@ -0,0 +1,80 @@ +. +*/ + +namespace Doctrine\ORM\Tools\Console; + +/** + * Used by CLI Tools to restrict entity-based commands to given patterns. + * + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @link www.doctrine-project.com + * @since 1.0 + * @version $Revision$ + * @author Benjamin Eberlei + * @author Guilherme Blanco + * @author Jonathan Wage + * @author Roman Borschel + */ +class MetadataFilter extends \FilterIterator implements \Countable +{ + /** + * Filter Metadatas by one or more filter options. + * + * @param array $metadatas + * @param array|string $filter + * @return array + */ + static public function filter(array $metadatas, $filter) + { + $metadatas = new MetadataFilter(new \ArrayIterator($metadatas), $filter); + return iterator_to_array($metadatas); + } + + private $_filter = array(); + + public function __construct(\ArrayIterator $metadata, $filter) + { + $this->_filter = (array)$filter; + parent::__construct($metadata); + } + + public function accept() + { + if (count($this->_filter) == 0) { + return true; + } + + $it = $this->getInnerIterator(); + $metadata = $it->current(); + + foreach ($this->_filter AS $filter) { + if (strpos($metadata->name, $filter) !== false) { + return true; + } + } + return false; + } + + public function count() + { + return count($this->getInnerIterator()); + } +} \ No newline at end of file