1
0
Fork 0
mirror of synced 2025-04-03 13:23:37 +03:00

Made ClassMetadataBuilder support ClassMetadataInfo instead of ClassMetadata. Fixed DDC-1508.

This commit is contained in:
Guilherme Blanco 2011-12-09 00:04:47 -05:00
parent 33c5b639b0
commit 0febf06114

View file

@ -19,7 +19,8 @@
namespace Doctrine\ORM\Mapping\Builder; namespace Doctrine\ORM\Mapping\Builder;
use Doctrine\ORM\Mapping\ClassMetadata; use Doctrine\ORM\Mapping\ClassMetadata,
Doctrine\ORM\Mapping\ClassMetadataInfo;
/** /**
* Builder Object for ClassMetadata * Builder Object for ClassMetadata
@ -28,18 +29,19 @@ use Doctrine\ORM\Mapping\ClassMetadata;
* @link www.doctrine-project.com * @link www.doctrine-project.com
* @since 2.2 * @since 2.2
* @author Benjamin Eberlei <kontakt@beberlei.de> * @author Benjamin Eberlei <kontakt@beberlei.de>
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
*/ */
class ClassMetadataBuilder class ClassMetadataBuilder
{ {
/** /**
* @var ClassMetadata * @var \Doctrine\ORM\Mapping\ClassMetadataInfo
*/ */
private $cm; private $cm;
/** /**
* @param ClassMetadata $cm * @param \Doctrine\ORM\Mapping\ClassMetadataInfo $cm
*/ */
public function __construct(ClassMetadata $cm) public function __construct(ClassMetadataInfo $cm)
{ {
$this->cm = $cm; $this->cm = $cm;
} }
@ -60,6 +62,7 @@ class ClassMetadataBuilder
public function setMappedSuperClass() public function setMappedSuperClass()
{ {
$this->cm->isMappedSuperclass = true; $this->cm->isMappedSuperclass = true;
return $this; return $this;
} }
@ -72,6 +75,7 @@ class ClassMetadataBuilder
public function setCustomRepositoryClass($repositoryClassName) public function setCustomRepositoryClass($repositoryClassName)
{ {
$this->cm->setCustomRepositoryClass($repositoryClassName); $this->cm->setCustomRepositoryClass($repositoryClassName);
return $this; return $this;
} }
@ -83,6 +87,7 @@ class ClassMetadataBuilder
public function setReadOnly() public function setReadOnly()
{ {
$this->cm->markReadOnly(); $this->cm->markReadOnly();
return $this; return $this;
} }
@ -95,6 +100,7 @@ class ClassMetadataBuilder
public function setTable($name) public function setTable($name)
{ {
$this->cm->setPrimaryTable(array('name' => $name)); $this->cm->setPrimaryTable(array('name' => $name));
return $this; return $this;
} }
@ -110,7 +116,9 @@ class ClassMetadataBuilder
if (!isset($this->cm->table['indexes'])) { if (!isset($this->cm->table['indexes'])) {
$this->cm->table['indexes'] = array(); $this->cm->table['indexes'] = array();
} }
$this->cm->table['indexes'][$name] = array('columns' => $columns); $this->cm->table['indexes'][$name] = array('columns' => $columns);
return $this; return $this;
} }
@ -123,10 +131,12 @@ class ClassMetadataBuilder
*/ */
public function addUniqueConstraint(array $columns, $name) public function addUniqueConstraint(array $columns, $name)
{ {
if (!isset($this->cm->table['uniqueConstraints'])) { if ( ! isset($this->cm->table['uniqueConstraints'])) {
$this->cm->table['uniqueConstraints'] = array(); $this->cm->table['uniqueConstraints'] = array();
} }
$this->cm->table['uniqueConstraints'][$name] = array('columns' => $columns); $this->cm->table['uniqueConstraints'][$name] = array('columns' => $columns);
return $this; return $this;
} }
@ -143,6 +153,7 @@ class ClassMetadataBuilder
'name' => $name, 'name' => $name,
'query' => $dqlQuery, 'query' => $dqlQuery,
)); ));
return $this; return $this;
} }
@ -154,6 +165,7 @@ class ClassMetadataBuilder
public function setJoinedTableInheritance() public function setJoinedTableInheritance()
{ {
$this->cm->setInheritanceType(ClassMetadata::INHERITANCE_TYPE_JOINED); $this->cm->setInheritanceType(ClassMetadata::INHERITANCE_TYPE_JOINED);
return $this; return $this;
} }
@ -165,6 +177,7 @@ class ClassMetadataBuilder
public function setSingleTableInheritance() public function setSingleTableInheritance()
{ {
$this->cm->setInheritanceType(ClassMetadata::INHERITANCE_TYPE_SINGLE_TABLE); $this->cm->setInheritanceType(ClassMetadata::INHERITANCE_TYPE_SINGLE_TABLE);
return $this; return $this;
} }
@ -181,12 +194,13 @@ class ClassMetadataBuilder
'type' => $type, 'type' => $type,
'length' => $length, 'length' => $length,
)); ));
return $this; return $this;
} }
/** /**
* Add a subclass to this inheritance hierachy. * Add a subclass to this inheritance hierachy.
* *
* @param string $name * @param string $name
* @param string $class * @param string $class
* @return ClassMetadataBuilder * @return ClassMetadataBuilder
@ -194,6 +208,7 @@ class ClassMetadataBuilder
public function addDiscriminatorMapClass($name, $class) public function addDiscriminatorMapClass($name, $class)
{ {
$this->cm->addDiscriminatorMapClass($name, $class); $this->cm->addDiscriminatorMapClass($name, $class);
return $this; return $this;
} }
@ -205,6 +220,7 @@ class ClassMetadataBuilder
public function setChangeTrackingPolicyDeferredExplicit() public function setChangeTrackingPolicyDeferredExplicit()
{ {
$this->cm->setChangeTrackingPolicy(ClassMetadata::CHANGETRACKING_DEFERRED_EXPLICIT); $this->cm->setChangeTrackingPolicy(ClassMetadata::CHANGETRACKING_DEFERRED_EXPLICIT);
return $this; return $this;
} }
@ -216,12 +232,13 @@ class ClassMetadataBuilder
public function setChangeTrackingPolicyNotify() public function setChangeTrackingPolicyNotify()
{ {
$this->cm->setChangeTrackingPolicy(ClassMetadata::CHANGETRACKING_NOTIFY); $this->cm->setChangeTrackingPolicy(ClassMetadata::CHANGETRACKING_NOTIFY);
return $this; return $this;
} }
/** /**
* Add lifecycle event * Add lifecycle event
* *
* @param string $methodName * @param string $methodName
* @param string $event * @param string $event
* @return ClassMetadataBuilder * @return ClassMetadataBuilder
@ -229,6 +246,7 @@ class ClassMetadataBuilder
public function addLifecycleEvent($methodName, $event) public function addLifecycleEvent($methodName, $event)
{ {
$this->cm->addLifecycleCallback($methodName, $event); $this->cm->addLifecycleCallback($methodName, $event);
return $this; return $this;
} }
@ -243,7 +261,9 @@ class ClassMetadataBuilder
{ {
$mapping['fieldName'] = $name; $mapping['fieldName'] = $name;
$mapping['type'] = $type; $mapping['type'] = $type;
$this->cm->mapField($mapping); $this->cm->mapField($mapping);
return $this; return $this;
} }
@ -256,12 +276,18 @@ class ClassMetadataBuilder
*/ */
public function createField($name, $type) public function createField($name, $type)
{ {
return new FieldBuilder($this, array('fieldName' => $name, 'type' => $type)); return new FieldBuilder(
$this,
array(
'fieldName' => $name,
'type' => $type
)
);
} }
/** /**
* Add a simple many to one association, optionally with the inversed by field. * Add a simple many to one association, optionally with the inversed by field.
* *
* @param string $name * @param string $name
* @param string $targetEntity * @param string $targetEntity
* @param string|null $inversedBy * @param string|null $inversedBy
@ -270,9 +296,11 @@ class ClassMetadataBuilder
public function addManyToOne($name, $targetEntity, $inversedBy = null) public function addManyToOne($name, $targetEntity, $inversedBy = null)
{ {
$builder = $this->createManyToOne($name, $targetEntity); $builder = $this->createManyToOne($name, $targetEntity);
if ($inversedBy) { if ($inversedBy) {
$builder->setInversedBy($inversedBy); $builder->setInversedBy($inversedBy);
} }
return $builder->build(); return $builder->build();
} }
@ -287,19 +315,33 @@ class ClassMetadataBuilder
*/ */
public function createManyToOne($name, $targetEntity) public function createManyToOne($name, $targetEntity)
{ {
return new AssociationBuilder($this, array('fieldName' => $name, 'targetEntity' => $targetEntity), ClassMetadata::MANY_TO_ONE); return new AssociationBuilder(
$this,
array(
'fieldName' => $name,
'targetEntity' => $targetEntity
),
ClassMetadata::MANY_TO_ONE
);
} }
/** /**
* Create OneToOne Assocation Builder * Create OneToOne Assocation Builder
* *
* @param string $name * @param string $name
* @param string $targetEntity * @param string $targetEntity
* @return AssociationBuilder * @return AssociationBuilder
*/ */
public function createOneToOne($name, $targetEntity) public function createOneToOne($name, $targetEntity)
{ {
return new AssociationBuilder($this, array('fieldName' => $name, 'targetEntity' => $targetEntity), ClassMetadata::ONE_TO_ONE); return new AssociationBuilder(
$this,
array(
'fieldName' => $name,
'targetEntity' => $targetEntity
),
ClassMetadata::ONE_TO_ONE
);
} }
/** /**
@ -314,6 +356,7 @@ class ClassMetadataBuilder
{ {
$builder = $this->createOneToOne($name, $targetEntity); $builder = $this->createOneToOne($name, $targetEntity);
$builder->setMappedBy($mappedBy); $builder->setMappedBy($mappedBy);
return $builder->build(); return $builder->build();
} }
@ -328,9 +371,11 @@ class ClassMetadataBuilder
public function addOwningOneToOne($name, $targetEntity, $inversedBy = null) public function addOwningOneToOne($name, $targetEntity, $inversedBy = null)
{ {
$builder = $this->createOneToOne($name, $targetEntity); $builder = $this->createOneToOne($name, $targetEntity);
if ($inversedBy) { if ($inversedBy) {
$builder->setInversedBy($inversedBy); $builder->setInversedBy($inversedBy);
} }
return $builder->build(); return $builder->build();
} }
@ -343,12 +388,19 @@ class ClassMetadataBuilder
*/ */
public function createManyToMany($name, $targetEntity) public function createManyToMany($name, $targetEntity)
{ {
return new ManyToManyAssociationBuilder($this, array('fieldName' => $name, 'targetEntity' => $targetEntity), ClassMetadata::MANY_TO_MANY); return new ManyToManyAssociationBuilder(
$this,
array(
'fieldName' => $name,
'targetEntity' => $targetEntity
),
ClassMetadata::MANY_TO_MANY
);
} }
/** /**
* Add a simple owning many to many assocation. * Add a simple owning many to many assocation.
* *
* @param string $name * @param string $name
* @param string $targetEntity * @param string $targetEntity
* @param string|null $inversedBy * @param string|null $inversedBy
@ -357,9 +409,11 @@ class ClassMetadataBuilder
public function addOwningManyToMany($name, $targetEntity, $inversedBy = null) public function addOwningManyToMany($name, $targetEntity, $inversedBy = null)
{ {
$builder = $this->createManyToMany($name, $targetEntity); $builder = $this->createManyToMany($name, $targetEntity);
if ($inversedBy) { if ($inversedBy) {
$builder->setInversedBy($inversedBy); $builder->setInversedBy($inversedBy);
} }
return $builder->build(); return $builder->build();
} }
@ -375,24 +429,32 @@ class ClassMetadataBuilder
{ {
$builder = $this->createManyToMany($name, $targetEntity); $builder = $this->createManyToMany($name, $targetEntity);
$builder->setMappedBy($mappedBy); $builder->setMappedBy($mappedBy);
return $builder->build(); return $builder->build();
} }
/** /**
* Create a one to many assocation builder * Create a one to many assocation builder
* *
* @param string $name * @param string $name
* @param string $targetEntity * @param string $targetEntity
* @return OneToManyAssociationBuilder * @return OneToManyAssociationBuilder
*/ */
public function createOneToMany($name, $targetEntity) public function createOneToMany($name, $targetEntity)
{ {
return new OneToManyAssociationBuilder($this, array('fieldName' => $name, 'targetEntity' => $targetEntity), ClassMetadata::ONE_TO_MANY); return new OneToManyAssociationBuilder(
$this,
array(
'fieldName' => $name,
'targetEntity' => $targetEntity
),
ClassMetadata::ONE_TO_MANY
);
} }
/** /**
* Add simple OneToMany assocation. * Add simple OneToMany assocation.
* *
* @param string $name * @param string $name
* @param string $targetEntity * @param string $targetEntity
* @param string $mappedBy * @param string $mappedBy
@ -402,6 +464,7 @@ class ClassMetadataBuilder
{ {
$builder = $this->createOneToMany($name, $targetEntity); $builder = $this->createOneToMany($name, $targetEntity);
$builder->setMappedBy($mappedBy); $builder->setMappedBy($mappedBy);
return $builder->build(); return $builder->build();
} }
} }