use of org.drools.drl.ast.descr.ConditionalBranchDescr in project drools by kiegroup.
the class ConditionalBranchBuilder method build.
public ConditionalBranch build(RuleBuildContext context, BaseDescr descr, Pattern prefixPattern) {
ConditionalBranchDescr conditionalBranch = (ConditionalBranchDescr) descr;
String consequenceName = conditionalBranch.getConsequence().getName();
if (!context.getRuleDescr().getNamedConsequences().containsKey(consequenceName)) {
DroolsError err = new RuleBuildError(context.getRule(), context.getParentDescr(), null, "Unknown consequence name: " + consequenceName);
context.addError(err);
return null;
}
RuleConditionBuilder evalBuilder = (RuleConditionBuilder) context.getDialect().getBuilder(EvalDescr.class);
EvalCondition condition = (EvalCondition) evalBuilder.build(context, conditionalBranch.getCondition(), getLastPattern(context));
NamedConsequenceBuilder namedConsequenceBuilder = (NamedConsequenceBuilder) context.getDialect().getBuilder(NamedConsequenceDescr.class);
NamedConsequence consequence = namedConsequenceBuilder.build(context, conditionalBranch.getConsequence());
ConditionalBranchDescr elseBranchDescr = conditionalBranch.getElseBranch();
return new ConditionalBranch(condition, consequence, elseBranchDescr != null ? build(context, elseBranchDescr, prefixPattern) : null);
}
use of org.drools.drl.ast.descr.ConditionalBranchDescr in project drools by kiegroup.
the class KiePMMLDescrLhsFactoryTest method declareIfBreak.
@Test
public void declareIfBreak() {
String ifBreakField = "TEMPERATURE";
String ifBreakOperator = "<";
Object ifBreakValue = 24;
KiePMMLDescrLhsFactory.factory(lhsBuilder).declareIfBreak(ifBreakField, ifBreakOperator, ifBreakValue);
assertNotNull(lhsBuilder.getDescr());
final List<BaseDescr> descrs = lhsBuilder.getDescr().getDescrs();
assertNotNull(descrs);
assertEquals(2, descrs.size());
assertTrue(descrs.get(0) instanceof PatternDescr);
assertTrue(descrs.get(1) instanceof ConditionalBranchDescr);
PatternDescr patternDescr = (PatternDescr) descrs.get(0);
assertEquals(ifBreakField, patternDescr.getObjectType());
assertEquals(INPUT_FIELD, patternDescr.getIdentifier());
assertTrue(patternDescr.getConstraint() instanceof AndDescr);
ConditionalBranchDescr conditionalBranchDescr = (ConditionalBranchDescr) descrs.get(1);
String expectedCondition = String.format(INPUT_FIELD_CONDITIONAL, ifBreakOperator, ifBreakValue);
assertEquals(expectedCondition, conditionalBranchDescr.getCondition().getContent());
assertTrue(conditionalBranchDescr.getConsequence().isBreaking());
assertEquals(BREAK_LABEL, conditionalBranchDescr.getConsequence().getText());
}
Aggregations