From 18ea316c553f7ccfc18b73f0c987de007f11b275 Mon Sep 17 00:00:00 2001 From: wei <> Date: Mon, 4 Dec 2006 00:02:23 +0000 Subject: Fixed #469 --- .../Data/SqlMap/DataMapper/TSqlMapException.php | 99 ++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 framework/Data/SqlMap/DataMapper/TSqlMapException.php (limited to 'framework/Data/SqlMap/DataMapper/TSqlMapException.php') diff --git a/framework/Data/SqlMap/DataMapper/TSqlMapException.php b/framework/Data/SqlMap/DataMapper/TSqlMapException.php new file mode 100644 index 00000000..9a2db478 --- /dev/null +++ b/framework/Data/SqlMap/DataMapper/TSqlMapException.php @@ -0,0 +1,99 @@ +setErrorCode($errorMessage); + $errorMessage=$this->translateErrorMessage($errorMessage); + $args=func_get_args(); + array_shift($args); + $n=count($args); + $tokens=array(); + for($i=0;$i<$n;++$i) + { + if($args[$i] instanceof SimpleXmlElement) + $tokens['{'.$i.'}']=$this->implodeNode($args[$i]); + else + $tokens['{'.$i.'}']=TPropertyValue::ensureString($args[$i]); + } + parent::__construct(strtr($errorMessage,$tokens)); + } + + protected function implodeNode($node) + { + $attributes=array(); + foreach($node->attributes() as $k=>$v) + $attributes[]=$k.'="'.(string)$v.'"'; + return '<'.$node->getName().' '.implode(' ',$attributes).'>'; + } + + /** + * @return string path to the error message file + */ + protected function getErrorMessageFile() + { + $lang=Prado::getPreferredLanguage(); + $dir=dirname(__FILE__); + $msgFile=$dir.'/messages-'.$lang.'.txt'; + if(!is_file($msgFile)) + $msgFile=$dir.'/messages.txt'; + return $msgFile; + } +} + +class TSqlMapConfigurationException extends TSqlMapException +{ + +} + +class TUndefinedAttributeException extends TSqlMapConfigurationException +{ + public function __construct($attr, $node, $object, $file) + { + parent::__construct( + 'sqlmap_undefined_attribute', get_class($object), $attr, + htmlentities($node->asXml()),$file); + } +} + +class TSqlMapExecutionException extends TSqlMapException +{ +} + +class TSqlMapQueryExecutionException extends TSqlMapExecutionException +{ + protected $parent; + public function __construct($statement, $exception) + { + $this->parent = $exception; + parent::__construct('sqlmap_query_execution_error', + $statement->getID(), $exception->getMessage()); + } +} + +class TSqlMapUndefinedException extends TSqlMapException +{ + +} + +class TSqlMapDuplicateException extends TSqlMapException +{ +} + +class TSqlMapConnectionException extends TSqlMapException +{ +} + +class TInvalidPropertyException extends TSqlMapException +{ + +} +?> \ No newline at end of file -- cgit v1.2.3