Author: romanb
Date: 2008-09-12 11:02:06 +0100 (Fri, 12 Sep 2008)
New Revision: 4925
Added:
trunk/lib/Doctrine/ORM/Id/AbstractIdGenerator.php
trunk/lib/Doctrine/ORM/Id/Assigned.php
trunk/lib/Doctrine/ORM/Id/IdentityGenerator.php
trunk/lib/Doctrine/ORM/Id/SequenceGenerator.php
trunk/lib/Doctrine/ORM/Id/SequenceIdentityGenerator.php
trunk/lib/Doctrine/ORM/Id/TableGenerator.php
Removed:
trunk/lib/Doctrine/Id/
Modified:
trunk/lib/Doctrine/ClassMetadata.php
trunk/lib/Doctrine/Connection/UnitOfWork.php
trunk/tests/lib/mocks/Doctrine_ClassMetadataMock.php
trunk/tests/lib/mocks/Doctrine_SequenceMock.php
Log:
moved id generators
Modified: trunk/lib/Doctrine/ClassMetadata.php
===================================================================
--- trunk/lib/Doctrine/ClassMetadata.php 2008-09-12 09:58:02 UTC (rev
4924)
+++ trunk/lib/Doctrine/ClassMetadata.php 2008-09-12 10:02:06 UTC (rev
4925)
@@ -792,13 +792,13 @@
protected function _createIdGenerator()
{
if ($this->_generatorType == self::GENERATOR_TYPE_IDENTITY) {
- $this->_idGenerator = new
Doctrine_Id_IdentityGenerator($this->_em);
+ $this->_idGenerator = new
Doctrine_ORM_Id_IdentityGenerator($this->_em);
} else if ($this->_generatorType == self::GENERATOR_TYPE_SEQUENCE) {
- $this->_idGenerator = new
Doctrine_Id_SequenceGenerator($this->_em);
+ $this->_idGenerator = new
Doctrine_ORM_Id_SequenceGenerator($this->_em);
} else if ($this->_generatorType == self::GENERATOR_TYPE_TABLE) {
- $this->_idGenerator = new Doctrine_Id_TableGenerator($this->_em);
+ $this->_idGenerator = new
Doctrine_ORM_Id_TableGenerator($this->_em);
} else {
- $this->_idGenerator = new Doctrine_Id_Assigned($this->_em);
+ $this->_idGenerator = new Doctrine_ORM_Id_Assigned($this->_em);
}
}
Modified: trunk/lib/Doctrine/Connection/UnitOfWork.php
===================================================================
--- trunk/lib/Doctrine/Connection/UnitOfWork.php 2008-09-12 09:58:02 UTC
(rev 4924)
+++ trunk/lib/Doctrine/Connection/UnitOfWork.php 2008-09-12 10:02:06 UTC
(rev 4925)
@@ -638,7 +638,7 @@
break;
case Doctrine_Entity::STATE_NEW:
$result = $class->getIdGenerator()->generate($entity);
- if ($result ==
Doctrine_Id_AbstractIdGenerator::POST_INSERT_INDICATOR) {
+ if ($result ==
Doctrine_ORM_Id_AbstractIdGenerator::POST_INSERT_INDICATOR) {
$insertNow[$entity->getOid()] = $entity;
} else {
$entity->_assignIdentifier($result);
Added: trunk/lib/Doctrine/ORM/Id/AbstractIdGenerator.php
===================================================================
--- trunk/lib/Doctrine/ORM/Id/AbstractIdGenerator.php
(rev 0)
+++ trunk/lib/Doctrine/ORM/Id/AbstractIdGenerator.php 2008-09-12 10:02:06 UTC
(rev 4925)
@@ -0,0 +1,24 @@
+<?php
+
+#namespace Doctrine::ORM::Id;
+
+/**
+ * Enter description here...
+ *
+ * @todo Rename to AbstractIdGenerator
+ */
+abstract class Doctrine_ORM_Id_AbstractIdGenerator
+{
+ const POST_INSERT_INDICATOR = 'POST_INSERT_INDICATOR';
+
+ protected $_em;
+
+ public function __construct(Doctrine_EntityManager $em)
+ {
+ $this->_em = $em;
+ }
+
+ abstract public function generate(Doctrine_Entity $entity);
+}
+
+?>
\ No newline at end of file
Added: trunk/lib/Doctrine/ORM/Id/Assigned.php
===================================================================
--- trunk/lib/Doctrine/ORM/Id/Assigned.php (rev 0)
+++ trunk/lib/Doctrine/ORM/Id/Assigned.php 2008-09-12 10:02:06 UTC (rev
4925)
@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * Special generator for application-assigned identifiers (doesnt really
generate anything).
+ *
+ * @since 2.0
+ */
+class Doctrine_ORM_Id_Assigned extends Doctrine_ORM_Id_AbstractIdGenerator
+{
+ /**
+ * Enter description here...
+ *
+ * @param Doctrine_Entity $entity
+ * @return unknown
+ * @override
+ */
+ public function generate(Doctrine_Entity $entity)
+ {
+ if ( ! $entity->_identifier()) {
+ throw Doctrine_IdException::missingAssignedId($entity);
+ }
+ }
+}
+
+?>
\ No newline at end of file
Added: trunk/lib/Doctrine/ORM/Id/IdentityGenerator.php
===================================================================
--- trunk/lib/Doctrine/ORM/Id/IdentityGenerator.php
(rev 0)
+++ trunk/lib/Doctrine/ORM/Id/IdentityGenerator.php 2008-09-12 10:02:06 UTC
(rev 4925)
@@ -0,0 +1,23 @@
+<?php
+
+class Doctrine_ORM_Id_IdentityGenerator extends
Doctrine_ORM_Id_AbstractIdGenerator
+{
+ /**
+ * Enter description here...
+ *
+ * @param Doctrine_Entity $entity
+ * @return unknown
+ * @override
+ */
+ public function generate(Doctrine_Entity $entity)
+ {
+ return self::POST_INSERT_INDICATOR;
+ }
+
+ public function getPostInsertId()
+ {
+ return $this->_em->getConnection()->lastInsertId();
+ }
+}
+
+?>
\ No newline at end of file
Added: trunk/lib/Doctrine/ORM/Id/SequenceGenerator.php
===================================================================
--- trunk/lib/Doctrine/ORM/Id/SequenceGenerator.php
(rev 0)
+++ trunk/lib/Doctrine/ORM/Id/SequenceGenerator.php 2008-09-12 10:02:06 UTC
(rev 4925)
@@ -0,0 +1,26 @@
+<?php
+
+class Doctrine_ORM_Id_SequenceGenerator extends
Doctrine_ORM_Id_AbstractIdGenerator
+{
+ private $_sequenceName;
+
+ public function __construct($sequenceName)
+ {
+ $this->_sequenceName = $sequenceName;
+ }
+
+ /**
+ * Enter description here...
+ *
+ * @param Doctrine_Entity $entity
+ * @override
+ */
+ public function generate(Doctrine_Entity $entity)
+ {
+ $conn = $this->_em->getConnection();
+ $sql =
$conn->getDatabasePlatform()->getSequenceNextValSql($this->_sequenceName);
+ return $conn->fetchOne($sql);
+ }
+}
+
+?>
\ No newline at end of file
Added: trunk/lib/Doctrine/ORM/Id/SequenceIdentityGenerator.php
===================================================================
--- trunk/lib/Doctrine/ORM/Id/SequenceIdentityGenerator.php
(rev 0)
+++ trunk/lib/Doctrine/ORM/Id/SequenceIdentityGenerator.php 2008-09-12
10:02:06 UTC (rev 4925)
@@ -0,0 +1,25 @@
+<?php
+
+class Doctrine_ORM_Id_SequenceIdentityGenerator extends
Doctrine_ORM_Id_IdentityGenerator
+{
+ private $_sequenceName;
+
+ public function __construct($sequenceName)
+ {
+ $this->_sequenceName = $sequenceName;
+ }
+
+ /**
+ * Enter description here...
+ *
+ * @param Doctrine_Connection $conn
+ * @override
+ */
+ public function getPostInsertId()
+ {
+ return $this->_em->getConnection()->lastInsertId($this->_sequenceName);
+ }
+
+}
+
+?>
\ No newline at end of file
Added: trunk/lib/Doctrine/ORM/Id/TableGenerator.php
===================================================================
--- trunk/lib/Doctrine/ORM/Id/TableGenerator.php
(rev 0)
+++ trunk/lib/Doctrine/ORM/Id/TableGenerator.php 2008-09-12 10:02:06 UTC
(rev 4925)
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * Id generator that uses a single-row database table and a hi/lo algorithm.
+ *
+ * @since 2.0
+ */
+class Doctrine_ORM_Id_TableGenerator extends
Doctrine_ORM_Id_AbstractIdGenerator
+{
+
+ public function generate(Doctrine_Entity $entity)
+ {
+ throw new Exception("Not implemented");
+ }
+
+}
+
+?>
\ No newline at end of file
Modified: trunk/tests/lib/mocks/Doctrine_ClassMetadataMock.php
===================================================================
--- trunk/tests/lib/mocks/Doctrine_ClassMetadataMock.php 2008-09-12
09:58:02 UTC (rev 4924)
+++ trunk/tests/lib/mocks/Doctrine_ClassMetadataMock.php 2008-09-12
10:02:06 UTC (rev 4925)
@@ -6,7 +6,7 @@
/* Mock API */
- public function setIdGenerator(Doctrine_Id_AbstractIdGenerator $g) {
+ public function setIdGenerator(Doctrine_ORM_Id_AbstractIdGenerator $g) {
$this->_idGenerator = $g;
}
Modified: trunk/tests/lib/mocks/Doctrine_SequenceMock.php
===================================================================
--- trunk/tests/lib/mocks/Doctrine_SequenceMock.php 2008-09-12 09:58:02 UTC
(rev 4924)
+++ trunk/tests/lib/mocks/Doctrine_SequenceMock.php 2008-09-12 10:02:06 UTC
(rev 4925)
@@ -1,6 +1,6 @@
<?php
-class Doctrine_SequenceMock extends Doctrine_Id_SequenceGenerator
+class Doctrine_SequenceMock extends Doctrine_ORM_Id_SequenceGenerator
{
private $_sequenceNumber = 0;
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"doctrine-svn" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.co.uk/group/doctrine-svn?hl=en-GB
-~----------~----~----~----~------~----~------~--~---