Update new xml query classes with xe 1.5

with improved query argument support and update and delete queries

git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0-DB@8379 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
mosmartin 2011-05-19 13:17:46 +00:00
parent 7dbe0626b6
commit 2a35558b4e
9 changed files with 408 additions and 0 deletions

View file

@ -0,0 +1,21 @@
<?php
/**
* @class ColumnTag
* @author Arnia Software
* @brief Models the <column> tag inside an XML Query file
*
* Since the <column> tag supports different attributes depending on
* the type of query (select, update, insert, delete) this is only
* the base class for the classes that will model each type <column> tag.
*
**/
class ColumnTag {
var $name;
var $dbParser;
function ColumnTag($name, $dbParser){
$this->dbParser = $dbParser;
$this->name = $name;
}
}

View file

@ -0,0 +1,43 @@
<?php
/**
* @class DeleteColumnTag
* @author Arnia Software
* @brief Models the <column> tag inside an XML Query file whose action is 'delete'
*
**/
class DeleteColumnTag extends ColumnTag {
var $argument;
function DeleteColumnTag($column, $dbParser) {
parent::ColumnTag($column->attrs->name, $dbParser);
$this->name = $this->dbParser->parseColumnName($this->name);
require_once(_XE_PATH_.'classes/xml/xmlquery/queryargument/QueryArgument.class.php');
$this->argument = new QueryArgument($column);
}
function toString(){
$output_columns = 'array(' . PHP_EOL;
foreach($this->argument as $argument){
$output_columns .= $argument->getExpressionString() . PHP_EOL . ',';
}
$output_columns = substr($output_columns, 0, -1);
$output_columns .= ')';
return $output_columns;
}
function getExpressionString(){
return sprintf('new DeleteExpression(\'%s\', $args->%s)'
, $this->name
, $this->argument->argument_name);
}
function getArgument(){
return $this->argument;
}
function getValidatorString(){
return $this->argument->getValidatorString();
}
}
?>

View file

@ -0,0 +1,58 @@
<?php
/**
* @class DeleteColumnsTag
* @author Arnia Software
* @brief Models the <column> tag inside an XML Query file whose action is 'delete'
*
**/
require_once(_XE_PATH_.'classes/xml/xmlquery/tags/column/ColumnTag.class.php');
require_once(_XE_PATH_.'classes/xml/xmlquery/tags/column/DeleteColumnTag.class.php');
class DeleteColumnsTag{
var $dbParser;
var $columns;
function DeleteColumnsTag($xml_columns, $dbParser) {
$this->dbParser = $dbParser;
$this->columns = array();
if(!$xml_columns)
return;
if(!is_array($xml_columns)) $xml_columns = array($xml_columns);
foreach($xml_columns as $column){
$this->columns[] = new DeleteColumnTag($column, $this->dbParser);
}
}
function toString(){
$output_columns = 'array(' . PHP_EOL;
foreach($this->columns as $column){
$output_columns .= $column->getExpressionString() . PHP_EOL . ',';
}
$output_columns = substr($output_columns, 0, -1);
$output_columns .= ')';
return $output_columns;
}
function getArguments(){
$arguments = array();
foreach($this->columns as $column){
$arguments[] = $column->getArgument();
}
return $arguments;
}
function getValidatorString(){
$validator = '';
foreach($this->columns as $column){
$validator .= $column->getValidatorString();
}
return $validator;
}
}
?>

View file

@ -0,0 +1,45 @@
<?php
/**
* @class InsertColumnTag
* @author Arnia Software
* @brief Models the <column> tag inside an XML Query file whose action is 'insert'
*
**/
class InsertColumnTag extends ColumnTag {
var $argument;
function InsertColumnTag($column, $dbParser) {
parent::ColumnTag($column->attrs->name, $dbParser);
$this->name = $this->dbParser->parseColumnName($this->name);
require_once(_XE_PATH_.'classes/xml/xmlquery/queryargument/QueryArgument.class.php');
$this->argument = new QueryArgument($column);
}
function toString(){
$output_columns = 'array(' . PHP_EOL;
foreach($this->argument as $argument){
$output_columns .= $argument->getExpressionString() . PHP_EOL . ',';
}
$output_columns = substr($output_columns, 0, -1);
$output_columns .= ')';
return $output_columns;
}
function getExpressionString(){
return sprintf('new InsertExpression(\'%s\', $%s_argument->getValue())'
, $this->name
, $this->argument->argument_name);
}
function getArgument(){
return $this->argument;
}
function getValidatorString(){
return $this->argument->getValidatorString();
}
}
?>

View file

@ -0,0 +1,58 @@
<?php
/**
* @class InsertColumnsTag
* @author Arnia Software
* @brief Models the <column> tag inside an XML Query file whose action is 'insert'
*
**/
require_once(_XE_PATH_.'classes/xml/xmlquery/tags/column/ColumnTag.class.php');
require_once(_XE_PATH_.'classes/xml/xmlquery/tags/column/InsertColumnTag.class.php');
class InsertColumnsTag{
var $dbParser;
var $columns;
function InsertColumnsTag($xml_columns, $dbParser) {
$this->dbParser = $dbParser;
$this->columns = array();
if(!$xml_columns)
return;
if(!is_array($xml_columns)) $xml_columns = array($xml_columns);
foreach($xml_columns as $column){
$this->columns[] = new InsertColumnTag($column, $this->dbParser);
}
}
function toString(){
$output_columns = 'array(' . PHP_EOL;
foreach($this->columns as $column){
$output_columns .= $column->getExpressionString() . PHP_EOL . ',';
}
$output_columns = substr($output_columns, 0, -1);
$output_columns .= ')';
return $output_columns;
}
function getArguments(){
$arguments = array();
foreach($this->columns as $column){
$arguments[] = $column->getArgument();
}
return $arguments;
}
function getValidatorString(){
$validator = '';
foreach($this->columns as $column){
$validator .= $column->getValidatorString();
}
return $validator;
}
}
?>

