<?php if(!defined('SQLMAP_DIR')) define('SQLMAP_DIR', Prado::getFrameworkPath().'/DataAccess/SQLMap/'); require_once(SQLMAP_DIR.'/TMapper.php'); if(!defined('SQLMAP_TESTS')) define('SQLMAP_TESTS', realpath(dirname(__FILE__))); if(!class_exists('Account', false)) { include(SQLMAP_TESTS.'/domain/A.php'); include(SQLMAP_TESTS.'/domain/Account.php'); include(SQLMAP_TESTS.'/domain/AccountBis.php'); include(SQLMAP_TESTS.'/domain/AccountCollection.php'); include(SQLMAP_TESTS.'/domain/B.php'); include(SQLMAP_TESTS.'/domain/Document.php'); include(SQLMAP_TESTS.'/domain/Book.php'); include(SQLMAP_TESTS.'/domain/C.php'); include(SQLMAP_TESTS.'/domain/Category.php'); include(SQLMAP_TESTS.'/domain/Complex.php'); include(SQLMAP_TESTS.'/domain/D.php'); include(SQLMAP_TESTS.'/domain/DocumentCollection.php'); include(SQLMAP_TESTS.'/domain/E.php'); include(SQLMAP_TESTS.'/domain/F.php'); include(SQLMAP_TESTS.'/domain/LineItem.php'); include(SQLMAP_TESTS.'/domain/LineItemCollection.php'); include(SQLMAP_TESTS.'/domain/Newspaper.php'); include(SQLMAP_TESTS.'/domain/Order.php'); include(SQLMAP_TESTS.'/domain/Other.php'); include(SQLMAP_TESTS.'/domain/Sample.php'); include(SQLMAP_TESTS.'/domain/Search.php'); include(SQLMAP_TESTS.'/domain/User.php'); } error_reporting(E_ALL); restore_error_handler(); class DefaultScriptRunner { function runScript($connection, $script) { $sql = file_get_contents($script); $lines = explode(';', $sql); foreach($lines as $line) { $line = trim($line); if(strlen($line) > 0) $connection->execute($line); } } } class CopyFileScriptRunner { protected $baseFile; protected $targetFile; public function __construct($base, $target) { $this->baseFile = $base; $this->targetFile = $target; } function runScript($connection, $script) { copy($this->baseFile, $this->targetFile); } } class SQLiteBaseTestConfig extends BaseTestConfig { protected $baseFile; protected $targetFile; public function __construct() { $this->_sqlmap = SQLMAP_TESTS.'/sqlite.xml'; $this->targetFile = realpath(SQLMAP_TESTS.'/sqlite/tests.db'); $this->baseFile = realpath(SQLMAP_TESTS.'/sqlite/backup.db'); $file = urlencode($this->targetFile); $this->_connectionString = "sqlite://{$file}/"; $this->_scriptDir = SQLMAP_TESTS.'/scripts/sqlite/'; } public function getScriptRunner() { return new CopyFileScriptRunner($this->baseFile, $this->targetFile); } } class MySQLBaseTestConfig extends BaseTestConfig { public function __construct() { $this->_sqlmap = SQLMAP_TESTS.'/mysql.xml'; $this->_connectionString = 'mysql://root:weizhuo01@localhost/IBatisNet'; $this->_scriptDir = SQLMAP_TESTS.'/scripts/mysql/'; $this->_features = array('insert_id'); } } class MSSQLBaseTestConfig extends BaseTestConfig { public function __construct() { $this->_sqlmap = SQLMAP_TESTS.'/mssql.xml'; $this->_connectionString = 'odbc_mssql://sqlmap_tests'; $this->_scriptDir = SQLMAP_TESTS.'/scripts/mssql/'; $this->_features = array('insert_id'); } } class BaseTestConfig { protected $_scriptDir; protected $_connectionString; protected $_sqlmap; protected $_features = array(); public function getScriptDir() { return $this->_scriptDir; } public function getConnectionString() { return $this->_connectionString; } public function getSqlMapConfigFile(){ return $this->_sqlmap; } public function hasFeature($feature) { return in_array($feature, $this->_features); } public function getScriptRunner() { return new DefaultScriptRunner(); } public static function createConfigInstance() { //change this to connection to a different database //return new MySQLBaseTestConfig(); return new SQLiteBaseTestConfig(); //return new MSSQLBaseTestConfig(); } } ?>