use of org.drools.model.patterns.AccumulatePatternImpl in project drools by kiegroup.
the class ViewFlowBuilder method viewItem2Condition.
private static Condition viewItem2Condition(ViewItem viewItem, Condition condition, BuildContext ctx) {
if (viewItem instanceof AbstractExprViewItem) {
((PatternImpl) condition).addWatchedProps(((AbstractExprViewItem) viewItem).getWatchedProps());
}
if (viewItem instanceof Expr1ViewItemImpl) {
Expr1ViewItemImpl expr = (Expr1ViewItemImpl) viewItem;
if (expr.getPredicate() != null) {
((PatternImpl) condition).addConstraint(new SingleConstraint1(expr));
}
return condition;
}
if (viewItem instanceof ExprNViewItem) {
((PatternImpl) condition).addConstraint(SingleConstraint.createConstraint((ExprNViewItem) viewItem));
return condition;
}
if (viewItem instanceof TemporalExprViewItem) {
TemporalExprViewItem expr = (TemporalExprViewItem) viewItem;
((PatternImpl) condition).addConstraint(new TemporalConstraint(expr));
return condition;
}
if (viewItem instanceof AccumulateExprViewItem) {
AccumulateExprViewItem acc = (AccumulateExprViewItem) viewItem;
for (AccumulateFunction accFunc : acc.getAccumulateFunctions()) {
ctx.usedVars.add(accFunc.getVariable());
}
final Condition newCondition = acc.getExpr() instanceof InputViewItem ? condition : viewItem2Condition(acc.getExpr(), condition, ctx);
return new AccumulatePatternImpl(newCondition, acc.getAccumulateFunctions());
}
if (viewItem instanceof CombinedExprViewItem) {
CombinedExprViewItem combined = (CombinedExprViewItem) viewItem;
CompositePatterns patterns = viewItems2Condition(new BuildContext(ctx, combined.getExpressions()), combined.getType(), false);
return patterns.getSubConditions().size() == 1 ? patterns.getSubConditions().get(0) : patterns;
}
throw new UnsupportedOperationException("Unknown ViewItem: " + viewItem);
}
use of org.drools.model.patterns.AccumulatePatternImpl in project drools by kiegroup.
the class ViewPatternBuilder method ruleItem2Condition.
public static Condition ruleItem2Condition(RuleItem ruleItem) {
if (ruleItem instanceof PatternDefImpl) {
PatternDefImpl<?> patternDef = (PatternDefImpl) ruleItem;
Variable<?> patternVariable = patternDef.getFirstVariable();
PatternImpl pattern = new PatternImpl(patternVariable, patternVariable instanceof Exchange ? Condition.Type.RECEIVER : Condition.Type.PATTERN);
for (PatternItem patternItem : patternDef.getItems()) {
if (patternItem instanceof PatternExprImpl) {
pattern.addConstraint(((PatternExprImpl) patternItem).asConstraint(patternDef));
} else if (patternItem instanceof PatternBindingImpl) {
pattern.addBinding(((PatternBindingImpl) patternItem).asBinding(patternDef));
} else {
throw new UnsupportedOperationException("Unknown pattern item type: " + patternItem);
}
}
pattern.addWatchedProps(patternDef.getWatch());
pattern.setPassive(patternDef.isPassive());
return pattern;
}
if (ruleItem instanceof FixedValueItem) {
return new EvalImpl(((FixedValueItem) ruleItem).isValue());
}
if (ruleItem instanceof QueryCallViewItem) {
return new QueryCallPattern((QueryCallViewItem) ruleItem);
}
if (ruleItem instanceof CombinedExprViewItem) {
CombinedExprViewItem combined = (CombinedExprViewItem) ruleItem;
List<Condition> conditions = new ArrayList<>();
for (ViewItem expr : combined.getExpressions()) {
conditions.add(ruleItem2Condition(expr));
}
return new CompositePatterns(combined.getType(), conditions);
}
if (ruleItem instanceof ExistentialExprViewItem) {
ExistentialExprViewItem existential = (ExistentialExprViewItem) ruleItem;
return new ExistentialPatternImpl(ruleItem2Condition(existential.getExpression()), existential.getType());
}
if (ruleItem instanceof GroupByExprViewItem) {
GroupByExprViewItem groupBy = (GroupByExprViewItem) ruleItem;
return new GroupByPatternImpl(ruleItem2Condition(groupBy.getExpr()), groupBy.getVars(), groupBy.getVarKey(), groupBy.getGroupingFunction(), groupBy.getAccumulateFunctions());
}
if (ruleItem instanceof AccumulateExprViewItem) {
AccumulateExprViewItem acc = (AccumulateExprViewItem) ruleItem;
return new AccumulatePatternImpl(ruleItem2Condition(acc.getExpr()), null, acc.getAccumulateFunctions());
}
if (ruleItem instanceof ExprViewItem) {
return new EvalImpl(createConstraint((ExprViewItem) ruleItem));
}
if (ruleItem instanceof ExchangeDefImpl) {
ExchangeDefImpl<?> exchangeDef = (ExchangeDefImpl) ruleItem;
return new PatternImpl(exchangeDef.getFirstVariable(), Condition.Type.SENDER);
}
throw new UnsupportedOperationException("Unknown " + ruleItem);
}
Aggregations