[limb-svn] r7015 - in 3.x/trunk/limb/dbal: src/drivers src/drivers/linter src/drivers/mysql src/drivers/mysqli src/drivers/oci src/drivers/pgsql src/drivers/sqlite src/toolkit tests/cases/non-driver

svn at limb-project.com svn at limb-project.com
Tue May 13 16:02:24 MSD 2008


Author: serega
Date: 2008-05-13 16:02:24 +0400 (Tue, 13 May 2008)
New Revision: 7015
URL: http://fisheye.limb-project.com/changelog/limb/?cs=7015

Added:
   3.x/trunk/limb/dbal/src/drivers/lmbDbBaseConnection.class.php
Modified:
   3.x/trunk/limb/dbal/src/drivers/linter/lmbLinterConnection.class.php
   3.x/trunk/limb/dbal/src/drivers/lmbDbConnection.interface.php
   3.x/trunk/limb/dbal/src/drivers/mysql/lmbMysqlConnection.class.php
   3.x/trunk/limb/dbal/src/drivers/mysqli/lmbMysqliConnection.class.php
   3.x/trunk/limb/dbal/src/drivers/oci/lmbOciConnection.class.php
   3.x/trunk/limb/dbal/src/drivers/pgsql/lmbPgsqlConnection.class.php
   3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteConnection.class.php
   3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteRecord.class.php
   3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteStatement.class.php
   3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteTypeInfo.class.php
   3.x/trunk/limb/dbal/src/toolkit/lmbDbTools.class.php
   3.x/trunk/limb/dbal/tests/cases/non-driver/lmbDBALTest.class.php
Log:
-- added abstract lmbDbBaseConnection class with :: getDsnString() method.
-- fixed all db connections, now they all extend new lmbDbBaseConnection class
-- minor fixes in lmbDbTools (added proper casting of $dsn parameter into lmbDbDSN object).
-- fixed lmbSqlite driver. Not sure if all works properly, simply copied necessary functionality from Mysql driver that allowed to pass the tests)

