_nullValue; } public function setNullValue($value){ $this->_nullValue = $value; } public function getProperty(){ return $this->_propertyName; } public function setProperty($value){ $this->_propertyName = $value; } public function getColumn(){ return $this->_columnName; } public function setColumn($value){ $this->_columnName = $value; } public function getColumnIndex(){ return $this->_columnIndex; } public function setColumnIndex($value){ $this->_columnIndex = TPropertyValue::ensureInteger($value,-1); } public function getResultMapping(){ return $this->_nestedResultMapName; } public function setResultMapping($value){ $this->_nestedResultMapName = $value; } public function getNestedResultMap(){ return $this->_nestedResultMap; } public function setNestedResultMap($value){ $this->_nestedResultMap = $value; } public function getType(){ return $this->_valueType; } public function setType($value) { $this->_valueType = $value; } public function getTypeHandler() { if(is_null($this->_typeHandlerFactory)) return null; if(!is_null($this->_typeHandler)) return $this->_typeHandlerFactory->getTypeHandler( $this->_typeHandler, $this->_dbType); else if(!is_null($this->getType())) return $this->_typeHandlerFactory->getTypeHandler( $this->getType(), $this->_dbType); else return null; } public function setTypeHandler($value) { $this->_typeHandler = $value; } public function getSelect(){ return $this->_select; } public function setSelect($value){ $this->_select = $value; } public function getLazyLoad(){ return $this->_isLazyLoad; } public function setLazyLoad($value){ $this->_isLazyLoad = TPropertyValue::ensureBoolean($value,false); } public function getDbType(){ return $this->_dbType; } public function setDbType($value){ $this->_dbType = $value; } public function initialize($sqlMap, $resultMap=null) { $this->_typeHandlerFactory = $sqlMap->getTypeHandlerFactory(); if(!is_null($resultMap)) $this->_hostResultMapID = $resultMap->getID(); // $type = !is_null($this->_typeHandler) ? $this->_typeHandler: $this->_valueType; // $this->setTypeHandler($sqlMap->getTypeHandlerFactory()->getTypeHandler($type)); } public function getDatabaseValue($row,$forceType=true) { $value = null; if($this->_columnIndex > 0 && isset($row[$this->_columnIndex])) $value = $this->getTypedValue($row[$this->_columnIndex], $forceType); else if(isset($row[$this->_columnName])) $value = $this->getTypedValue($row[$this->_columnName],$forceType); if(is_null($value) && !is_null($this->_nullValue)) $value = $this->getTypedValue($this->_nullValue,$forceType); return $value; } public function getOrdinalValue($row) { return $this->getDatabaseValue($row,false); } private function getTypedValue($value, $forceType=true) { if(!$forceType) return $value; if(is_null($this->getTypeHandler())) { return TTypeHandlerFactory::convertToType($this->_valueType, $value); } else { try { return $this->getTypeHandler()->getResult($value); } catch (Exception $e) { throw new TSqlMapExecutionException( 'sqlmap_error_in_result_property_from_handler',$this->_hostResultMapID, $value, get_class($this->getTypeHandler()), $e->getMessage()); } } } public function getPropertyType($type=null) { if(is_null($type)) $type = $this->getType(); if(class_exists($type, false)) //NO force autoloading { $class = new ReflectionClass($type); if($class->isSubclassOf('TList')) return self::LIST_TYPE; if($class->inmplementsInterface('ArrayAccess')) return self::ARRAY_TYPE; } if(strtolower($type) == 'array') return self::ARRAY_TYPE; return self::OBJECT_TYPE; } public function isListType($target) { if(is_null($this->getType())) { $prop = TPropertyAccess::get($target,$this->getProperty()); return $prop instanceof TList; } return $this->getPropertyType() == self::LIST_TYPE; } public function isArrayType($target) { if(is_null($this->getType())) { $prop = TPropertyAccess::get($target,$this->getProperty()); if(is_object($prop)) return $prop instanceof ArrayAccess; return is_array($prop); } return $this->getPropertyType() == self::ARRAY_TYPE; } public function isObjectType($target) { if(is_null($this->getType())) { $prop = TPropertyAccess::get($target,$this->getProperty()); return is_object($prop); } return $this->getPropertyType() == self::OBJECT_TYPE; } } ?>