Blame | Letzte Änderung | Log anzeigen | RSS feed
<?php/*** TDiscriminator and TSubMap classes file.** @author Wei Zhuo <weizhuo[at]gmail[dot]com>* @link http://www.pradosoft.com/* @copyright Copyright © 2005-2008 PradoSoft* @license http://www.pradosoft.com/license/* @version $Id: TDiscriminator.php 2541 2008-10-21 15:05:13Z qiang.xue $* @package System.Data.SqlMap.Configuration*//*** The TDiscriminator corresponds to the <discriminator> tag within a <resultMap>.** TDiscriminator allows inheritance logic in SqlMap result mappings.* SqlMap compares the data found in the discriminator column to the different* <submap> values using the column value's string equivalence. When the string values* matches a particular <submap>, SqlMap will use the <resultMap> defined by* {@link resultMapping TSubMap::setResultMapping()} property for loading* the object data.** @author Wei Zhuo <weizho[at]gmail[dot]com>* @version $Id: TDiscriminator.php 2541 2008-10-21 15:05:13Z qiang.xue $* @package System.Data.SqlMap.Configuration* @since 3.1*/class TDiscriminator extends TComponent{private $_column;private $_type;private $_typeHandler=null;private $_columnIndex;private $_nullValue;private $_mapping;private $_resultMaps=array();private $_subMaps=array();/*** @return string the name of the column in the result set from which the* value will be used to populate the property.*/public function getColumn(){return $this->_column;}/*** @param string the name of the column in the result set from which the* value will be used to populate the property.*/public function setColumn($value){$this->_column = $value;}/*** @param string property type of the parameter to be set.*/public function getType(){return $this->_type;}/*** The type attribute is used to explicitly specify the property type of the* parameter to be set. If the attribute type is not set and the framework* cannot otherwise determine the type, the type is assumed from the default* value of the property.* @return string property type of the parameter to be set.*/public function setType($value){$this->_type = $value;}/*** @return string custom type handler class name (may use namespace).*/public function getTypeHandler(){return $this->_typeHandler;}/*** @param string custom type handler class name (may use namespace).*/public function setTypeHandler($value){$this->_typeHandler = $value;}/*** @return int index of the column in the ResultSet*/public function getColumnIndex(){return $this->_columnIndex;}/*** The columnIndex attribute value is the index of the column in the* ResultSet from which the value will be used to populate the object property.* @param int index of the column in the ResultSet*/public function setColumnIndex($value){$this->_columnIndex = TPropertyValue::ensureInteger($value);}/*** @return mixed outgoing null value replacement.*/public function getNullValue(){return $this->_nullValue;}/*** @param mixed outgoing null value replacement.*/public function setNullValue($value){$this->_nullValue = $value;}/*** @return TResultProperty result property for the discriminator column.*/public function getMapping(){return $this->_mapping;}/*** @param TSubMap add new sub mapping.*/public function addSubMap($subMap){$this->_subMaps[] = $subMap;}/*** @param string database value* @return TResultMap result mapping.*/public function getSubMap($value){if(isset($this->_resultMaps[$value]))return $this->_resultMaps[$value];}/*** Copies the discriminator properties to a new TResultProperty.* @param TResultMap result map holding the discriminator.*/public function initMapping($resultMap){$this->_mapping = new TResultProperty($resultMap);$this->_mapping->setColumn($this->getColumn());$this->_mapping->setColumnIndex($this->getColumnIndex());$this->_mapping->setType($this->getType());$this->_mapping->setTypeHandler($this->getTypeHandler());$this->_mapping->setNullValue($this->getNullValue());}/*** Set the result maps for particular sub-mapping values.* @param TSqlMapManager sql map manager instance.*/public function initialize($manager){foreach($this->_subMaps as $subMap){$this->_resultMaps[$subMap->getValue()] =$manager->getResultMap($subMap->getResultMapping());}}}/*** TSubMap class defines a submapping value and the corresponding <resultMap>** The {@link Value setValue()} property is used for comparison with the* discriminator column value. When the {@link Value setValue()} matches* that of the discriminator column value, the corresponding {@link ResultMapping setResultMapping}* is used inplace of the current result map.** @author Wei Zhuo <weizho[at]gmail[dot]com>* @version $Id: TDiscriminator.php 2541 2008-10-21 15:05:13Z qiang.xue $* @package System.Data.SqlMap.Configuration* @since 3.1*/class TSubMap extends TComponent{private $_value;private $_resultMapping;/*** @return string value for comparison with discriminator column value.*/public function getValue(){return $this->_value;}/*** @param string value for comparison with discriminator column value.*/public function setValue($value){$this->_value = $value;}/*** The result map to use when the Value matches the discriminator column value.* @return string ID of a result map*/public function getResultMapping(){return $this->_resultMapping;}/*** @param string ID of a result map*/public function setResultMapping($value){$this->_resultMapping = $value;}}