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
-~----------~----~----~----~------~----~------~--~---

Reply via email to