diff options
Diffstat (limited to 'framework/Testing/Data/Distributed/TDistributedDataSourceConfig.php')
-rw-r--r-- | framework/Testing/Data/Distributed/TDistributedDataSourceConfig.php | 181 |
1 files changed, 0 insertions, 181 deletions
diff --git a/framework/Testing/Data/Distributed/TDistributedDataSourceConfig.php b/framework/Testing/Data/Distributed/TDistributedDataSourceConfig.php deleted file mode 100644 index b8c4e5a9..00000000 --- a/framework/Testing/Data/Distributed/TDistributedDataSourceConfig.php +++ /dev/null @@ -1,181 +0,0 @@ -<?php -/** - * TDistributedDataSourceConfig class file. - * - * @author Yves Berkholz <godzilla80[at]gmx[dot]net> - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2010 PradoSoft - * @license http://www.pradosoft.com/license/ - * @version $Id$ - * @package System.Testing.Data.Distributed - */ - - Prado::using('System.Data.TDataSourceConfig'); - Prado::using('System.Testing.Data.Distributed.TDistributedDbConnection'); - - /** - * IDistributedDataSourceConfig module interface provides <module> configuration for database connections. - * - * @author Yves Berkholz <godzilla80[at]gmx[dot]net> - * @version $Id$ - * @package System.Testing.Data.Distributed - * @since 4.0 - */ - interface IDistributedDataSourceConfig /*extends IDataSourceConfig*/ { - /** - * @return string Database connection class name to be created for child connection. - */ - public function getDistributedConnectionClass(); - - /** - * @param string Database connection class name to be created for child connection. - */ - public function setDistributedConnectionClass($value); - } - - /** - * TDistributedDataSourceConfig module class provides <module> configuration for database connections. - * - * @author Yves Berkholz <godzilla80[at]gmx[dot]net> - * @version $Id$ - * @package System.Testing.Data.Distributed - * @since 4.0 - */ - class TDistributedDataSourceConfig extends TDataSourceConfig implements IDistributedDataSourceConfig - { - /** - * @var array - */ - private $_childConnectionAttributes = array(); - - /** - * @var string - */ - private $_connDistributedClass = 'System.Data.TDbConnection'; - - /** - * @var IDistributedDbConnection - */ - private $_connDistributed = null; - - /** - * @var boolean - */ - protected $bInitialized = false; - - /** - * @var boolean - */ - private $_hasDistributedConnectionData = false; - - /** - * Initalize the database connection properties from attributes in <database> tag. - * @param TXmlDocument xml configuration. - */ - public function init($xml) - { - parent::init($xml); - $this->initChildConnectionData($xml); - $this->bInitialized = true; - } - - /** - * Initalize the database connection properties from attributes in $tagName tag. - * @param TXmlDocument xml configuration. - * @param string Tagnames to parse. Defaults to 'child' - */ - protected function initChildConnectionData($xml, $tagName='child') - { - $c = 0; - foreach($xml->getElementsByTagName($tagName) as $item) - { - ++$c; - $this->_childConnectionAttributes[] = $item->getAttributes(); - } - - if($c===0) - throw new TConfigurationException('distributeddatasource_child_required', get_class($this), $tagName); - } - - /** - * @return string Database connection class name to be created for child connection. - */ - public function getDistributedConnectionClass() - { - return $this->_connDistributedClass; - } - - /** - * @param string Database connection class name to be created for child connection. - */ - public function setDistributedConnectionClass($value) - { - $this->_connDistributedClass=$value; - } - - /** - * @return IDistributedDbConnection - */ - public function getDistributedDbConnection() - { - $this->_hasDistributedConnectionData = false; - if($this->_connDistributed===null) - $this->_connDistributed = Prado::createComponent($this->getDistributedConnectionClass()); - - if($this->_hasDistributedConnectionData) - return $this->_connDistributed; - - $attribs = $this->getDistributedDbConnectionAttributes(); - - if($attribs===null) - return $this->_connDistributed; - - foreach($attribs as $name => $value) - $this->_connDistributed->setSubproperty($name, $value); - - $this->_hasDistributedConnectionData = true; - - return $this->_connDistributed; - } - - /** - * @return TMap - */ - protected function getDistributedDbConnectionAttributes() - { - $index = 0; - $c = count($this->_childConnectionAttributes); - - if($c > 1) { - $aSrc = array(); - $aTmp = array(); - - foreach($this->_childConnectionAttributes as $k => $item) - { - $weight = 1; - if( isset($item['Weight']) ) - $weight = $item['Weight']; - $aSrc[$k] = $weight; - } - - asort($aSrc); - - foreach($aSrc as $idx => $weight) - $aTmp = array_merge($aTmp, array_pad(array(), $weight*5, $idx)); - - $min = 0; - $max = count($aTmp)-1; - $factor = array_sum($aSrc) / count($aSrc); - $wrand = round($min + (pow(rand(0, $max) / $max, $factor) * ($max - $min))); - $index = $aTmp[$wrand]; - } - - $result = $this->_childConnectionAttributes[$index]; - - if( isset($result['Weight']) ) - unset($result['Weight']); - - return $result; - } - } -?>
\ No newline at end of file |