From 3d3f8d3832921f99daf8ce1953304763c2e76c62 Mon Sep 17 00:00:00 2001 From: wei <> Date: Fri, 14 Apr 2006 06:22:09 +0000 Subject: Importing SQLMap + sample + docs. --- framework/DataAccess/SQLMap/TSqlMapClient.php | 81 +++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 framework/DataAccess/SQLMap/TSqlMapClient.php (limited to 'framework/DataAccess/SQLMap/TSqlMapClient.php') diff --git a/framework/DataAccess/SQLMap/TSqlMapClient.php b/framework/DataAccess/SQLMap/TSqlMapClient.php new file mode 100644 index 00000000..7662d83e --- /dev/null +++ b/framework/DataAccess/SQLMap/TSqlMapClient.php @@ -0,0 +1,81 @@ + + * $client = new TSqlMapClient; + * $sqlmap = $client->configure($configFile, true); //load from cache. + * $products = $sqlMap->queryForList('statementName'); + * + * + * To save the TSqlMapper instance to cache for later usage, call + * cacheConfiguration(). + * + * @author Wei Zhuo + * @version $Revision: $ $Date: $ + * @package System.DataAccess.SQLMap + * @since 3.0 + */ +class TSqlMapClient +{ + private $_mapper; + private $_cache; + + public function configure($configFile, $loadFromCache=false) + { + if(is_null($this->_mapper)) + $this->initMapper($configFile, $loadFromCache); + return $this->_mapper; + } + + public function getInstance() + { + return $this->_mapper; + } + + public function cacheConfiguration() + { + if(!is_null($this->_mapper) && $this->_cache !== false) + { + if(!is_file($this->_cache)) + { + var_dump('saving cache to file', $this->_cache); + file_put_contents($this->_cache,serialize($this->_mapper)); + return true; + } + } + return false; + } + + protected function initMapper($file=null,$loadFromCache=false) + { + $this->_cache = $this->getCacheFile($file); + if($loadFromCache && $this->_cache !== false && is_file($this->_cache)) + { + var_dump('loading from cache: '.$this->_cache); + $this->_mapper = unserialize(file_get_contents($this->_cache)); + } + else + { +// var_dump('build from *.xml'); + $builder = new TDomSqlMapBuilder(); + $this->_mapper = $builder->configure($file); + } + } + + protected function getCacheFile($file) + { + $path = realpath($file); + if($path !== false) + return substr($path,0, strrpos($path,'.')).'.cache'; + else + return false; + } +} + +?> \ No newline at end of file -- cgit v1.2.3