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. --- .../SQLMap/Configuration/TParameterMap.php | 95 ++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 framework/DataAccess/SQLMap/Configuration/TParameterMap.php (limited to 'framework/DataAccess/SQLMap/Configuration/TParameterMap.php') diff --git a/framework/DataAccess/SQLMap/Configuration/TParameterMap.php b/framework/DataAccess/SQLMap/Configuration/TParameterMap.php new file mode 100644 index 00000000..8e1c757d --- /dev/null +++ b/framework/DataAccess/SQLMap/Configuration/TParameterMap.php @@ -0,0 +1,95 @@ +_properties = new TList; + $this->_propertyMap = new TMap; + } + + public function getProperties(){ return $this->_properties; } + + public function getID(){ return $this->_ID; } + public function setID($value){ $this->_ID = $value; } + + public function getExtends(){ return $this->_extend; } + public function setExtends($value){ $this->_extend = $value; } + + public function getProperty($index) + { + if(is_string($index)) + return $this->_propertyMap->itemAt($index); + else if(is_int($index)) + return $this->_properties->itemAt($index); + else + throw new TDataMapperException( + 'sqlmap_index_must_be_string_or_int', $index); + } + + public function addParameterProperty(TParameterProperty $property) + { + $this->_propertyMap->add($property->getProperty(), $property); + $this->_properties->add($property); + } + + public function insertParameterProperty($index, TParameterProperty $property) + { + $this->_propertyMap->add($property->getProperty(), $property); + $this->_properties->insertAt($index, $property); + } + + public function getPropertyNames() + { + return $this->_propertyMap->getKeys(); + } + + public function getParameter($mapping, $parameterValue, $statement) + { + $value = $parameterValue; + $typeHandler = $mapping->getTypeHandler(); + try + { + $value = TPropertyAccess::get($parameterValue, $mapping->getProperty()); + } + catch (TInvalidPropertyException $e) + { + throw new TSqlMapExecutionException( + 'sqlmap_unable_to_get_property_for_parameter',$this->getID(), + $mapping->getProperty(), get_class($parameterValue), + $e->getMessage(), $statement->getID()); + } + + if(!is_null($typeHandler)) + { + try + { + $value = $typeHandler->getParameter($value); + } + catch (Exception $e) + { + throw new TSqlMapExecutionException( + 'sqlmap_error_in_parameter_from_handler',$this->getID(), + $value, get_class($typeHandler), $e->getMessage()); + } + } + + if(!is_null($nullValue = $mapping->getNullValue())) + { + if($nullValue === $value) + $value = null; + } + + if(!is_null($type = $mapping->getType())) + $value = TTypeHandlerFactory::convertToType($type, $value); + + return $value; + } +} +?> \ No newline at end of file -- cgit v1.2.3