From 3b9672007e822483653deaf8f1c117d6ecc58309 Mon Sep 17 00:00:00 2001 From: "godzilla80@gmx.net" <> Date: Sun, 8 Nov 2009 15:11:14 +0000 Subject: - Fixed Issue #171 - tag in SqlMap config ignored in 3.1.5 and above, introduced by solving Issue#68 - move logic to instantiate TSqlMapManager from "protected function createSqlMapGateway()" to "public function getSqlMapManager()" since it is useful if you dynamicly create mapped statements that should be cached - explicit return null in loadCachedSqlMapManager() --- framework/Data/SqlMap/TSqlMapConfig.php | 43 +++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 16 deletions(-) (limited to 'framework/Data/SqlMap/TSqlMapConfig.php') diff --git a/framework/Data/SqlMap/TSqlMapConfig.php b/framework/Data/SqlMap/TSqlMapConfig.php index c57ab40e..c5f06ab8 100644 --- a/framework/Data/SqlMap/TSqlMapConfig.php +++ b/framework/Data/SqlMap/TSqlMapConfig.php @@ -52,6 +52,31 @@ class TSqlMapConfig extends TDataSourceConfig } } + /** + * Create and configure the data mapper using sqlmap configuration file. + * Or if cache is enabled and manager already cached load from cache. + * If cache is enabled, the data mapper instance is cached. + * + * @return TSqlMapManager SqlMap manager instance + * @since 3.1.7 + */ + public function getSqlMapManager() { + Prado::using('System.Data.SqlMap.TSqlMapManager'); + if(($manager = $this->loadCachedSqlMapManager())===null) + { + $manager = new TSqlMapManager($this->getDbConnection()); + if(strlen($file=$this->getConfigFile()) > 0) + { + $manager->configureXml($file); + $this->cacheSqlMapManager($manager); + } + } + elseif($this->getConnectionID() !== '') { + $manager->setDbConnection($this->getDbConnection()); + } + return $manager; + } + /** * Saves the current SqlMap manager to cache. * @return boolean true if SqlMap manager was cached, false otherwise. @@ -87,6 +112,7 @@ class TSqlMapConfig extends TDataSourceConfig return $manager; } } + return null; } /** @@ -134,26 +160,11 @@ class TSqlMapConfig extends TDataSourceConfig } /** - * Configure the data mapper using sqlmap configuration file. - * If cache is enabled, the data mapper instance is cached. * @return TSqlMapGateway SqlMap gateway instance. */ protected function createSqlMapGateway() { - Prado::using('System.Data.SqlMap.TSqlMapManager'); - if(($manager = $this->loadCachedSqlMapManager())===null) - { - $manager = new TSqlMapManager($this->getDbConnection()); - if(strlen($file=$this->getConfigFile()) > 0) - { - $manager->configureXml($file); - $this->cacheSqlMapManager($manager); - } - } - else { - $manager->setDbConnection($this->getDbConnection()); - } - return $manager->getSqlmapGateway(); + return $this->getSqlMapManager()->getSqlmapGateway(); } /** -- cgit v1.2.3