use of org.drools.model.PatternDSL.PatternDefImpl in project drools by kiegroup.
the class ViewPatternBuilder method ruleItem2Condition.
private static Condition ruleItem2Condition(RuleItem ruleItem) {
if (ruleItem instanceof PatternDefImpl) {
PatternDefImpl<?> patternDef = (PatternDefImpl) ruleItem;
PatternImpl pattern = new PatternImpl(patternDef.getFirstVariable());
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));
}
}
pattern.addWatchedProps(patternDef.getWatch());
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 AccumulateExprViewItem) {
AccumulateExprViewItem acc = (AccumulateExprViewItem) ruleItem;
return new AccumulatePatternImpl(ruleItem2Condition(acc.getExpr()), acc.getAccumulateFunctions());
}
if (ruleItem instanceof ExprViewItem) {
return new EvalImpl(createConstraint((ExprViewItem) ruleItem));
}
throw new UnsupportedOperationException("Unknown " + ruleItem);
}
Aggregations