Skip to content
Snippets Groups Projects
Commit b5978435 authored by S.Listl's avatar S.Listl
Browse files

Sql_lib: condition constants added, error constants renamed

parent 517171ef
No related branches found
No related tags found
No related merge requests found
......@@ -777,7 +777,7 @@ function newWhereIfSet(pFieldOrCond, pValue, pCondition, pFieldType, pAlias)
function SqlBuilder (pAlias)
{
if(!(this instanceof SqlBuilder))
throw SqlBuilder.ERROR_INSTANCIATE_WITH_NEW();
throw SqlBuilder._ERROR_INSTANCIATE_WITH_NEW();
this._select = null;
this._from = null;
this._tableName = null; //for update/delete
......@@ -822,88 +822,88 @@ SqlBuilder.prototype.copy = function()
}
}
// errors which are throwed by the SqlBuilder
SqlBuilder.ERROR_INSTANCIATE_WITH_NEW = function()
// errors which are thrown by the SqlBuilder
SqlBuilder._ERROR_INSTANCIATE_WITH_NEW = function()
{
return new Error(translate.text("SqlBuilder must be instanciated with 'new' or one of the factory methods (newSelect, newWhere, newWhereIfSet)"));
}
SqlBuilder.ERROR_INVALID_CONDITION_VALUE_TYPE = function()
SqlBuilder._ERROR_INVALID_CONDITION_VALUE_TYPE = function()
{
return new Error(translate.text("SqlBuilder: invalid value-type for pCondition"));
}
SqlBuilder.ERROR_NO_CONDITION = function()
SqlBuilder._ERROR_NO_CONDITION = function()
{
return new Error(translate.text("SqlBuilder: if you use a subQuery (e.g. SqlBuilder) you have to provide pCondition (e.g. \"exists ?\")"));
}
SqlBuilder.ERROR_INVALID_SUBQUERY_TYPE = function()
SqlBuilder._ERROR_INVALID_SUBQUERY_TYPE = function()
{
return new Error(translate.text("SqlBuilder: invalid value-type for pFieldOrCond. It can be a fully qualified SqlBuilder (e.g. select, from, ... have to be set) or an jdito-prepared-statement array"));
}
SqlBuilder.ERROR_VALUE_IS_MANDATORY = function()
SqlBuilder._ERROR_VALUE_IS_MANDATORY = function()
{
return new Error(translate.text("SqlBuilder: pValue (or pFieldOrCond if only one param) is not allowed to be null, undefined or []. (use *IfSet functions if you need optional conditions which are just ignored if value is null or undefined)"));
}
SqlBuilder.ERROR_VALUE_IS_MANDATORY_JDITO_VAR = function()
SqlBuilder._ERROR_VALUE_IS_MANDATORY_JDITO_VAR = function()
{
return new Error(translate.text("SqlBuilder: pValue has to be a jdito variable which returns something different than null. (use *IfSet functions if you need optional conditions which are just ignored if value is null or undefined)"));
}
SqlBuilder.ERROR_UNSUPPORTED_PARAMETER_COMBINATION = function()
SqlBuilder._ERROR_UNSUPPORTED_PARAMETER_COMBINATION = function()
{
return new Error(translate.text("SqlBuilder: unsupportet parameter combination"));
}
SqlBuilder.ERROR_NO_TABLE = function()
SqlBuilder._ERROR_NO_TABLE = function()
{
return new Error(translate.text("SqlBuilder.deleteDat/updateData: You have to specify a tablename"));
}
SqlBuilder.ERROR_NO_PARAMETER_PROVIDED = function()
SqlBuilder._ERROR_NO_PARAMETER_PROVIDED = function()
{
return new Error(translate.text("SqlBuilder: You have to specify at least one parameter"));
}
SqlBuilder.ERROR_WHERE_NOT_FIRST = function()
SqlBuilder._ERROR_WHERE_NOT_FIRST = function()
{
return new Error(translate.text("SqlBuilder: .where has to be called before following and/or."));
}
SqlBuilder.ERROR_ONLY_ONE_WHERE = function()
SqlBuilder._ERROR_ONLY_ONE_WHERE = function()
{
return new Error(translate.text("SqlBuilder: .where has to be called only one time. Use and/or for further conditions."));
}
SqlBuilder.ERROR_INCOMPLETE_SELECT = function ()
SqlBuilder._ERROR_INCOMPLETE_SELECT = function ()
{
return new Error(translate.text("SqlBuilder: select and from were expected, but not provided."));
}
SqlBuilder.ERROR_CONDITION_IS_MANDATORY = function ()
SqlBuilder._ERROR_CONDITION_IS_MANDATORY = function ()
{
return new Error(translate.text("SqlBuilder: You have to provide a subquery as SqlBuilder, prepared-array or string"));
}
SqlBuilder.ERROR_SUBSELECT_AS_FIELD_NOT_COMPLETE = function ()
SqlBuilder._ERROR_SUBSELECT_AS_FIELD_NOT_COMPLETE = function ()
{
return new Error(translate.text("SqlBuilder: If pFieldOrCond is a SqlBuilder & pValue is provided, pFieldOrCond has to be a full SqlBuilder which will be used as subselect"));
}
SqlBuilder.ERROR_SUBSELECT_AS_FIELD_NO_FIELD_TYPE = function ()
SqlBuilder._ERROR_SUBSELECT_AS_FIELD_NO_FIELD_TYPE = function ()
{
return new Error(translate.text("SqlBuilder: If pFieldOrCond is a SqlBuilder & pValue is provided, you have to provide also pFieldType, as the type cannot be calculated from pFieldOrCond because it is a subselect"));
}
SqlBuilder.ERROR_CONDITION_WRONG_FORMAT = function ()
SqlBuilder._ERROR_CONDITION_WRONG_FORMAT = function ()
{
return new Error(translate.text("SqlBuilder: The '#' in pCondition has to occur before the '?' and '?' has to occur 1 time, '#' has to occur 1 or 0 times."));
}
SqlBuilder.ERROR_NOT_BOOLEAN = function ()
SqlBuilder._ERROR_NOT_BOOLEAN = function ()
{
return new Error(translate.text("pExecuteOnlyIfConditionExists has to be of type boolean. This parameter controls what happens if the condition is empty (select / delete all or nothing)"));
}
......@@ -1255,11 +1255,11 @@ SqlBuilder.prototype._setWhere = function (pFieldOrCond, pValue, pCondition, pFi
// where has to be called before all other and / or
if (this.hasCondition())
throw SqlBuilder.ERROR_WHERE_NOT_FIRST();
throw SqlBuilder._ERROR_WHERE_NOT_FIRST();
// only one where call is allowed
if (this._where._whereWasCalled)
throw SqlBuilder.ERROR_ONLY_ONE_WHERE();
throw SqlBuilder._ERROR_ONLY_ONE_WHERE();
this._where._whereWasCalled = true;
return pAddCondFn.call(this, pFieldOrCond, pValue, pCondition, pFieldType);
......@@ -1309,7 +1309,7 @@ SqlBuilder.prototype._whereCondition = function(pCondition, pMandatory, pAddPrep
return this;
}
else if (pMandatory)
throw SqlBuilder.ERROR_CONDITION_IS_MANDATORY();
throw SqlBuilder._ERROR_CONDITION_IS_MANDATORY();
return this;
}
......@@ -1331,12 +1331,12 @@ SqlBuilder.prototype._whereCondition = function(pCondition, pMandatory, pAddPrep
return this;
}
else if (pMandatory)
throw SqlBuilder.ERROR_CONDITION_IS_MANDATORY();
throw SqlBuilder._ERROR_CONDITION_IS_MANDATORY();
return this;
}
throw SqlBuilder.ERROR_INVALID_CONDITION_VALUE_TYPE();
throw SqlBuilder._ERROR_INVALID_CONDITION_VALUE_TYPE();
}
/**
......@@ -1367,7 +1367,7 @@ SqlBuilder.prototype._whereSubquery = function(pSubquery, pMandatory, pCondition
if (sql[0])
pAddPreparedConditionCallback(this, this._prepare(undefined, sql, pCondition));
else if (pMandatory)
throw SqlBuilder.ERROR_VALUE_IS_MANDATORY();
throw SqlBuilder._ERROR_VALUE_IS_MANDATORY();
return this;
}
......@@ -1379,7 +1379,7 @@ SqlBuilder.prototype._whereSubquery = function(pSubquery, pMandatory, pCondition
// Without condition this function cannot be used with SqlBuilder object as it cannot contain a condition
if (!pCondition)
throw SqlBuilder.ERROR_NO_CONDITION();
throw SqlBuilder._ERROR_NO_CONDITION();
if (subQuery.isFullSelect())
{
......@@ -1387,12 +1387,12 @@ SqlBuilder.prototype._whereSubquery = function(pSubquery, pMandatory, pCondition
pAddPreparedConditionCallback(this, this._prepare(undefined, preparedObj, pCondition));
}
else if (pMandatory)
throw SqlBuilder.ERROR_VALUE_IS_MANDATORY();
throw SqlBuilder._ERROR_VALUE_IS_MANDATORY();
return this;
}
throw SqlBuilder.ERROR_INVALID_SUBQUERY_TYPE();
throw SqlBuilder._ERROR_INVALID_SUBQUERY_TYPE();
}
/**
......@@ -1411,19 +1411,19 @@ SqlBuilder.prototype._whereSubquery = function(pSubquery, pMandatory, pCondition
SqlBuilder.prototype._addWhere = function(pFieldOrCond, pValue, pMandatory, pCondition, pFieldType, pAddPreparedConditionCallback)
{
if (pCondition && !SqlUtils.checkConditionFormat(pCondition))
throw SqlBuilder.ERROR_CONDITION_WRONG_FORMAT();
throw SqlBuilder._ERROR_CONDITION_WRONG_FORMAT();
if (pMandatory === undefined)
pMandatory = true;
if (!this._where._whereWasCalled)
throw SqlBuilder.ERROR_WHERE_NOT_FIRST();
throw SqlBuilder._ERROR_WHERE_NOT_FIRST();
if (!pMandatory && pFieldOrCond === undefined && pValue === undefined && pCondition === undefined && pFieldType === undefined)
return this;
if (pFieldOrCond === undefined && pValue === undefined && pCondition === undefined && pFieldType === undefined)
throw SqlBuilder.ERROR_NO_PARAMETER_PROVIDED();
throw SqlBuilder._ERROR_NO_PARAMETER_PROVIDED();
// Special case: if only pFieldOrCond is set and we can identify it as a valid field-string (e.g. "Table.Field") we assume that it is not just a condition string.
// --> we can check pValue for undefined and also allow simple string-conditions
......@@ -1433,7 +1433,7 @@ SqlBuilder.prototype._addWhere = function(pFieldOrCond, pValue, pMandatory, pCon
if (pValue === undefined && pCondition === undefined && pFieldType === undefined && typeof pFieldOrCond == "string" && SqlUtils.isFullFieldQualifier(pFieldOrCond))
{
if (pMandatory)
throw SqlBuilder.ERROR_VALUE_IS_MANDATORY();
throw SqlBuilder._ERROR_VALUE_IS_MANDATORY();
else
return this;
}
......@@ -1447,11 +1447,11 @@ SqlBuilder.prototype._addWhere = function(pFieldOrCond, pValue, pMandatory, pCon
{
if (!pFieldOrCond.isFullSelect())
{
throw SqlBuilder.ERROR_SUBSELECT_AS_FIELD_NOT_COMPLETE();
throw SqlBuilder._ERROR_SUBSELECT_AS_FIELD_NOT_COMPLETE();
}
if (!pFieldType)
throw SqlBuilder.ERROR_SUBSELECT_AS_FIELD_NO_FIELD_TYPE();
throw SqlBuilder._ERROR_SUBSELECT_AS_FIELD_NO_FIELD_TYPE();
var tmpCond = newWhere(this.alias)
._addWhere("SQL_LIB_DUMMY_TABLE.SQL_LIB_DUMMY_COLUMN", pValue, pMandatory, pCondition, pFieldType, pAddPreparedConditionCallback);
......@@ -1467,7 +1467,7 @@ SqlBuilder.prototype._addWhere = function(pFieldOrCond, pValue, pMandatory, pCon
// first check the default-mandatory-cases: null or undefined. everything else such as checking $-variables is done later
if (pMandatory && (pValue === null || pValue === undefined))
throw SqlBuilder.ERROR_VALUE_IS_MANDATORY();
throw SqlBuilder._ERROR_VALUE_IS_MANDATORY();
// a field is string or array -> normal case
// OR !pFieldOrCond and pValue and pCondition is given -> preparedSQL/SqlBuilder can be used without field if pCondition is set (e.g. with "exists ?")
......@@ -1486,7 +1486,7 @@ SqlBuilder.prototype._addWhere = function(pFieldOrCond, pValue, pMandatory, pCon
if (pValue.length == 0)
{
if (pMandatory)
throw SqlBuilder.ERROR_VALUE_IS_MANDATORY();
throw SqlBuilder._ERROR_VALUE_IS_MANDATORY();
return this;
}
......@@ -1507,7 +1507,7 @@ SqlBuilder.prototype._addWhere = function(pFieldOrCond, pValue, pMandatory, pCon
if (pFieldOrCond !== null && pFieldOrCond !== undefined)
{
if (!pCondition)
pCondition = "# = ?"
pCondition = SqlBuilder.EQUAL();
pCondition = SqlUtils.replaceConditionTemplate(pCondition, '#', SqlUtils.parseField(pFieldOrCond)[0])
}
......@@ -1522,14 +1522,14 @@ SqlBuilder.prototype._addWhere = function(pFieldOrCond, pValue, pMandatory, pCon
}
if (!pCondition)
pCondition = "# = ?"
pCondition = SqlBuilder.EQUAL();
// ... a string starting with $ -> jdito varable which has to be resolved
if (typeofValue == "string" && pValue.length >= 2 && pValue[0] == "$" && pValue[1] != "$") // escape $ if using two $
{
pValue = vars.getString(pValue)
if (pMandatory && pValue === null)
throw SqlBuilder.ERROR_VALUE_IS_MANDATORY_JDITO_VAR();
throw SqlBuilder._ERROR_VALUE_IS_MANDATORY_JDITO_VAR();
if (pValue == "" || pValue)
this._whereCondition(this._prepare(field, pValue, pCondition, pFieldType), undefined, pAddPreparedConditionCallback);
......@@ -1552,7 +1552,7 @@ SqlBuilder.prototype._addWhere = function(pFieldOrCond, pValue, pMandatory, pCon
}
throw SqlBuilder.ERROR_UNSUPPORTED_PARAMETER_COMBINATION();
throw SqlBuilder._ERROR_UNSUPPORTED_PARAMETER_COMBINATION();
}
/**
......@@ -1697,6 +1697,86 @@ SqlBuilder.YEAR_EQUALS = function ()
return (new SqlMaskingUtils().yearFromDate("#")) + " = ?";
}
/**
* Constant-like function which provides a value for pCondition if you need a "# = ?" statement.
* This is the default for the pCondition parameter, so it can be omitted.
*
* @return {String}
*
* @example
* var cond = newWhere("PERSON.FIRSTNAME", "Fritz", SqlBuilder.EQUAL())
*/
SqlBuilder.EQUAL = function ()
{
return "# = ?";
}
/**
* Constant-like function which provides a value for pCondition if you need a "# <> ?" statement.
*
* @return {String}
*
* @example
* var cond = newWhere("PERSON.FIRSTNAME", "Fritz", SqlBuilder.NOT_EQUALS())
*/
SqlBuilder.NOT_EQUAL = function ()
{
return "# <> ?";
}
/**
* Constant-like function which provides a value for pCondition if you need a "# like ?" statement.
*
* @return {String}
*
* @example
* var cond = newWhere("PERSON.FIRSTNAME", "F%", SqlBuilder.LIKE())
*/
SqlBuilder.LIKE = function ()
{
return "# like ?";
}
/**
* Constant-like function which provides a value for pCondition if you need a "# > ?" statement.
*
* @return {String}
*/
SqlBuilder.GREATER_THAN = function ()
{
return "# > ?";
}
/**
* Constant-like function which provides a value for pCondition if you need a "# < ?" statement.
*
* @return {String}
*/
SqlBuilder.LESS_THAN = function ()
{
return "# < ?";
}
/**
* Constant-like function which provides a value for pCondition if you need a "# >= ?" statement.
*
* @return {String}
*/
SqlBuilder.GREATER_OR_EQUAL = function ()
{
return "# >= ?";
}
/**
* Constant-like function which provides a value for pCondition if you need a "# <= ?" statement.
*
* @return {String}
*/
SqlBuilder.LESS_OR_EQUAL = function ()
{
return "# <= ?";
}
/**
* Throws an error if pValue is null, undefined or a SqlBuilder without condition (or if pValue is a $-variable: error if the result of it is null or undefined)<br/>
* Also throws an error if pFieldOrCond is the only parameter and it is null<br/>
......@@ -2034,7 +2114,7 @@ SqlBuilder.prototype._prepare = function(pField, pValue, pCondition, pFieldType,
throw new Error(translate.withArguments("${SQL_LIB_UNDEFINED_VALUE} field: %0", [pField]));
if (pCondition == undefined)
pCondition = "# = ?";
pCondition = SqlBuilder.EQUAL();
var alias, field;
if (pField != null)
......@@ -2214,7 +2294,7 @@ SqlBuilder.prototype.updateData = function(pExecuteOnlyIfConditionExists, pTable
if (this._checkForUpdate(pExecuteOnlyIfConditionExists))
{
if (!pTableName && !this._tableName)
throw SqlBuilder.ERROR_NO_TABLE();
throw SqlBuilder._ERROR_NO_TABLE();
if (!pColumns)
pColumns = null;
......@@ -2248,7 +2328,7 @@ SqlBuilder.prototype.deleteData = function(pExecuteOnlyIfConditionExists, pTable
if (this._checkForUpdate(pExecuteOnlyIfConditionExists))
{
if (!pTableName && !this._tableName)
throw SqlBuilder.ERROR_NO_TABLE();
throw SqlBuilder._ERROR_NO_TABLE();
return db.deleteData(
(pTableName ? pTableName : this._tableName),
......@@ -2425,7 +2505,7 @@ SqlBuilder.prototype._checkForUpdate = function(pExecuteOnlyIfConditionExists)
pExecuteOnlyIfConditionExists = true;
if (typeof pExecuteOnlyIfConditionExists !== "boolean")
throw SqlBuilder.ERROR_NOT_BOOLEAN();
throw SqlBuilder._ERROR_NOT_BOOLEAN();
return !pExecuteOnlyIfConditionExists || this.hasCondition();
}
......@@ -2441,7 +2521,7 @@ SqlBuilder.prototype._checkForSelect = function(pExecuteOnlyIfConditionExists)
pExecuteOnlyIfConditionExists = false;
if (typeof pExecuteOnlyIfConditionExists !== "boolean")
throw SqlBuilder.ERROR_NOT_BOOLEAN();
throw SqlBuilder._ERROR_NOT_BOOLEAN();
if (this.isFullSelect())
{
......@@ -2449,7 +2529,7 @@ SqlBuilder.prototype._checkForSelect = function(pExecuteOnlyIfConditionExists)
}
else
{
throw SqlBuilder.ERROR_INCOMPLETE_SELECT();
throw SqlBuilder._ERROR_INCOMPLETE_SELECT();
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment