From cbb7a11179b9c1c46e35f04d07d6386a44e400b2 Mon Sep 17 00:00:00 2001 From: wei <> Date: Sun, 23 Jul 2006 11:11:21 +0000 Subject: Update time-tracker demo and add simple dynamic SQLMap --- .../SQLMap/Statements/TMappedStatement.php | 1 - .../SQLMap/Statements/TPreparedCommand.php | 2 +- .../Statements/TPreparedStatementFactory.php | 15 ---------- .../SQLMap/Statements/TSimpleDynamicSql.php | 32 ++++++++++++++++++++++ .../DataAccess/SQLMap/Statements/TStaticSql.php | 2 +- 5 files changed, 34 insertions(+), 18 deletions(-) create mode 100644 framework/DataAccess/SQLMap/Statements/TSimpleDynamicSql.php (limited to 'framework/DataAccess/SQLMap/Statements') diff --git a/framework/DataAccess/SQLMap/Statements/TMappedStatement.php b/framework/DataAccess/SQLMap/Statements/TMappedStatement.php index c621f285..9bc1143f 100644 --- a/framework/DataAccess/SQLMap/Statements/TMappedStatement.php +++ b/framework/DataAccess/SQLMap/Statements/TMappedStatement.php @@ -220,7 +220,6 @@ class TMappedStatement extends TComponent implements IMappedStatement $list = $result instanceof ArrayAccess ? $result : $this->_statement->createInstanceOfListClass(); $recordSet = $this->executeSQLQueryLimit($connection, $sql, $max, $skip); - if(!is_null($delegate)) { while($row = $recordSet->fetchRow()) diff --git a/framework/DataAccess/SQLMap/Statements/TPreparedCommand.php b/framework/DataAccess/SQLMap/Statements/TPreparedCommand.php index 1c0e5ad7..3557fc1f 100644 --- a/framework/DataAccess/SQLMap/Statements/TPreparedCommand.php +++ b/framework/DataAccess/SQLMap/Statements/TPreparedCommand.php @@ -5,7 +5,7 @@ class TPreparedCommand public function create($connection, $statement, $parameterObject) { - $prepared = $statement->getSQL()->getPreparedStatement(); + $prepared = $statement->getSQL()->getPreparedStatement($parameterObject); $parameters = $this->applyParameterMap($connection, $prepared, $statement, $parameterObject); return array('sql'=>$prepared->getPreparedSql(), diff --git a/framework/DataAccess/SQLMap/Statements/TPreparedStatementFactory.php b/framework/DataAccess/SQLMap/Statements/TPreparedStatementFactory.php index 41059934..52461983 100644 --- a/framework/DataAccess/SQLMap/Statements/TPreparedStatementFactory.php +++ b/framework/DataAccess/SQLMap/Statements/TPreparedStatementFactory.php @@ -11,36 +11,21 @@ class TPreparedStatementFactory { $this->_statement = $statement; $this->_commandText = $sqlString; - // $this->_statement = new TPreparedStatement(); -// $this->_statement->setSqlString($sqlString); } public function prepare() { - //$this->createParametersFromTextCommand(); - //return $this->_statement; $this->_preparedStatement = new TPreparedStatement(); $this->_preparedStatement->setPreparedSql($this->_commandText); if(!is_null($this->_statement->parameterMap())) - { $this->createParametersForTextCommand(); - //$this->evaluateParameterMap(); - } - //var_dump($this->_preparedStatement); return $this->_preparedStatement; } protected function createParametersForTextCommand() { - /*$matches = array(); - $string = $this->_statement->getSqlString(); - preg_match_all('/#([a-zA-Z0-9._]+)#/', $string, $matches); - $this->_statement->getParameterNames()->copyFrom($matches[0]);*/ - //var_dump($this->_statement); foreach($this->_statement->ParameterMap()->getProperties() as $prop) - { $this->_preparedStatement->getParameterNames()->add($prop->getProperty()); - } } } diff --git a/framework/DataAccess/SQLMap/Statements/TSimpleDynamicSql.php b/framework/DataAccess/SQLMap/Statements/TSimpleDynamicSql.php new file mode 100644 index 00000000..1230b4f7 --- /dev/null +++ b/framework/DataAccess/SQLMap/Statements/TSimpleDynamicSql.php @@ -0,0 +1,32 @@ +_mappings = $mappings; + } + + public function getPreparedStatement($parameter=null) + { + $statement = parent::getPreparedStatement($parameter); + if($parameter !== null) + $this->mapDynamicParameter($statement, $parameter); + return $statement; + } + + protected function mapDynamicParameter($statement, $parameter) + { + $sql = $statement->getPreparedSql(); + foreach($this->_mappings as $property) + { + $value = TPropertyAccess::get($parameter, $property); + $sql = preg_replace('/'.TSimpleDynamicParser::DYNAMIC_TOKEN.'/', $value, $sql, 1); + } + $statement->setPreparedSql($sql); + } +} + +?> \ No newline at end of file diff --git a/framework/DataAccess/SQLMap/Statements/TStaticSql.php b/framework/DataAccess/SQLMap/Statements/TStaticSql.php index bf6e4a18..b99b86ed 100644 --- a/framework/DataAccess/SQLMap/Statements/TStaticSql.php +++ b/framework/DataAccess/SQLMap/Statements/TStaticSql.php @@ -10,7 +10,7 @@ class TStaticSql extends TComponent $this->_preparedStatement = $factory->prepare(); } - public function getPreparedStatement() + public function getPreparedStatement($parameter=null) { return $this->_preparedStatement; } -- cgit v1.2.3