use of org.drools.modelcompiler.builder.generator.ModelGenerator.QUERY_INVOCATION_CALL in project drools by kiegroup.
the class QueryCall method buildPattern.
@Override
public void buildPattern() {
MethodCallExpr callMethod = new MethodCallExpr(new NameExpr(queryDef), QUERY_INVOCATION_CALL);
callMethod.addArgument("" + !pattern.isQuery());
List<QueryParameter> parameters = packageModel.getQueryDefWithType().get(queryDef).getContext().getQueryParameters();
for (int i = 0; i < parameters.size(); i++) {
String queryName = context.getQueryName().orElseThrow(RuntimeException::new);
ExprConstraintDescr variableExpr = (ExprConstraintDescr) pattern.getConstraint().getDescrs().get(i);
String variableName = variableExpr.toString();
int unifPos = variableName.indexOf(":=");
if (unifPos > 0) {
variableName = variableName.substring(0, unifPos).trim();
}
Optional<String> unificationId = context.getUnificationId(variableName);
int queryIndex = i + 1;
Expression parameterCall = unificationId.map(name -> (Expression) new NameExpr(toVar(name))).orElseGet(() -> new MethodCallExpr(new NameExpr(queryName), QueryGenerator.toQueryArg(queryIndex)));
callMethod.addArgument(parameterCall);
}
context.addExpression(callMethod);
}
Aggregations