Changeset 4951 for trunk/lib/Doctrine

Show
Ignore:
Timestamp:
09/12/08 18:25:38 (4 months ago)
Author:
romanb
Message:

further cleanups

Location:
trunk/lib/Doctrine
Files:
8 added
6 removed
17 modified

Legend:

Unmodified
Added
Removed
  • trunk/lib/Doctrine/DBAL/Driver.php

    r4910 r4951  
    3333     * @return Doctrine::DBAL::SchemaManager 
    3434     */ 
    35     public function getSchemaManager(); 
     35    public function getSchemaManager(Doctrine_DBAL_Connection $conn); 
    3636} 
    3737 
  • trunk/lib/Doctrine/DBAL/Driver/PDOMsSql/Connection.php

    r4910 r4951  
    88 * @since 2.0 
    99 */ 
    10 class Doctrine_DBAL_Driver_PDOMsSql_Connection extends PDO implements Doctrine_DBAL_Connection 
     10class Doctrine_DBAL_Driver_PDOMsSql_Connection extends PDO implements Doctrine_DBAL_Driver_Connection 
    1111{ 
    12     private $_isolationLevel = Doctrine_DBAL_Connection::TRANSACTION_READ_COMMITTED; 
    13      
    14     /** 
    15      * Set the transacton isolation level. 
    16      * 
    17      * @param   string  standard isolation level (SQL-92) 
    18      *      portable modes: 
    19      *                  READ UNCOMMITTED (allows dirty reads) 
    20      *                  READ COMMITTED (prevents dirty reads) 
    21      *                  REPEATABLE READ (prevents nonrepeatable reads) 
    22      *                  SERIALIZABLE (prevents phantom reads) 
    23      * 
    24      * @link http://msdn2.microsoft.com/en-us/library/ms173763.aspx 
    25      * @throws PDOException                         if something fails at the PDO level 
    26      * @throws Doctrine_Transaction_Exception       if using unknown isolation level or unknown wait option 
    27      * @return void 
    28      * @override 
    29      */ 
    30     public function setTransactionIsolation($level, $options = array()) { 
    31         $sql = ""; 
    32         switch ($level) { 
    33             case Doctrine_DBAL_Connection::TRANSACTION_READ_UNCOMMITTED: 
    34                 $sql = 'READ UNCOMMITTED'; 
    35                 break; 
    36             case Doctrine_DBAL_Connection::TRANSACTION_READ_COMMITTED: 
    37                 $sql = 'READ COMMITTED'; 
    38                 break; 
    39             case Doctrine_DBAL_Connection::TRANSACTION_REPEATABLE_READ: 
    40                 $sql = 'REPEATABLE READ'; 
    41                 break; 
    42             case Doctrine_DBAL_Connection::TRANSACTION_SERIALIZABLE: 
    43                 $sql = 'SERIALIZABLE'; 
    44                 break; 
    45             default: 
    46                 throw new Doctrine_Transaction_Exception('isolation level is not supported: ' . $isolation); 
    47         } 
    48  
    49         $this->_isolationLevel = $level; 
    50         $this->exec('SET TRANSACTION ISOLATION LEVEL ' . $sql); 
    51     } 
    52      
    53     public function getTransactionIsolation() 
    54     { 
    55         return $this->_isolationLevel; 
    56     } 
    57      
    5812    /** 
    5913     * Performs the rollback. 
  • trunk/lib/Doctrine/DBAL/Driver/PDOMsSql/Driver.php

    r4910 r4951  
    1010    public function connect(array $params, $username = null, $password = null, array $driverOptions = array()) 
    1111    { 
    12         return new PDO($this->_constructPdoDsn($params), $username, $password, $driverOptions); 
     12        return new Doctrine_DBAL_Driver_MsSql_Connection( 
     13                $this->_constructPdoDsn($params), 
     14                $username, 
     15                $password, 
     16                $driverOptions); 
    1317    } 
    1418     
  • trunk/lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php

    r4910 r4951  
    1010    public function connect(array $params, $username = null, $password = null, array $driverOptions = array()) 
    1111    { 
    12         return new PDO($this->_constructPdoDsn($params), $username, $password, $driverOptions); 
     12        return new Doctrine_DBAL_Driver_PDOConnection( 
     13                $this->_constructPdoDsn($params), 
     14                $username, 
     15                $password, 
     16                $driverOptions); 
    1317    } 
    1418     
  • trunk/lib/Doctrine/DBAL/Driver/PDOOracle/Driver.php

    r4910 r4951  
    1010    public function connect(array $params, $username = null, $password = null, array $driverOptions = array()) 
    1111    { 
    12         return new PDO($this->_constructPdoDsn($params), $username, $password, $driverOptions); 
     12        return new Doctrine_DBAL_Driver_PDOConnection( 
     13                $this->_constructPdoDsn($params), 
     14                $username, 
     15                $password, 
     16                $driverOptions); 
    1317    } 
    1418     
  • trunk/lib/Doctrine/DBAL/Driver/PDOPgSql/Driver.php

    r4910 r4951  
    1313    public function connect(array $params, $username = null, $password = null, array $driverOptions = array()) 
    1414    { 
    15         return new PDO($this->_constructPdoDsn($params), $username, $password, $driverOptions); 
     15        return new Doctrine_DBAL_Driver_PDOConnection( 
     16                $this->_constructPdoDsn($params), 
     17                $username, 
     18                $password, 
     19                $driverOptions); 
    1620    } 
    1721     
  • trunk/lib/Doctrine/DBAL/Driver/PDOSqlite/Driver.php

    r4910 r4951  
    1010    public function connect(array $params, $username = null, $password = null, array $driverOptions = array()) 
    1111    { 
    12         return new PDO($this->_constructPdoDsn($params), $username, $password, $driverOptions); 
     12        return new Doctrine_DBAL_Driver_PDOConnection( 
     13                $this->_constructPdoDsn($params), 
     14                $username, 
     15                $password, 
     16                $driverOptions); 
    1317    } 
    1418     
     
    3337    public function getDatabasePlatform() 
    3438    { 
    35         return new Doctrine_DatabasePlatform_SqlitePlatform(); 
     39        return new Doctrine_DBAL_Platforms_SqlitePlatform(); 
    3640    } 
    3741     
    38     public function getSchemaManager(Doctrine_Connection $conn) 
     42    public function getSchemaManager(Doctrine_DBAL_Connection $conn) 
    3943    { 
    40         return new Doctrine_Schema_SqliteSchemaManager($conn); 
     44        return new Doctrine_DBAL_Schema_SqliteSchemaManager($conn); 
    4145    } 
    4246     
  • trunk/lib/Doctrine/DBAL/Platforms/AbstractPlatform.php

    r4910 r4951  
    17751775    } 
    17761776     
     1777    /** 
     1778     * Enter description here... 
     1779     * 
     1780     * @param unknown_type $level 
     1781     */ 
     1782    protected function _getTransactionIsolationLevelSql($level) 
     1783    { 
     1784        switch ($level) { 
     1785            case Doctrine_DBAL_Connection::TRANSACTION_READ_UNCOMMITTED: 
     1786                return 'READ UNCOMMITTED'; 
     1787            case Doctrine_DBAL_Connection::TRANSACTION_READ_COMMITTED: 
     1788                return 'READ COMMITTED'; 
     1789            case Doctrine_DBAL_Connection::TRANSACTION_REPEATABLE_READ: 
     1790                return 'REPEATABLE READ'; 
     1791            case Doctrine_DBAL_Connection::TRANSACTION_SERIALIZABLE: 
     1792                return 'SERIALIZABLE'; 
     1793            default: 
     1794                throw new Doctrine_Common_Exceptions_DoctrineException('isolation level is not supported: ' . $isolation); 
     1795        }  
     1796    } 
     1797     
     1798    /** 
     1799     * Enter description here... 
     1800     * 
     1801     * @param unknown_type $level 
     1802     */ 
     1803    public function getSetTransactionIsolationSql($level) 
     1804    { 
     1805        throw new Doctrine_Export_Exception('Set transaction isolation not supported by this platform.'); 
     1806    } 
     1807     
     1808    /** 
     1809     * Gets the default transaction isolation level of the platform. 
     1810     * 
     1811     * @return integer The default isolation level. 
     1812     * @see Doctrine::DBAL::Connection::TRANSACTION_* constants. 
     1813     */ 
     1814    public function getDefaultTransactionIsolationLevel() 
     1815    { 
     1816        return Doctrine_DBAL_Connection::TRANSACTION_READ_COMMITTED; 
     1817    } 
     1818     
    17771819     
    17781820    /* supports*() metods */ 
  • trunk/lib/Doctrine/DBAL/Platforms/FirebirdPlatform.php

    r4910 r4951  
    258258    } 
    259259     
     260    /** 
     261     * Enter description here... 
     262     * 
     263     * @param unknown_type $level 
     264     * @override 
     265     */ 
     266    protected function _getTransactionIsolationLevelSql($level) 
     267    { 
     268        switch ($level) { 
     269            case Doctrine_DBAL_Connection::TRANSACTION_READ_UNCOMMITTED: 
     270                return 'READ COMMITTED RECORD_VERSION'; 
     271            case Doctrine_DBAL_Connection::TRANSACTION_READ_COMMITTED: 
     272                return 'READ COMMITTED NO RECORD_VERSION'; 
     273            case Doctrine_DBAL_Connection::TRANSACTION_REPEATABLE_READ: 
     274                return 'SNAPSHOT'; 
     275            case Doctrine_DBAL_Connection::TRANSACTION_SERIALIZABLE: 
     276                return 'SNAPSHOT TABLE STABILITY'; 
     277            default: 
     278                return parent::_getTransactionIsolationLevelSql($level); 
     279        } 
     280    } 
     281     
     282    /** 
     283     * Enter description here... 
     284     * 
     285     * @param unknown_type $level 
     286     * @override 
     287     */ 
     288    public function getSetTransactionIsolationSql($level) 
     289    { 
     290        return 'SET TRANSACTION ISOLATION LEVEL ' . $this->_getTransactionIsolationLevelSql($level); 
     291    } 
     292     
    260293} 
    261294 
  • trunk/lib/Doctrine/DBAL/Platforms/MsSqlPlatform.php

    r4910 r4951  
    312312    } 
    313313     
     314    /** 
     315     * Enter description here... 
     316     * 
     317     * @param unknown_type $level 
     318     * @override 
     319     */ 
     320    public function getSetTransactionIsolationSql($level) 
     321    { 
     322        return 'SET TRANSACTION ISOLATION LEVEL ' . $this->_getTransactionIsolationLevelSql($level); 
     323    } 
     324     
    314325} 
    315326 
  • trunk/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php

    r4910 r4951  
    12351235        return 'DROP TABLE ' . $table; 
    12361236    } 
     1237     
     1238    /** 
     1239     * Enter description here... 
     1240     * 
     1241     * @param unknown_type $level 
     1242     * @override 
     1243     */ 
     1244    public function getSetTransactionIsolationSql($level) 
     1245    { 
     1246        return 'SET SESSION TRANSACTION ISOLATION LEVEL ' . $this->_getTransactionIsolationLevelSql($level); 
     1247    } 
    12371248} 
    12381249 
  • trunk/lib/Doctrine/DBAL/Platforms/OraclePlatform.php

    r4910 r4951  
    345345        return 'SELECT ' . $this->quoteIdentifier($sequenceName) . '.nextval FROM DUAL'; 
    346346    } 
     347     
     348    /** 
     349     * Enter description here... 
     350     * 
     351     * @param unknown_type $level 
     352     * @override 
     353     */ 
     354    public function getSetTransactionIsolationSql($level) 
     355    { 
     356        return 'ALTER SESSION ISOLATION LEVEL ' . $this->_getTransactionIsolationLevelSql($level); 
     357    } 
     358     
     359    /** 
     360     * Enter description here... 
     361     * 
     362     * @param unknown_type $level 
     363     * @override 
     364     */ 
     365    protected function _getTransactionIsolationLevelSql($level) 
     366    { 
     367        switch ($level) { 
     368            case Doctrine_DBAL_Connection::TRANSACTION_READ_UNCOMMITTED: 
     369                return 'READ COMMITTED'; 
     370            case Doctrine_DBAL_Connection::TRANSACTION_READ_COMMITTED: 
     371            case Doctrine_DBAL_Connection::TRANSACTION_REPEATABLE_READ: 
     372            case Doctrine_DBAL_Connection::TRANSACTION_SERIALIZABLE: 
     373                return 'SERIALIZABLE'; 
     374            default: 
     375                return parent::_getTransactionIsolationLevelSql($level); 
     376        } 
     377    } 
    347378} 
    348379 
  • trunk/lib/Doctrine/DBAL/Platforms/PostgreSqlPlatform.php

    r4910 r4951  
    990990        return "SELECT NEXTVAL('" . $sequenceName . "')"; 
    991991    } 
     992     
     993    /** 
     994     * Enter description here... 
     995     * 
     996     * @param unknown_type $level 
     997     * @override 
     998     */ 
     999    public function getSetTransactionIsolationSql($level) 
     1000    { 
     1001        return 'SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL ' 
     1002                . $this->_getTransactionIsolationLevelSql($level); 
     1003    } 
    9921004} 
    9931005 
  • trunk/lib/Doctrine/DBAL/Platforms/SqlitePlatform.php

    r4910 r4951  
    361361                     'fixed'    => $fixed); 
    362362    } 
     363     
     364    /** 
     365     * Enter description here... 
     366     * 
     367     * @param unknown_type $level 
     368     * @override 
     369     */ 
     370    protected function _getTransactionIsolationLevelSql($level) 
     371    { 
     372        switch ($level) { 
     373            case Doctrine_DBAL_Connection::TRANSACTION_READ_UNCOMMITTED: 
     374                return 0; 
     375            case Doctrine_DBAL_Connection::TRANSACTION_READ_COMMITTED: 
     376            case Doctrine_DBAL_Connection::TRANSACTION_REPEATABLE_READ: 
     377            case Doctrine_DBAL_Connection::TRANSACTION_SERIALIZABLE: 
     378                return 1; 
     379            default: 
     380                return parent::_getTransactionIsolationLevelSql($level); 
     381        } 
     382    } 
     383     
     384    /** 
     385     * Enter description here... 
     386     * 
     387     * @param unknown_type $level 
     388     * @override 
     389     */ 
     390    public function getSetTransactionIsolationSql($level) 
     391    { 
     392        return 'PRAGMA read_uncommitted = ' . $this->_getTransactionIsolationLevelSql($level); 
     393    } 
    363394} 
    364395 
  • trunk/lib/Doctrine/ORM/EntityManager.php

    r4947 r4951  
    149149     * @param string $name 
    150150     */ 
    151     protected function __construct(Doctrine_Connection $conn, $name, Doctrine_Common_Configuration $config, 
     151    protected function __construct(Doctrine_DBAL_Connection $conn, $name, Doctrine_Common_Configuration $config, 
    152152            Doctrine_Common_EventManager $eventManager) 
    153153    { 
     
    158158        $this->_metadataFactory = new Doctrine_ClassMetadata_Factory( 
    159159                $this, new Doctrine_ClassMetadata_CodeDriver()); 
    160         $this->_unitOfWork = new Doctrine_Connection_UnitOfWork($this); 
     160        $this->_unitOfWork = new Doctrine_ORM_UnitOfWork($this); 
    161161        $this->_nullObject = Doctrine_ORM_Internal_Null::$INSTANCE; 
    162162    } 
  • trunk/lib/Doctrine/Query/Parser.php

    r4909 r4951  
    131131        $this->_input = $query->getDql(); 
    132132        $this->_scanner = new Doctrine_Query_Scanner($this->_input); 
    133         $this->_sqlBuilder = Doctrine_Query_SqlBuilder::fromConnection($this->_em); 
     133        $this->_sqlBuilder = new Doctrine_Query_SqlBuilder($this->_em); 
    134134        $this->_keywordTable = new Doctrine_Query_Token(); 
    135135 
  • trunk/lib/Doctrine/Query/SqlBuilder.php

    r4947 r4951  
    2222 
    2323/** 
    24  * Base class of each Sql Builder object 
     24 * The SqlBuilder. Creates SQL out of an AST. 
     25 *  
     26 * INTERNAL: For platform-specific SQL, the platform of the connection should be used. 
     27 * ($this->_connection->getDatabasePlatform()) 
    2528 * 
    2629 * @package     Doctrine 
     
    3336 * @version     $Revision$ 
    3437 */ 
    35 abstract class Doctrine_Query_SqlBuilder 
     38class Doctrine_Query_SqlBuilder 
    3639{ 
    37     /** 
    38      * The Connection object. 
    39      * 
    40      * @var Doctrine_Connection 
    41      */ 
    42     protected $_connection; 
     40    protected $_em; 
     41    protected $_conn; 
    4342 
    44  
    45     public static function fromConnection(Doctrine_ORM_EntityManager $entityManager) 
     43    public function __construct(Doctrine_ORM_EntityManager $em) 
    4644    { 
    47         $connection = $entityManager->getConnection(); 
    48  
    49         $className = "Doctrine_Query_SqlBuilder_" . $connection->getDriverName(); 
    50         $sqlBuilder = new $className(); 
    51         $sqlBuilder->_connection = $connection; 
    52  
    53         return $sqlBuilder; 
     45        $this->_em = $em; 
     46        $this->_conn = $this->_em->getConnection(); 
    5447    } 
    55  
    5648 
    5749    /** 
     
    6557    } 
    6658 
    67  
    6859    /** 
    6960     * @nodoc 
     
    7162    public function quoteIdentifier($identifier) 
    7263    { 
    73         return $this->_connection->quoteIdentifier($identifier); 
     64        return $this->_conn->quoteIdentifier($identifier); 
    7465    } 
    75  
    76  
    77  
    78     // Start Common SQL generations 
    79     // Here we follow the SQL-99 specifications available at: 
    80     // http://savage.net.au/SQL/sql-99.bnf 
    81  
    82  
    83  
    84     // End of Common SQL generations 
    8566  
    8667}