use of org.drools.javaparser.ast.expr.MethodCallExpr in project drools by kiegroup.
the class LegacyAccumulate method build.
public void build() {
new PatternBuilder().build(ruleBuildContext, basePattern);
final Set<String> imports = ruleBuildContext.getPkg().getImports().keySet();
final String packageName = ruleBuildContext.getPkg().getName();
GeneratedClassWithPackage generatedClassWithPackage = createAllAccumulateClass(imports, packageName);
packageModel.addGeneratedAccumulateClasses(generatedClassWithPackage);
GeneratedClassWithPackage invokerGenerated = createInvokerClass(imports, packageName);
packageModel.addGeneratedAccumulateClasses(invokerGenerated);
final String typeWithPackage = String.format("%s.%s", packageName, invokerGenerated.getGeneratedClass().getName().asString());
final ClassExpr accFunctionName = new ClassExpr(JavaParser.parseType(typeWithPackage));
final MethodCallExpr accFunctionCall = new MethodCallExpr(null, "accFunction", nodeList(accFunctionName));
final NameExpr bindingVariable = new NameExpr(toVar(basePattern.getIdentifier()));
final MethodCallExpr asDSL = new MethodCallExpr(accFunctionCall, "as", nodeList(bindingVariable));
context.addExpression(asDSL);
}
use of org.drools.javaparser.ast.expr.MethodCallExpr in project drools by kiegroup.
the class FlowDSLPattern method createInputExpression.
private MethodCallExpr createInputExpression(PatternDescr pattern) {
MethodCallExpr exprDSL = new MethodCallExpr(null, INPUT_CALL);
exprDSL.addArgument(new NameExpr(toVar(pattern.getIdentifier())));
Set<String> watchedProperties = new HashSet<>();
watchedProperties.addAll(context.getRuleDescr().lookAheadFieldsOfIdentifier(pattern));
watchedProperties.addAll(getPatternListenedProperties(pattern));
if (!watchedProperties.isEmpty()) {
exprDSL = new MethodCallExpr(exprDSL, "watch");
watchedProperties.stream().map(StringLiteralExpr::new).forEach(exprDSL::addArgument);
}
return exprDSL;
}
use of org.drools.javaparser.ast.expr.MethodCallExpr in project drools by kiegroup.
the class PatternDSLPattern method createPatternExpression.
private MethodCallExpr createPatternExpression(PatternDescr pattern) {
MethodCallExpr dslExpr = new MethodCallExpr(null, PATTERN_CALL);
dslExpr.addArgument(QueryGenerator.substituteBindingWithQueryParameter(context, pattern.getIdentifier()));
return dslExpr;
}
use of org.drools.javaparser.ast.expr.MethodCallExpr in project drools by kiegroup.
the class PatternDSLPattern method buildPattern.
@Override
public void buildPattern() {
generatePatternIdentifierIfMissing();
final Optional<Expression> declarationSource = buildFromDeclaration(pattern);
context.addDeclaration(new DeclarationSpec(pattern.getIdentifier(), patternType, Optional.of(pattern), declarationSource));
if (constraintDescrs.isEmpty() && !(pattern.getSource() instanceof AccumulateDescr)) {
context.addExpression(addWatchToPattern(createPatternExpression(pattern)));
} else {
if (!context.hasErrors()) {
final List<PatternConstraintParseResult> patternConstraintParseResults = findAllConstraint(pattern, constraintDescrs, patternType);
MethodCallExpr patternExpression = createPatternExpression(pattern);
List<Expression> exprs = new ArrayList<>();
context.pushExprPointer(exprs::add);
buildConstraints(pattern, patternType, patternConstraintParseResults);
context.popExprPointer();
List<Expression> additionalPatterns = new ArrayList<>();
for (Expression expr : exprs) {
Optional<Expression> rootScope = findRootNodeViaScope(expr);
if (rootScope.isPresent() && ((MethodCallExpr) rootScope.get()).getNameAsString().equals("pattern")) {
additionalPatterns.add(expr);
} else {
MethodCallExpr currentExpr = (MethodCallExpr) expr;
((MethodCallExpr) expr).setScope(patternExpression);
patternExpression = currentExpr;
}
}
context.addExpression(addWatchToPattern(patternExpression));
additionalPatterns.forEach(context::addExpression);
}
}
}
use of org.drools.javaparser.ast.expr.MethodCallExpr 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