define([], function () {
'use strict';
/**
* Representing relationship operator used for creation of {@link bop/js/api/operation/CompositeCondition CompositeCondition}s.
*
* <p>
* Author of the {@link bop/js/spi/BOP BOP} is expected to write his own {@link bop/js/spi/operation/ConditionVisitor ConditionVisitor} which interpret incoming {@link operation/js/api/Condition Condition}s and transform them
* into proper URL query or generally process them any way (s)he need. Usually {@link bop/js/spi/operation/ConditionVisitor#visitCompositeCondition ConditionVisitor.visitCompositeCondition(..)} needs to behave differently based
* on the {@link bop/js/api/operation/RelationOperator RelationOperator} assigned to particular {@link bop/js/api/operation/CompositeCondition CompositeCondition}.
* <p>
*
* @AbcsExtension stable
* @version 17.1.1
* @exports bop/js/api/operation/RelationOperator
*
* @constructor
* @private
*
* @see {@link module:operation/js/api/Conditions.OR Conditions.OR(..)} to create {@link bop/js/api/operation/CompositeCondition CompositeCondition}s with {@link bop/js/api/operation/RelationOperator.OR RelationOperator.OR} set.
* @see {@link module:operation/js/api/Conditions.AND Conditions.AND(..)} to create {@link bop/js/api/operation/CompositeCondition CompositeCondition}s with {@link bop/js/api/operation/RelationOperator.OR RelationOperator.AND} set.
* @see {@link bop/js/spi/operation/ConditionVisitor#visitCompositeCondition ConditionVisitor.visitCompositeCondition(..)} to check how {@link bop/js/api/operation/RelationOperator RelationOperator} is processed.
*/
var RelationOperator = function() {
AbcsLib.throwStaticClassError();
};
RelationOperator._UNKNOWN_VALUE = 'RelationOperator.forName() parameter is unknown and can\'t be recognized.';
/**
* Represents relationship operator AND of {@link bop/js/api/operation/CompositeCondition CompositeCondition}.
*
* @AbcsExtension stable
* @version 17.1.1
*
* @type {string}
*/
RelationOperator.AND = 'AND';
/**
* Represents relationship operator OR of {@link bop/js/api/operation/CompositeCondition CompositeCondition}.
*
* @AbcsExtension stable
* @version 17.1.1
*
* @type {string}
*/
RelationOperator.OR = 'OR';
/**
* Get's a {@link bop/js/api/operation/RelationOperator RelationOperator} which correspond to the given value.
*
* <p>
* The primary purpose of this method is to allow recreation of the original object based on
* the information stored within the JSON description.
* </p>
*
* @param {String} value
* @returns {bop/js/api/operation/RelationOperator}
*/
RelationOperator.forName = function(value) {
switch (value) {
case RelationOperator.AND:
return RelationOperator.AND;
case RelationOperator.OR:
return RelationOperator.OR;
default:
throw RelationOperator._UNKNOWN_VALUE;
}
};
return RelationOperator;
});