Modified: 3.x/trunk/limb/dbal/src/drivers/linter/lmbLinterConnection.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/linter/lmbLinterConnection.class.php	2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/drivers/linter/lmbLinterConnection.class.php	2008-05-13 12:02:24 UTC (rev 7015)
@@ -6,7 +6,7 @@
  * @copyright  Copyright © 2004-2007 BIT(http://bit-creative.com)
  * @license    LGPL http://www.gnu.org/copyleft/lesser.html
  */
-lmb_require('limb/dbal/src/drivers/lmbDbConnection.interface.php');
+lmb_require('limb/dbal/src/drivers/lmbDbBaseConnection.class.php');
 lmb_require(dirname(__FILE__) . '/lmbLinterQueryStatement.class.php');
 lmb_require(dirname(__FILE__) . '/lmbLinterDropStatement.class.php');
 lmb_require(dirname(__FILE__) . '/lmbLinterInsertStatement.class.php');
@@ -21,25 +21,18 @@
  * @package dbal
  * @version $Id: $
  */
-class lmbLinterConnection implements lmbDbConnection
+class lmbLinterConnection extends lmbDbBaseConnection
 {
   const CURSOR_POOL_LIMIT = 64;
   const LINTER_EMPTY_DATASET = -18;
   
   protected $connectionId;
-  protected $config;
   protected $transactionCount = 0;
   protected $cursorPool = array();
   protected $mode = null;
   protected $useConnection = false;
   protected $debug = false;
   
-
-  function __construct($config)
-  {
-    $this->config = $config;
-  }
-
   function getType()
   {
     return 'linter';
@@ -53,11 +46,6 @@
     return $this->connectionId;
   }
 
-  function getHash()
-  {
-    return crc32(serialize($this->config));
-  }
-
   function getConfigValue($param = null)
   {
     if (is_null($param))
@@ -101,12 +89,7 @@
       linter_set_cursor_opt($this->connectionId, CO_DT_FORMAT, "YYYY-MM-DD HH:MI:SS");
       //linter_set_cursor_opt($this->connectionId, CO_DECIMAL_AS_DOUBLE, 1);
     }
-	
-
-
   }
-  
-  
 
   function __wakeup()
   {

Added: 3.x/trunk/limb/dbal/src/drivers/lmbDbBaseConnection.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/lmbDbBaseConnection.class.php	                        (rev 0)
+++ 3.x/trunk/limb/dbal/src/drivers/lmbDbBaseConnection.class.php	2008-05-13 12:02:24 UTC (rev 7015)
@@ -0,0 +1,49 @@
+<?php
+/*
+ * Limb PHP Framework
+ *
+ * @link http://limb-project.com 
+ * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
+ * @license    LGPL http://www.gnu.org/copyleft/lesser.html 
+ */
+
+lmb_require('limb/dbal/src/drivers/lmbDbConnection.interface.php');
+ 
+/**
+ * class lmbBaseDbConnection.
+ * A base class for all connection classes
+ *
+ * @package dbal
+ * @version $Id$
+ */
+abstract class lmbDbBaseConnection implements lmbDbConnection
+{
+  protected $config;
+  protected $dsn_string;
+  
+  function __construct($config, $dsn_string = null)
+  {
+    $this->config = $config;
+    if(is_object($config) && ($config instanceof lmbDbDSN))
+      $this->dsn_string = $config->toString();
+    else
+      $this->dsn_string = $dsn_string;
+  }
+  
+  function getConfig()
+  {
+    return $this->config;
+  }
+  
+  function getHash()
+  {
+    return crc32(serialize($this->config));
+  }
+  
+  function getDsnString()
+  {
+    return $this->dsn_string;
+  }
+}
+
+

Modified: 3.x/trunk/limb/dbal/src/drivers/lmbDbConnection.interface.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/lmbDbConnection.interface.php	2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/drivers/lmbDbConnection.interface.php	2008-05-13 12:02:24 UTC (rev 7015)
@@ -18,6 +18,7 @@
   function getType();
   function getConnectionId();
   function getHash();
+  function getDsnString();
   function connect();
   function disconnect();
   function beginTransaction();

Modified: 3.x/trunk/limb/dbal/src/drivers/mysql/lmbMysqlConnection.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/mysql/lmbMysqlConnection.class.php	2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/drivers/mysql/lmbMysqlConnection.class.php	2008-05-13 12:02:24 UTC (rev 7015)
@@ -7,7 +7,7 @@
  * @license    LGPL http://www.gnu.org/copyleft/lesser.html
  */
 
-lmb_require('limb/dbal/src/drivers/lmbDbConnection.interface.php');
+lmb_require('limb/dbal/src/drivers/lmbDbBaseConnection.class.php');
 lmb_require(dirname(__FILE__) . '/lmbMysqlDbInfo.class.php');
 lmb_require(dirname(__FILE__) . '/lmbMysqlQueryStatement.class.php');
 lmb_require(dirname(__FILE__) . '/lmbMysqlInsertStatement.class.php');
@@ -21,17 +21,10 @@
  * @package dbal
  * @version $Id$
  */
-class lmbMysqlConnection implements lmbDbConnection
+class lmbMysqlConnection extends lmbDbBaseConnection
 {
-
   protected $connectionId;
-  protected $config;
 
-  function __construct($config)
-  {
-    $this->config = $config;
-  }
-
   function getType()
   {
     return 'mysql';
@@ -46,11 +39,6 @@
     return $this->connectionId;
   }
 
-  function getHash()
-  {
-    return crc32(serialize($this->config));
-  }
-
   function connect()
   {
     $this->connectionId = mysql_connect($this->config['host'],

Modified: 3.x/trunk/limb/dbal/src/drivers/mysqli/lmbMysqliConnection.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/mysqli/lmbMysqliConnection.class.php	2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/drivers/mysqli/lmbMysqliConnection.class.php	2008-05-13 12:02:24 UTC (rev 7015)
@@ -7,7 +7,7 @@
  * @license    LGPL http://www.gnu.org/copyleft/lesser.html
  */
 
-lmb_require('limb/dbal/src/drivers/lmbDbConnection.interface.php');
+lmb_require('limb/dbal/src/drivers/lmbDbBaseConnection.class.php');
 lmb_require(dirname(__FILE__) . '/lmbMysqliDbInfo.class.php');
 lmb_require(dirname(__FILE__) . '/lmbMysqliQueryStatement.class.php');
 lmb_require(dirname(__FILE__) . '/lmbMysqliInsertStatement.class.php');
@@ -22,17 +22,10 @@
  * @package dbal
  * @version $Id: lmbMysqlConnection.class.php 6848 2008-03-21 13:44:08Z svk $
  */
-class lmbMysqliConnection implements lmbDbConnection
+class lmbMysqliConnection extends lmbDbBaseConnection
 {
-
   protected $connectionId;
-  protected $config;
 
-  function __construct($config)
-  {
-    $this->config = $config;
-  }
-
   function getType()
   {
     return 'mysqli';
@@ -47,11 +40,6 @@
     return $this->connectionId;
   }
 
-  function getHash()
-  {
-    return crc32(serialize($this->config));
-  }
-
   function connect()
   {
     $this->connectionId = mysqli_connect($this->config['host'],

Modified: 3.x/trunk/limb/dbal/src/drivers/oci/lmbOciConnection.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/oci/lmbOciConnection.class.php	2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/drivers/oci/lmbOciConnection.class.php	2008-05-13 12:02:24 UTC (rev 7015)
@@ -7,7 +7,7 @@
  * @license    LGPL http://www.gnu.org/copyleft/lesser.html
  */
 lmb_require('limb/dbal/src/exception/lmbDbException.class.php');
-lmb_require('limb/dbal/src/drivers/lmbDbConnection.interface.php');
+lmb_require('limb/dbal/src/drivers/lmbDbBaseConnection.class.php');
 lmb_require(dirname(__FILE__) . '/lmbOciDbInfo.class.php');
 lmb_require(dirname(__FILE__) . '/lmbOciQueryStatement.class.php');
 lmb_require(dirname(__FILE__) . '/lmbOciInsertStatement.class.php');
@@ -23,24 +23,13 @@
  * @package dbal
  * @version $Id$
  */
-class lmbOciConnection implements lmbDbConnection
+class lmbOciConnection extends lmbDbBaseConnection
 {
   protected $connectionId;
-  protected $config;
 
   //Transaction state. Should be either OCI_COMMIT_ON_SUCCESS or OCI_DEFAULT
   protected $tstate = OCI_COMMIT_ON_SUCCESS;
 
-  function __construct($config)
-  {
-    $this->config = $config;
-  }
-
-  function getConfig()
-  {
-    return $this->config;
-  }
-
   function getType()
   {
     return 'oci';
@@ -53,11 +42,6 @@
     return $this->connectionId;
   }
 
-  function getHash()
-  {
-    return crc32(serialize($this->config));
-  }
-
   //based on Creole code
   function connect()
   {

Modified: 3.x/trunk/limb/dbal/src/drivers/pgsql/lmbPgsqlConnection.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/pgsql/lmbPgsqlConnection.class.php	2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/drivers/pgsql/lmbPgsqlConnection.class.php	2008-05-13 12:02:24 UTC (rev 7015)
@@ -6,7 +6,7 @@
  * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
  * @license    LGPL http://www.gnu.org/copyleft/lesser.html
  */
-lmb_require('limb/dbal/src/drivers/lmbDbConnection.interface.php');
+lmb_require('limb/dbal/src/drivers/lmbDbBaseConnection.class.php');
 lmb_require(dirname(__FILE__) . '/lmbPgsqlQueryStatement.class.php');
 lmb_require(dirname(__FILE__) . '/lmbPgsqlDropStatement.class.php');
 lmb_require(dirname(__FILE__) . '/lmbPgsqlInsertStatement.class.php');
@@ -21,17 +21,11 @@
  * @package dbal
  * @version $Id$
  */
-class lmbPgsqlConnection implements lmbDbConnection
+class lmbPgsqlConnection extends lmbDbBaseConnection
 {
   protected $connectionId;
-  protected $config;
   protected $statement_number = 0;
 
-  function __construct($config)
-  {
-    $this->config = $config;
-  }
-
   function getType()
   {
     return 'pgsql';
@@ -51,11 +45,6 @@
       return ++$this->statement_number;
   }
 
-  function getHash()
-  {
-    return crc32(serialize($this->config));
-  }
-
   function connect()
   {
 

Modified: 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteConnection.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteConnection.class.php	2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteConnection.class.php	2008-05-13 12:02:24 UTC (rev 7015)
@@ -7,7 +7,7 @@
  * @license    LGPL http://www.gnu.org/copyleft/lesser.html
  */
 
-lmb_require('limb/dbal/src/drivers/lmbDbConnection.interface.php');
+lmb_require('limb/dbal/src/drivers/lmbDbBaseConnection.class.php');
 lmb_require(dirname(__FILE__) . '/lmbSqliteDbInfo.class.php');
 lmb_require(dirname(__FILE__) . '/lmbSqliteQueryStatement.class.php');
 lmb_require(dirname(__FILE__) . '/lmbSqliteInsertStatement.class.php');
@@ -23,17 +23,11 @@
  * @package dbal
  * @version $Id$
  */
-class lmbSqliteConnection implements lmbDbConnection
+class lmbSqliteConnection extends lmbDbBaseConnection
 {
   protected $connectionId;
-  protected $config;
   protected $in_transaction = false;
 
-  function __construct($config)
-  {
-    $this->config = $config;
-  }
-
   function getType()
   {
     return 'sqlite';
@@ -47,11 +41,6 @@
     return $this->connectionId;
   }
 
-  function getHash()
-  {
-    return crc32(serialize($this->config));
-  }
-
   function connect()
   {
     $this->connectionId = sqlite_open($this->config['database'], 0666, $error);

Modified: 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteRecord.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteRecord.class.php	2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteRecord.class.php	2008-05-13 12:02:24 UTC (rev 7015)
@@ -77,6 +77,12 @@
     $this->properties = array();
   }
 
+  function getBit($name)
+  {
+    $value = $this->get($name);
+    return is_null($value) ?  null : bindec($value);
+  }
+  
   function getInteger($name)
   {
     $value = $this->get($name);

Modified: 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteStatement.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteStatement.class.php	2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteStatement.class.php	2008-05-13 12:02:24 UTC (rev 7015)
@@ -36,6 +36,11 @@
     $this->parameters[$name] = 'null';
   }
 
+  function setBit($name, $value)
+  {
+    $this->parameters[$name] = decbin($value);
+  } 
+  
   function setSmallInt($name, $value)
   {
     $this->parameters[$name] = is_null($value) ?  'null' : intval($value);

Modified: 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteTypeInfo.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteTypeInfo.class.php	2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteTypeInfo.class.php	2008-05-13 12:02:24 UTC (rev 7015)
@@ -20,8 +20,9 @@
   function getNativeToColumnTypeMapping()
   {
     return array(
-      'tinyint' => LIMB_DB_TYPE_SMALLINT,
-      'smallint' => LIMB_DB_TYPE_SMALLINT,
+      'bit' => LIMB_DB_TYPE_INTEGER,
+      'tinyint' => LIMB_DB_TYPE_INTEGER,
+      'smallint' => LIMB_DB_TYPE_INTEGER,
       'mediumint' => LIMB_DB_TYPE_INTEGER,
       'int' => LIMB_DB_TYPE_INTEGER,
       'integer' => LIMB_DB_TYPE_INTEGER,

Modified: 3.x/trunk/limb/dbal/src/toolkit/lmbDbTools.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/toolkit/lmbDbTools.class.php	2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/toolkit/lmbDbTools.class.php	2008-05-13 12:02:24 UTC (rev 7015)
@@ -66,11 +66,19 @@
   
   protected function _getDbDsnHash($dsn)
   {
-    if(is_object($dsn))
-      $dsn = $dsn->toString();      
-    return md5($dsn);
+    $dsn = self :: castToDsnObject($dsn);
+    return md5($dsn->toString());
   }
   
+  static function castToDsnObject($dsn)
+  {
+    if(is_object($dsn) && ($dsn instanceof lmbDbDSN))
+      return $dsn;
+    if(is_object($dsn) && ($dsn instanceof lmbSet))
+      new lmbDbDSN($dsn->export());
+    return new lmbDbDSN($dsn);
+  }
+  
   protected function _tryLoadDsnFromEnvironment($conf, $name)
   {    
     $env = $conf->get($this->db_env);
@@ -95,8 +103,7 @@
 
   function setDbDSNByName($name, $dsn)
   {
-    if(!is_object($dsn))
-      $dsn = new lmbDbDSN($dsn);
+    $dsn = self :: castToDsnObject($dsn);
     
     $this->dsnes_names[$name] = $this->_getDbDsnHash($dsn);
     $this->dsnes_available[$this->dsnes_names[$name]] = $dsn;
@@ -172,8 +179,7 @@
 
   function createDbConnection($dsn)
   {
-    if(!is_object($dsn))
-      $dsn = new lmbDbDSN($dsn);
+    $dsn = self :: castToDsnObject($dsn);
 
     $driver = $dsn->getDriver();
     $class = 'lmb' . ucfirst($driver) . 'Connection';

Modified: 3.x/trunk/limb/dbal/tests/cases/non-driver/lmbDBALTest.class.php
===================================================================
--- 3.x/trunk/limb/dbal/tests/cases/non-driver/lmbDBALTest.class.php	2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/tests/cases/non-driver/lmbDBALTest.class.php	2008-05-13 12:02:24 UTC (rev 7015)
@@ -33,7 +33,7 @@
 
   function testSetDefaultDSN()
   {
-    lmbDBAL :: setDefaultDSN($boo = new lmbObject());
+    lmbDBAL :: setDefaultDSN($boo = new lmbDbDSN('mysql://localhost/db_name'));
     $this->assertEqual($this->toolkit->getDefaultDbDSN(), $boo);
   }
 



More information about the limb-svn mailing list