mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-23 10:38:45 +02:00
Code refactoring to make the OQL parsing self contained in the "oql" subdirectory.
SVN:2.2.0[3804]
This commit is contained in:
@@ -46,18 +46,18 @@ require_once('stimulus.class.inc.php');
|
||||
require_once('valuesetdef.class.inc.php');
|
||||
require_once('MyHelpers.class.inc.php');
|
||||
|
||||
require_once('expression.class.inc.php');
|
||||
|
||||
require_once('cmdbsource.class.inc.php');
|
||||
require_once('sqlquery.class.inc.php');
|
||||
require_once('sqlobjectquery.class.inc.php');
|
||||
require_once('sqlunionquery.class.inc.php');
|
||||
require_once('oql/expression.class.inc.php');
|
||||
require_once('oql/oqlquery.class.inc.php');
|
||||
require_once('oql/oqlexception.class.inc.php');
|
||||
require_once('oql/oql-parser.php');
|
||||
require_once('oql/oql-lexer.php');
|
||||
require_once('oql/oqlinterpreter.class.inc.php');
|
||||
|
||||
require_once('cmdbsource.class.inc.php');
|
||||
require_once('sqlquery.class.inc.php');
|
||||
require_once('sqlobjectquery.class.inc.php');
|
||||
require_once('sqlunionquery.class.inc.php');
|
||||
|
||||
require_once('dbobject.class.php');
|
||||
require_once('dbsearch.class.php');
|
||||
require_once('dbobjectset.class.php');
|
||||
|
||||
@@ -20,17 +20,6 @@
|
||||
require_once('dbobjectsearch.class.php');
|
||||
require_once('dbunionsearch.class.php');
|
||||
|
||||
|
||||
define('TREE_OPERATOR_EQUALS', 0);
|
||||
define('TREE_OPERATOR_BELOW', 1);
|
||||
define('TREE_OPERATOR_BELOW_STRICT', 2);
|
||||
define('TREE_OPERATOR_NOT_BELOW', 3);
|
||||
define('TREE_OPERATOR_NOT_BELOW_STRICT', 4);
|
||||
define('TREE_OPERATOR_ABOVE', 5);
|
||||
define('TREE_OPERATOR_ABOVE_STRICT', 6);
|
||||
define('TREE_OPERATOR_NOT_ABOVE', 7);
|
||||
define('TREE_OPERATOR_NOT_ABOVE_STRICT', 8);
|
||||
|
||||
/**
|
||||
* An object search
|
||||
*
|
||||
|
||||
50
core/oql/check_oql.php
Normal file
50
core/oql/check_oql.php
Normal file
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
/**
|
||||
* Minimal file (with all the needed includes) to check the validity of an OQL by verifying:
|
||||
* - The syntax (of the OQL query string)
|
||||
* - The consistency with a given data model (represented by an instance of ModelReflection)
|
||||
*
|
||||
* Usage:
|
||||
*
|
||||
* require_once(APPROOT.'core/oql/check_oql.php');
|
||||
*
|
||||
* $sOQL = "SELECT Zerver WHERE status = 'production'";
|
||||
* $oModelReflection = new ModelReflectionRuntime();
|
||||
* $aResults = CheckOQL($sOQL, $oModelReflection);
|
||||
* if ($aResults['status'] == 'error')
|
||||
* {
|
||||
* echo "The query '$sOQL' is not a valid query. Reason: {$aResults['message']}";
|
||||
* }
|
||||
* else
|
||||
* {
|
||||
* echo "Ok, '$sOQL' is a valid query";
|
||||
* }
|
||||
*/
|
||||
class CoreException extends Exception
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
require_once(__DIR__.'/expression.class.inc.php');
|
||||
require_once(__DIR__.'/oqlquery.class.inc.php');
|
||||
require_once(__DIR__.'/oqlexception.class.inc.php');
|
||||
require_once(__DIR__.'/oql-parser.php');
|
||||
require_once(__DIR__.'/oql-lexer.php');
|
||||
require_once(__DIR__.'/oqlinterpreter.class.inc.php');
|
||||
|
||||
function CheckOQL($sOQL, ModelReflection $oModelReflection)
|
||||
{
|
||||
$aRes = array('status' => 'ok', 'message' => '');
|
||||
try
|
||||
{
|
||||
$oOql = new OqlInterpreter($sOQL);
|
||||
$oOqlQuery = $oOql->ParseQuery(); // Exceptions thrown in case of issue
|
||||
$oOqlQuery->Check($oModelReflection,$sOQL); // Exceptions thrown in case of issue
|
||||
}
|
||||
catch(Exception $e)
|
||||
{
|
||||
$aRes['status'] = 'error';
|
||||
$aRes['message'] = $e->getMessage();
|
||||
}
|
||||
return $aRes;
|
||||
}
|
||||
@@ -24,6 +24,16 @@
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
define('TREE_OPERATOR_EQUALS', 0);
|
||||
define('TREE_OPERATOR_BELOW', 1);
|
||||
define('TREE_OPERATOR_BELOW_STRICT', 2);
|
||||
define('TREE_OPERATOR_NOT_BELOW', 3);
|
||||
define('TREE_OPERATOR_NOT_BELOW_STRICT', 4);
|
||||
define('TREE_OPERATOR_ABOVE', 5);
|
||||
define('TREE_OPERATOR_ABOVE_STRICT', 6);
|
||||
define('TREE_OPERATOR_NOT_ABOVE', 7);
|
||||
define('TREE_OPERATOR_NOT_ABOVE_STRICT', 8);
|
||||
|
||||
// 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
|
||||
|
||||
Reference in New Issue
Block a user