Updated code comments for PHPDocumentor - column classes

git-svn-id: http://xe-core.googlecode.com/svn/branches/luminous@12418 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ucorina 2012-12-17 14:29:23 +00:00
parent 2334535831
commit 39c2f06aa7
11 changed files with 457 additions and 367 deletions

View file

@ -44,6 +44,7 @@ if(!defined('__XE_LOADED_XML_CLASS__')){
* *
* @author Corina Udrescu (corina.udrescu@arnia.ro) * @author Corina Udrescu (corina.udrescu@arnia.ro)
* @package /classes/xml * @package /classes/xml
* @version 0.1
*/ */
class XmlQueryParser extends XmlParser { class XmlQueryParser extends XmlParser {

View file

@ -9,6 +9,7 @@
* *
* @author Corina Udrescu (corina.udrescu@arnia.ro) * @author Corina Udrescu (corina.udrescu@arnia.ro)
* @package /classes/xml/xmlquery * @package /classes/xml/xmlquery
* @version 0.1
*/ */
class DBParser class DBParser
{ {

View file

@ -8,6 +8,7 @@
* *
* @author Corina Udrescu (corina.udrescu@arnia.ro) * @author Corina Udrescu (corina.udrescu@arnia.ro)
* @package /classes/xml/xmlquery * @package /classes/xml/xmlquery
* @version 0.1
*/ */
class QueryParser { class QueryParser {

View file

@ -1,28 +1,30 @@
<?php <?php
/**
* ColumnTag class
* 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.
*
* @author Corina Udrescu (corina.udrescu@arnia.ro)
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
*/
class ColumnTag
{
/** /**
* ColumnTag class * Column name
* Models the <column> tag inside an XML Query file * @var string
* 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.
*
* @author Arnia Software
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
*/ */
class ColumnTag { var $name;
/**
* Column name /**
* @var string * Constructor
*/ * @param string $name
var $name; * @return void
*/
/** function ColumnTag($name)
* constructor {
* @param string $name $this->name = $name;
* @return void
*/
function ColumnTag($name){
$this->name = $name;
}
} }
}

View file

@ -1,40 +1,53 @@
<?php <?php
/**
* InsertColumnTag
* Models the <column> tag inside an XML Query file whose action is 'insert'
*
* @author Corina Udrescu (corina.udrescu@arnia.ro)
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
*/
class InsertColumnTag extends ColumnTag
{
/** /**
* InsertColumnTag * Argument
* Models the <column> tag inside an XML Query file whose action is 'insert' * @var QueryArgument object
*
* @author Arnia Software
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
*/ */
class InsertColumnTag extends ColumnTag { var $argument;
/**
* argument
* @var QueryArgument object
*/
var $argument;
/**
* constructor
* @param object $column
* @return void
*/
function InsertColumnTag($column) {
parent::ColumnTag($column->attrs->name);
$dbParser = DB::getParser();
$this->name = $dbParser->parseColumnName($this->name);
$this->argument = new QueryArgument($column);
}
function getExpressionString(){
return sprintf('new InsertExpression(\'%s\', ${\'%s_argument\'})'
, $this->name
, $this->argument->argument_name);
}
function getArgument(){
return $this->argument;
}
/**
* Constructor
* @param object $column
* @return void
*/
function InsertColumnTag($column) {
parent::ColumnTag($column->attrs->name);
$dbParser = DB::getParser();
$this->name = $dbParser->parseColumnName($this->name);
$this->argument = new QueryArgument($column);
} }
/**
* Returns the string to be output in the cache file
* used for instantiating an InsertExpression when a
* query is executed
*
* @return string
*/
function getExpressionString(){
return sprintf('new InsertExpression(\'%s\', ${\'%s_argument\'})'
, $this->name
, $this->argument->argument_name);
}
/**
* Returns the QueryArgument object associated with this INSERT statement
*
* @return QueryArgument
*/
function getArgument(){
return $this->argument;
}
}
?> ?>

View file

@ -1,31 +1,46 @@
<?php <?php
/**
* InsertColumnTagWithoutArgument
* Models the <column> tag inside an XML Query file whose action is 'insert-select'
*
* @author Corina Udrescu (corina.udrescu@arnia.ro)
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
*/
class InsertColumnTagWithoutArgument extends ColumnTag
{
/** /**
* InsertColumnTagWithoutArgument * Constructor
* Models the <column> tag inside an XML Query file whose action is 'insert-select'
* *
* @author Arnia Software * @param object $column
* @package /classes/xml/xmlquery/tags/column * @return void
* @version 0.1
*/ */
class InsertColumnTagWithoutArgument extends ColumnTag { function InsertColumnTagWithoutArgument($column)
/** {
* constructor parent::ColumnTag($column->attrs->name);
* @param object $column $dbParser = DB::getParser();
* @return void $this->name = $dbParser->parseColumnName($this->name);
*/
function InsertColumnTagWithoutArgument($column) {
parent::ColumnTag($column->attrs->name);
$dbParser = DB::getParser();
$this->name = $dbParser->parseColumnName($this->name);
}
function getExpressionString(){
return sprintf('new Expression(\'%s\')', $this->name);
}
function getArgument(){
return null;
}
} }
/**
* Returns the string to be output in the cache file
*
* @return string
*/
function getExpressionString()
{
return sprintf('new Expression(\'%s\')', $this->name);
}
/**
* Returns the QueryArgument object associated with this INSERT statement
*
* @return null
*/
function getArgument()
{
return NULL;
}
}
?> ?>

View file

@ -1,65 +1,68 @@
<?php <?php
/**
* InsertColumnsTag class
* Models the <columns> tag inside an XML Query file whose action is 'insert'
*
* @author Corina Udrescu (corina.udrescu@arnia.ro)
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
*/
class InsertColumnsTag{
/** /**
* InsertColumnsTag class * Column list
* Models the <column> tag inside an XML Query file whose action is 'insert' * @var array value is InsertColumnTag object
*
* @author Arnia Software
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
*/ */
class InsertColumnsTag{ var $columns;
/**
* Column list
* @var array value is InsertColumnTag object
*/
var $columns;
/** /**
* constructor * Constructor
* @param array|string $xml_columns * @param array|string $xml_columns
* @return void * @return void
*/ */
function InsertColumnsTag($xml_columns) { function InsertColumnsTag($xml_columns)
$this->columns = array(); {
$this->columns = array();
if(!$xml_columns) if(!$xml_columns)
return; return;
if(!is_array($xml_columns)) $xml_columns = array($xml_columns); if(!is_array($xml_columns)) $xml_columns = array($xml_columns);
foreach($xml_columns as $column){ foreach($xml_columns as $column){
if($column->name === 'query') $this->columns[] = new QueryTag($column, true); if($column->name === 'query') $this->columns[] = new QueryTag($column, true);
else if(!isset($column->attrs->var) && !isset($column->attrs->default)) $this->columns[] = new InsertColumnTagWithoutArgument($column); else if(!isset($column->attrs->var) && !isset($column->attrs->default)) $this->columns[] = new InsertColumnTagWithoutArgument($column);
else $this->columns[] = new InsertColumnTag($column); else $this->columns[] = new InsertColumnTag($column);
}
} }
/**
* InsertColumnTag object to string
* @return string
*/
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;
}
/**
* Return argument list
* @return array
*/
function getArguments(){
$arguments = array();
foreach($this->columns as $column){
$arguments[] = $column->getArgument();
}
return $arguments;
}
} }
/**
* InsertColumnTag object to string
* @return string
*/
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;
}
/**
* Return argument list
* @return array
*/
function getArguments()
{
$arguments = array();
foreach($this->columns as $column){
$arguments[] = $column->getArgument();
}
return $arguments;
}
}
?> ?>

View file

@ -1,53 +1,66 @@
<?php <?php
/**
* SelectColumnTag
* Models the <column> tag inside an XML Query file whose action is 'select'
*
* @author Corina Udrescu (corina.udrescu@arnia.ro)
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
*/
class SelectColumnTag extends ColumnTag
{
/** /**
* SelectColumnTag * Column alias
* Models the <column> tag inside an XML Query file whose action is 'select' * @var string
*
* @author Arnia Software
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
*/ */
class SelectColumnTag extends ColumnTag{ var $alias;
/**
* alias /**
* @var string * Click count status
*/ * @var bool
var $alias; */
/** var $click_count;
* click count status
* @var bool /**
*/ * Constructor
var $click_count; * @param string|object $column
* @return void
/** */
* constructor function SelectColumnTag($column)
* @param string|object $column {
* @return void if ($column == "*" || $column->attrs->name == '*')
*/ {
function SelectColumnTag($column){ parent::ColumnTag(NULL);
if ($column == "*" || $column->attrs->name == '*') $this->name = "*";
{
parent::ColumnTag(NULL);
$this->name = "*";
}
else
{
parent::ColumnTag($column->attrs->name);
$dbParser = new DB(); $dbParser = &$dbParser->getParser();
$this->name = $dbParser->parseExpression($this->name);
$this->alias = $column->attrs->alias;
$this->click_count = $column->attrs->click_count;
}
} }
else
function getExpressionString(){ {
if($this->name == '*') return "new StarExpression()"; parent::ColumnTag($column->attrs->name);
if($this->click_count) $dbParser = new DB(); $dbParser = &$dbParser->getParser();
return sprintf('new ClickCountExpression(\'%s\', %s, $args->%s)', $this->name, $this->alias ? '\'' . $this->alias . '\'' : "''",$this->click_count); $this->name = $dbParser->parseExpression($this->name);
if(strpos($this->name, '$') === 0)
return sprintf('new SelectExpression($args->%s)', substr($this->name, 1)); $this->alias = $column->attrs->alias;
$dbParser = DB::getParser(); $this->click_count = $column->attrs->click_count;
return sprintf('new SelectExpression(\'%s\'%s)', $this->name, $this->alias ? ', \''.$dbParser->escape($this->alias) .'\'': '');
} }
} }
/**
* Returns the string to be output in the cache file
*
* A select column tag in an XML query can be used for:
* - a star expression: SELECT *
* - a click count expression: SELECT + UPDATE
* - any other select expression (column name, function call etc).
*
* @return string
*/
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->alias . '\'' : "''",$this->click_count);
if(strpos($this->name, '$') === 0)
return sprintf('new SelectExpression($args->%s)', substr($this->name, 1));
$dbParser = DB::getParser();
return sprintf('new SelectExpression(\'%s\'%s)', $this->name, $this->alias ? ', \''.$dbParser->escape($this->alias) .'\'': '');
}
}

View file

@ -1,83 +1,92 @@
<?php <?php
/**
* SelectColumnsTag class
* Models the <columns> tag inside an XML Query file whose action is 'select'
*
* @author Corina Udrescu (corina.udrescu@arnia.ro)
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
*/
class SelectColumnsTag
{
/** /**
* SelectColumnTag class * Column list
* * @var array value is SelectColumnTag object
* @author Arnia Software
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
*/ */
class SelectColumnsTag { var $columns;
/**
* Column list
* @var array value is SelectColumnTag object
*/
var $columns;
/** /**
* constructor * Constructor
* @param Xml_Node_ $xml_columns *
* @return void * @param $xml_columns_tag
*/ * @internal param \Xml_Node_ $xml_columns
function SelectColumnsTag($xml_columns_tag){ * @return void
if (!$xml_columns_tag) */
$xml_columns_tag = new Xml_Node_(); function SelectColumnsTag($xml_columns_tag)
{
if (!$xml_columns_tag)
$xml_columns_tag = new Xml_Node_();
$xml_columns = $xml_columns_tag->column; $xml_columns = $xml_columns_tag->column;
$xml_queries = $xml_columns_tag->query; $xml_queries = $xml_columns_tag->query;
$this->columns = array(); $this->columns = array();
if(!$xml_columns) { if(!$xml_columns) {
$this->columns[] = new SelectColumnTag("*"); $this->columns[] = new SelectColumnTag("*");
return; return;
}
if(!is_array($xml_columns)) $xml_columns = array($xml_columns);
foreach($xml_columns as $column){
$this->columns[] = new SelectColumnTag($column);
}
if(!$xml_queries) {
return;
}
if(!is_array($xml_queries)) $xml_queries = array($xml_queries);
foreach($xml_queries as $column){
$this->columns[] = new QueryTag($column, true);
}
} }
/** if(!is_array($xml_columns)) $xml_columns = array($xml_columns);
* SelectColumnTag object to string
* @return string foreach($xml_columns as $column){
*/ $this->columns[] = new SelectColumnTag($column);
function toString(){
$output_columns = 'array(' . PHP_EOL;
foreach($this->columns as $column){
if(is_a($column, 'QueryTag'))
$output_columns .= $column->toString() . PHP_EOL . ',';
else
$output_columns .= $column->getExpressionString() . PHP_EOL . ',';
}
$output_columns = substr($output_columns, 0, -1);
$output_columns .= ')';
return $output_columns;
} }
/**
* Return argument list if(!$xml_queries) {
* @return array return;
*/ }
function getArguments(){
$arguments = array(); if(!is_array($xml_queries)) $xml_queries = array($xml_queries);
foreach($this->columns as $column){
if(is_a($column, 'QueryTag')) foreach($xml_queries as $column){
$arguments = array_merge($arguments, $column->getArguments()); $this->columns[] = new QueryTag($column, TRUE);
}
return $arguments;
} }
} }
/**
* Returns the string to be output in the cache file
*
* @return string
*/
function toString()
{
$output_columns = 'array(' . PHP_EOL;
foreach($this->columns as $column){
if(is_a($column, 'QueryTag'))
$output_columns .= $column->toString() . PHP_EOL . ',';
else
$output_columns .= $column->getExpressionString() . PHP_EOL . ',';
}
$output_columns = substr($output_columns, 0, -1);
$output_columns .= ')';
return $output_columns;
}
/**
* Return argument list
*
* @return array
*/
function getArguments()
{
$arguments = array();
foreach($this->columns as $column){
if(is_a($column, 'QueryTag'))
$arguments = array_merge($arguments, $column->getArguments());
}
return $arguments;
}
}
?> ?>

