Search in sources :

Example 1 with Target

use of org.drools.compiler.rule.builder.EvaluatorDefinition.Target in project drools by kiegroup.

the class PatternBuilder method buildOperators.

public static Map<String, EvaluatorWrapper> buildOperators(RuleBuildContext context, Pattern pattern, BaseDescr predicateDescr, Map<String, OperatorDescr> aliases) {
    if (aliases.isEmpty()) {
        return Collections.emptyMap();
    }
    Map<String, EvaluatorWrapper> operators = new HashMap<>();
    for (Map.Entry<String, OperatorDescr> entry : aliases.entrySet()) {
        OperatorDescr op = entry.getValue();
        Declaration leftDecl = createDeclarationForOperator(context, pattern, op.getLeftString());
        Declaration rightDecl = createDeclarationForOperator(context, pattern, op.getRightString());
        Target left = leftDecl != null && leftDecl.isPatternDeclaration() ? Target.HANDLE : Target.FACT;
        Target right = rightDecl != null && rightDecl.isPatternDeclaration() ? Target.HANDLE : Target.FACT;
        op.setLeftIsHandle(left == Target.HANDLE);
        op.setRightIsHandle(right == Target.HANDLE);
        Evaluator evaluator = getConstraintBuilder().getEvaluator(context, predicateDescr, ValueType.OBJECT_TYPE, op.getOperator(), // the rewrite takes care of negation
        false, op.getParametersText(), left, right);
        EvaluatorWrapper wrapper = getConstraintBuilder().wrapEvaluator(evaluator, leftDecl, rightDecl);
        operators.put(entry.getKey(), wrapper);
    }
    return operators;
}
Also used : Target(org.drools.compiler.rule.builder.EvaluatorDefinition.Target) HashMap(java.util.HashMap) OperatorDescr(org.drools.drl.ast.descr.OperatorDescr) TypeDeclaration(org.drools.core.rule.TypeDeclaration) Declaration(org.drools.core.rule.Declaration) Evaluator(org.drools.core.spi.Evaluator) Map(java.util.Map) HashMap(java.util.HashMap)

Aggregations

HashMap (java.util.HashMap)1 Map (java.util.Map)1 Target (org.drools.compiler.rule.builder.EvaluatorDefinition.Target)1 Declaration (org.drools.core.rule.Declaration)1 TypeDeclaration (org.drools.core.rule.TypeDeclaration)1 Evaluator (org.drools.core.spi.Evaluator)1 OperatorDescr (org.drools.drl.ast.descr.OperatorDescr)1