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)
* @package /classes/xml
* @version 0.1
*/
class XmlQueryParser extends XmlParser {

View file

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

View file

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

View file

@ -1,28 +1,30 @@
<?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
* 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 Arnia Software
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
* Column name
* @var string
*/
class ColumnTag {
/**
* Column name
* @var string
*/
var $name;
/**
* constructor
* @param string $name
* @return void
*/
function ColumnTag($name){
$this->name = $name;
}
var $name;
/**
* Constructor
* @param string $name
* @return void
*/
function ColumnTag($name)
{
$this->name = $name;
}
}

View file

@ -1,40 +1,53 @@
<?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
* Models the <column> tag inside an XML Query file whose action is 'insert'
*
* @author Arnia Software
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
* Argument
* @var QueryArgument object
*/
class InsertColumnTag extends ColumnTag {
/**
* 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;
}
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);
}
/**
* 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
/**
* 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
* Models the <column> tag inside an XML Query file whose action is 'insert-select'
* Constructor
*
* @author Arnia Software
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
* @param object $column
* @return void
*/
class InsertColumnTagWithoutArgument extends ColumnTag {
/**
* constructor
* @param object $column
* @return void
*/
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;
}
function InsertColumnTagWithoutArgument($column)
{
parent::ColumnTag($column->attrs->name);
$dbParser = DB::getParser();
$this->name = $dbParser->parseColumnName($this->name);
}
/**
* 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
/**
* 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
* Models the <column> tag inside an XML Query file whose action is 'insert'
*
* @author Arnia Software
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
* Column list
* @var array value is InsertColumnTag object
*/
class InsertColumnsTag{
/**
* Column list
* @var array value is InsertColumnTag object
*/
var $columns;
var $columns;
/**
* constructor
* @param array|string $xml_columns
* @return void
*/
function InsertColumnsTag($xml_columns) {
$this->columns = array();
/**
* Constructor
* @param array|string $xml_columns
* @return void
*/
function InsertColumnsTag($xml_columns)
{
$this->columns = array();
if(!$xml_columns)
return;
if(!$xml_columns)
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){
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 $this->columns[] = new InsertColumnTag($column);
}
foreach($xml_columns as $column){
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 $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
/**
* 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
* Models the <column> tag inside an XML Query file whose action is 'select'
*
* @author Arnia Software
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
* Column alias
* @var string
*/
class SelectColumnTag extends ColumnTag{
/**
* alias
* @var string
*/
var $alias;
/**
* click count status
* @var bool
*/
var $click_count;
/**
* constructor
* @param string|object $column
* @return void
*/
function SelectColumnTag($column){
if ($column == "*" || $column->attrs->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;
}
var $alias;
/**
* Click count status
* @var bool
*/
var $click_count;
/**
* Constructor
* @param string|object $column
* @return void
*/
function SelectColumnTag($column)
{
if ($column == "*" || $column->attrs->name == '*')
{
parent::ColumnTag(NULL);
$this->name = "*";
}
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) .'\'': '');
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;
}
}
/**
* 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
/**
* 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
*
* @author Arnia Software
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
* Column list
* @var array value is SelectColumnTag object
*/
class SelectColumnsTag {
/**
* Column list
* @var array value is SelectColumnTag object
*/
var $columns;
var $columns;
/**
* constructor
* @param Xml_Node_ $xml_columns
* @return void
*/
function SelectColumnsTag($xml_columns_tag){
if (!$xml_columns_tag)
$xml_columns_tag = new Xml_Node_();
/**
* Constructor
*
* @param $xml_columns_tag
* @internal param \Xml_Node_ $xml_columns
* @return void
*/
function SelectColumnsTag($xml_columns_tag)
{
if (!$xml_columns_tag)
$xml_columns_tag = new Xml_Node_();
$xml_columns = $xml_columns_tag->column;
$xml_queries = $xml_columns_tag->query;
$xml_columns = $xml_columns_tag->column;
$xml_queries = $xml_columns_tag->query;
$this->columns = array();
$this->columns = array();
if(!$xml_columns) {
$this->columns[] = new SelectColumnTag("*");
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(!$xml_columns) {
$this->columns[] = new SelectColumnTag("*");
return;
}
/**
* SelectColumnTag object to string
* @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;
if(!is_array($xml_columns)) $xml_columns = array($xml_columns);
foreach($xml_columns as $column){
$this->columns[] = new SelectColumnTag($column);
}
/**
* 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;
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);
}
}
/**
* 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
/**
* 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
* Models the <column> tag inside an XML Query file whose action is 'update'
*
* @author Arnia Software
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
* Argument
* @var QueryArgument object
*/
class UpdateColumnTag extends ColumnTag {
/**
* argument
* @var QueryArgument object
*/
var $argument;
/**
* default value
* @var string
*/
var $default_value;
var $argument;
/**
* constructor
* @param object $column
* @return void
*/
function UpdateColumnTag($column) {
parent::ColumnTag($column->attrs->name);
$dbParser = DB::getParser();
$this->name = $dbParser->parseColumnName($this->name);
if($column->attrs->var)
$this->argument = new QueryArgument($column);
else {
if(strpos($column->attrs->default, '.') !== false)
$this->default_value = "'" . $dbParser->parseColumnName($column->attrs->default) . "'";
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 . '"';
}
}
/**
* Default value
* @var string
*/
var $default_value;
/**
* Constructor
* @param object $column
* @return void
*/
function UpdateColumnTag($column)
{
parent::ColumnTag($column->attrs->name);
$dbParser = DB::getParser();
$this->name = $dbParser->parseColumnName($this->name);
if($column->attrs->var)
$this->argument = new QueryArgument($column);
else {
if(strpos($column->attrs->default, '.') !== FALSE)
{
$this->default_value = "'" . $dbParser->parseColumnName($column->attrs->default) . "'";
}
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
/**
* 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
* Models the <column> tag inside an XML Query file whose action is 'update'
*
* @author Arnia Software
* @package /classes/xml/xmlquery/tags/column
* @version 0.1
* Column list
* @var array value is UpdateColumnTag object
*/
class UpdateColumnsTag{
/**
* Column list
* @var array value is UpdateColumnTag object
*/
var $columns;
var $columns;
/**
* constructor
* @param array|string $xml_columns
* @return void
*/
function UpdateColumnsTag($xml_columns) {
$this->columns = array();
/**
* Constructor
* @param array|object $xml_columns
* @return void
*/
function UpdateColumnsTag($xml_columns)
{
$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){
if($column->name === 'query') $this->columns[] = new QueryTag($column, true);
else $this->columns[] = new UpdateColumnTag($column);
}
foreach($xml_columns as $column){
if($column->name === 'query') $this->columns[] = new QueryTag($column, true);
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;
}
}
?>