mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
169 lines
3.1 KiB
PHP
169 lines
3.1 KiB
PHP
<?
|
|
|
|
// Position a string within an OQL query
|
|
// This is a must if we want to be able to pinpoint an error at any stage of the query interpretation
|
|
// In particular, the normalization phase requires this
|
|
class OqlName
|
|
{
|
|
protected $m_sValue;
|
|
protected $m_iPos;
|
|
|
|
public function __construct($sValue, $iPos)
|
|
{
|
|
$this->m_iPos = $iPos;
|
|
$this->m_sValue = $sValue;
|
|
}
|
|
|
|
public function GetValue()
|
|
{
|
|
return $this->m_sValue;
|
|
}
|
|
|
|
public function GetPos()
|
|
{
|
|
return $this->m_iPos;
|
|
}
|
|
|
|
public function __toString()
|
|
{
|
|
return $this->m_sValue;
|
|
}
|
|
}
|
|
|
|
class OqlJoinSpec
|
|
{
|
|
protected $m_oClass;
|
|
protected $m_oClassAlias;
|
|
protected $m_oLeftField;
|
|
protected $m_oRightField;
|
|
|
|
protected $m_oNextJoinspec;
|
|
|
|
public function __construct($oClass, $oClassAlias, BinaryExpression $oExpression)
|
|
{
|
|
$this->m_oClass = $oClass;
|
|
$this->m_oClassAlias = $oClassAlias;
|
|
$this->m_oLeftField = $oExpression->GetLeftExpr();
|
|
$this->m_oRightField = $oExpression->GetRightExpr();
|
|
}
|
|
|
|
public function GetClass()
|
|
{
|
|
return $this->m_oClass->GetValue();
|
|
}
|
|
public function GetClassAlias()
|
|
{
|
|
return $this->m_oClassAlias->GetValue();
|
|
}
|
|
|
|
public function GetClassDetails()
|
|
{
|
|
return $this->m_oClass;
|
|
}
|
|
public function GetClassAliasDetails()
|
|
{
|
|
return $this->m_oClassAlias;
|
|
}
|
|
|
|
public function GetLeftField()
|
|
{
|
|
return $this->m_oLeftField;
|
|
}
|
|
public function GetRightField()
|
|
{
|
|
return $this->m_oRightField;
|
|
}
|
|
}
|
|
|
|
class BinaryOqlExpression extends BinaryExpression
|
|
{
|
|
}
|
|
|
|
class ScalarOqlExpression extends ScalarExpression
|
|
{
|
|
}
|
|
|
|
class FieldOqlExpression extends FieldExpression
|
|
{
|
|
protected $m_oParent;
|
|
protected $m_oName;
|
|
|
|
public function __construct($oName, $oParent = null)
|
|
{
|
|
if (is_null($oParent))
|
|
{
|
|
$oParent = new OqlName('', 0);
|
|
}
|
|
$this->m_oParent = $oParent;
|
|
$this->m_oName = $oName;
|
|
|
|
parent::__construct($oName->GetValue(), $oParent->GetValue());
|
|
}
|
|
|
|
public function GetParentDetails()
|
|
{
|
|
return $this->m_oParent;
|
|
}
|
|
|
|
public function GetNameDetails()
|
|
{
|
|
return $this->m_oName;
|
|
}
|
|
}
|
|
|
|
class ListOqlExpression extends ListExpression
|
|
{
|
|
}
|
|
|
|
class FunctionOqlExpression extends FunctionExpression
|
|
{
|
|
}
|
|
|
|
class IntervalOqlExpression extends IntervalExpression
|
|
{
|
|
}
|
|
class OqlQuery
|
|
{
|
|
protected $m_oClass;
|
|
protected $m_oClassAlias;
|
|
protected $m_aJoins; // array of OqlJoinSpec
|
|
protected $m_oCondition; // condition tree (expressions)
|
|
|
|
public function __construct($oClass, $oClassAlias = '', $oCondition = null, $aJoins = null)
|
|
{
|
|
$this->m_oClass = $oClass;
|
|
$this->m_oClassAlias = $oClassAlias;
|
|
$this->m_aJoins = $aJoins;
|
|
$this->m_oCondition = $oCondition;
|
|
}
|
|
|
|
public function GetClass()
|
|
{
|
|
return $this->m_oClass->GetValue();
|
|
}
|
|
public function GetClassAlias()
|
|
{
|
|
return $this->m_oClassAlias->GetValue();
|
|
}
|
|
|
|
public function GetClassDetails()
|
|
{
|
|
return $this->m_oClass;
|
|
}
|
|
public function GetClassAliasDetails()
|
|
{
|
|
return $this->m_oClassAlias;
|
|
}
|
|
|
|
public function GetJoins()
|
|
{
|
|
return $this->m_aJoins;
|
|
}
|
|
public function GetCondition()
|
|
{
|
|
return $this->m_oCondition;
|
|
}
|
|
}
|
|
|
|
?>
|