View file

@ -0,0 +1,31 @@
<?php
/**
* @class SelectColumnTag
* @author Arnia Software
* @brief Models the <column> tag inside an XML Query file whose action is 'select'
*
**/
class SelectColumnTag extends ColumnTag{
var $alias;
var $click_count;
function SelectColumnTag($column, $dbParser){
parent::ColumnTag($column->attrs->name, $dbParser);
if(!$this->name) $this->name = "*";
if($this->name != "*")
$this->name = $this->dbParser->parseExpression($this->name);
$this->alias = $column->attrs->alias;
$this->click_count = $column->attrs->click_count;
}
function getExpressionString(){
if($this->name == '*') return "new StarExpression()";
if($this->click_count)
return sprintf('new ClickCountExpression(%s, %s, $args->%s)', $this->name, $this->alias,$this->click_count);
return sprintf('new SelectExpression(\'%s\'%s)', $this->name, $this->alias ? ', \''.$this->dbParser->escape($this->alias) .'\'': '');
}
}
?>

View file

@ -0,0 +1,45 @@
<?php
require_once(_XE_PATH_.'classes/xml/xmlquery/tags/column/ColumnTag.class.php');
require_once(_XE_PATH_.'classes/xml/xmlquery/tags/column/SelectColumnTag.class.php');
class SelectColumnsTag {
var $dbParser;
var $columns;
function SelectColumnsTag($xml_columns, $dbParser){
$this->dbParser = $dbParser;
$this->columns = array();
if(!$xml_columns) {
$this->columns[] = new SelectColumnTag("*", $this->dbParser);
return;
}
if(!is_array($xml_columns)) $xml_columns = array($xml_columns);
foreach($xml_columns as $column){
$this->columns[] = new SelectColumnTag($column, $this->dbParser);
}
}
function toString(){
$output_columns = 'array(' . PHP_EOL;
foreach($this->columns as $column){
$output_columns .= $column->getExpressionString() . PHP_EOL . ',';
}
$output_columns = substr($output_columns, 0, -1);
$output_columns .= ')';
return $output_columns;
}
function getArguments(){
return array();
}
function getValidatorString(){
return '';
}
}
?>

View file

@ -0,0 +1,46 @@
<?php
/**
* @class UpdateColumnTag
* @author Arnia Software
* @brief Models the <column> tag inside an XML Query file whose action is 'update'
*
**/
class UpdateColumnTag extends ColumnTag {
var $argument;
function UpdateColumnTag($column, $dbParser) {
parent::ColumnTag($column->attrs->name, $dbParser);
$this->name = $this->dbParser->parseColumnName($this->name);
require_once(_XE_PATH_.'classes/xml/xmlquery/queryargument/QueryArgument.class.php');
$this->argument = new QueryArgument($column);
}
function toString(){
$output_columns = 'array(' . PHP_EOL;
foreach($this->argument as $argument){
$output_columns .= $argument->getExpressionString() . PHP_EOL . ',';
}
$output_columns = substr($output_columns, 0, -1);
$output_columns .= ')';
return $output_columns;
}
function getExpressionString(){
return sprintf('new UpdateExpression(\'%s\', $%s_argument->getValue())'
, $this->name
, $this->argument->argument_name);
}
function getArgument(){
return $this->argument;
}
function getValidatorString(){
return $this->argument->getValidatorString();
}
}
?>

View file

@ -0,0 +1,61 @@
<?php
/**
* @class UpdateColumnsTag
* @author Arnia Software
* @brief Models the <column> tag inside an XML Query file whose action is 'update'
*
**/
require_once(_XE_PATH_.'classes/xml/xmlquery/tags/column/ColumnTag.class.php');
require_once(_XE_PATH_.'classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php');
class UpdateColumnsTag{
var $dbParser;
var $columns;
function UpdateColumnsTag($xml_columns, $dbParser) {
$this->dbParser = $dbParser;
$this->columns = array();
if(!$xml_columns) {
$this->columns[] = new UpdateColumnTag("*", $this->dbParser);
return;
}
if(!is_array($xml_columns)) $xml_columns = array($xml_columns);
foreach($xml_columns as $column){
$this->columns[] = new UpdateColumnTag($column, $this->dbParser);
}
}
function toString(){
$output_columns = 'array(' . PHP_EOL;
foreach($this->columns as $column){
$output_columns .= $column->getExpressionString() . PHP_EOL . ',';
}
$output_columns = substr($output_columns, 0, -1);
$output_columns .= ')';
return $output_columns;
}
function getArguments(){
$arguments = array();
foreach($this->columns as $column){
$arguments[] = $column->getArgument();
}
return $arguments;
}
function getValidatorString(){
$validator = '';
foreach($this->columns as $column){
$validator .= $column->getValidatorString();
}
return $validator;
}
}
?>