Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public Criterion convertExpression(LogicExpression expression, LogicContext context) {
- Criterion criterion = null;
- Operator operator = expression.getOperator();
- Operand rightOperand = expression.getRightOperand();
- Operand leftOperand = ((LogicExpressionBinary) expression).getLeftOperand();
- if (operator == null)
- criterion = createRootExpressionCriterion(expression);
- else {
- if (Operator.AND.equals(operator)) {
- Criterion rightCriterion = convertExpression((LogicExpression) rightOperand, context);
- Criterion leftCriterion = convertExpression((LogicExpression) leftOperand, context);
- criterion = Restrictions.and(rightCriterion, leftCriterion);
- } else if (Operator.OR.equals(operator)) {
- Criterion rightCriterion = convertExpression((LogicExpression) rightOperand, context);
- Criterion leftCriterion = convertExpression((LogicExpression) leftOperand, context);
- criterion = Restrictions.or(rightCriterion, leftCriterion);
- } else {
- if (leftOperand instanceof LogicComponent) {
- // if the left operand is component, then the right operand is an operand
- LogicComponent component = (LogicComponent) leftOperand;
- Operator componentOperator = expression.getOperator();
- Operand componentOperand = expression.getRightOperand();
- // insert the object to aliases
- if (StringUtils.isNotBlank(component.getObject())) {
- getAliases().add(component.getObject());
- }
- criterion = handleComponentExpression(component.getComponentProperty(), componentOperator, componentOperand, context.getIndexDate());
- } else {
- criterion = handleComparisonExpression(expression.getRootToken(), operator, rightOperand, context.getIndexDate());
- LogicExpression leftExpression = (LogicExpression) leftOperand;
- Operator leftOperator = leftExpression.getOperator();
- while(Operator.NOT.equals(leftOperator)) {
- criterion = Restrictions.not(criterion);
- leftOperand = ((LogicExpressionBinary) leftExpression).getLeftOperand();
- leftExpression = (LogicExpression) leftOperand;
- leftOperator = leftExpression.getOperator();
- }
- Criterion leftCriterion = convertExpression((LogicExpression) leftOperand, context);
- if (leftCriterion != null)
- criterion = Restrictions.and(criterion, leftCriterion);
- }
- }
- }
- return criterion;
- }
Add Comment
Please, Sign In to add comment