View file

@ -1,73 +1,100 @@
<?php <?php
/**
* UpdateColumnTag
* Models the <column> tag inside an XML Query file whose action is 'update'
*
* @author Corina Udrescu (corina.udrescu@arnia.ro)
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
*/
class UpdateColumnTag extends ColumnTag {
/** /**
* UpdateColumnTag * Argument
* Models the <column> tag inside an XML Query file whose action is 'update' * @var QueryArgument object
*
* @author Arnia Software
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
*/ */
class UpdateColumnTag extends ColumnTag { var $argument;
/**
* argument
* @var QueryArgument object
*/
var $argument;
/**
* default value
* @var string
*/
var $default_value;
/** /**
* constructor * Default value
* @param object $column * @var string
* @return void */
*/ var $default_value;
function UpdateColumnTag($column) {
parent::ColumnTag($column->attrs->name); /**
$dbParser = DB::getParser(); * Constructor
$this->name = $dbParser->parseColumnName($this->name); * @param object $column
if($column->attrs->var) * @return void
$this->argument = new QueryArgument($column); */
else { function UpdateColumnTag($column)
if(strpos($column->attrs->default, '.') !== false) {
$this->default_value = "'" . $dbParser->parseColumnName($column->attrs->default) . "'"; parent::ColumnTag($column->attrs->name);
else {
$default_value = new DefaultValue($this->name, $column->attrs->default); $dbParser = DB::getParser();
if($default_value->isOperation()) $this->name = $dbParser->parseColumnName($this->name);
$this->argument = new QueryArgument($column, true);
//else $this->default_value = $dbParser->parseColumnName($column->attrs->default); if($column->attrs->var)
else { $this->argument = new QueryArgument($column);
$this->default_value = $default_value->toString(); else {
if($default_value->isStringFromFunction()){ if(strpos($column->attrs->default, '.') !== FALSE)
$this->default_value = '"\'".' . $this->default_value . '."\'"'; {
} $this->default_value = "'" . $dbParser->parseColumnName($column->attrs->default) . "'";
if($default_value->isString()){ }
$this->default_value = '"' . $this->default_value . '"'; else
} {
} $default_value = new DefaultValue($this->name, $column->attrs->default);
if($default_value->isOperation())
{
$this->argument = new QueryArgument($column, TRUE);
}
//else $this->default_value = $dbParser->parseColumnName($column->attrs->default);
else
{
$this->default_value = $default_value->toString();
if($default_value->isStringFromFunction())
{
$this->default_value = '"\'".' . $this->default_value . '."\'"';
}
if($default_value->isString())
{
$this->default_value = '"' . $this->default_value . '"';
}
}
} }
}
}
function getExpressionString(){
if($this->argument)
return sprintf('new UpdateExpression(\'%s\', ${\'%s_argument\'})'
, $this->name
, $this->argument->argument_name);
else {
return sprintf('new UpdateExpressionWithoutArgument(\'%s\', %s)'
, $this->name
, $this->default_value);
}
}
function getArgument(){
return $this->argument;
} }
} }
/**
* Returns the string to be output in the cache file
*
* @return string
*/
function getExpressionString()
{
if($this->argument)
{
return sprintf('new UpdateExpression(\'%s\', ${\'%s_argument\'})'
, $this->name
, $this->argument->argument_name);
}
else
{
return sprintf('new UpdateExpressionWithoutArgument(\'%s\', %s)'
, $this->name
, $this->default_value);
}
}
/**
* Returns the Argument associated with this update statement
*
* @return QueryArgument
*/
function getArgument()
{
return $this->argument;
}
}
?> ?>

View file

@ -1,61 +1,66 @@
<?php <?php
/**
* UpdateColumnsTag
* Models the <columns> tag inside an XML Query file whose action is 'update'
*
* @author Corina Udrescu (corina.udrescu@arnia.ro)
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
*/
class UpdateColumnsTag{
/** /**
* UpdateColumnsTag * Column list
* Models the <column> tag inside an XML Query file whose action is 'update' * @var array value is UpdateColumnTag object
*
* @author Arnia Software
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
*/ */
class UpdateColumnsTag{ var $columns;
/**
* Column list
* @var array value is UpdateColumnTag object
*/
var $columns;
/** /**
* constructor * Constructor
* @param array|string $xml_columns * @param array|object $xml_columns
* @return void * @return void
*/ */
function UpdateColumnsTag($xml_columns) { function UpdateColumnsTag($xml_columns)
$this->columns = array(); {
$this->columns = array();
if(!is_array($xml_columns)) $xml_columns = array($xml_columns); if(!is_array($xml_columns)) $xml_columns = array($xml_columns);
foreach($xml_columns as $column){ foreach($xml_columns as $column){
if($column->name === 'query') $this->columns[] = new QueryTag($column, true); if($column->name === 'query') $this->columns[] = new QueryTag($column, true);
else $this->columns[] = new UpdateColumnTag($column); else $this->columns[] = new UpdateColumnTag($column);
}
} }
/**
* UpdateColumnTag object to string
* @return string
*/
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;
}
/**
* Return argument list
* @return array
*/
function getArguments(){
$arguments = array();
foreach($this->columns as $column){
$arguments[] = $column->getArgument();
}
return $arguments;
}
} }
/**
* Returns the string to be output in the cache file
*
* @return string
*/
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;
}
/**
* Return argument list
*
* @return array
*/
function getArguments()
{
$arguments = array();
foreach($this->columns as $column){
$arguments[] = $column->getArgument();
}
return $arguments;
}
}
?> ?>