@Override public Set<PatternWrapper> getPatterns() { final Set<PatternWrapper> patterns = new HashSet<>(); if (isNewColumn() || !isNewFactPattern()) { final BRLRuleModel brlRuleModel = new BRLRuleModel(presenter.getModel()); final List<String> variables = brlRuleModel.getLHSPatternVariables(); variables.forEach(var -> { final String factType = brlRuleModel.getLHSBoundFact(var).getFactType(); final boolean isNegated = brlRuleModel.getLHSBoundFact(var).isNegated(); patterns.add(new PatternWrapper(factType, var, isNegated)); }); } if (isNewColumn() || isNewFactPattern()) { final BRLRuleModel brlRuleModel = new BRLRuleModel(presenter.getModel()); final List<String> variables = brlRuleModel.getRHSBoundFacts(); variables.forEach(var -> { final String factType = brlRuleModel.getRHSBoundFact(var).getFactType(); patterns.add(new PatternWrapper(factType, var)); }); } return patterns; }
BRLRuleModel makeBRLRuleModel() { final GuidedDecisionTable52 model = getPresenter().getModel(); final BRLRuleModel brlRuleModel = new BRLRuleModel(model); final FactPattern pat = patternWrapper().makeFactPattern(); brlRuleModel.addLhsItem(pat); return brlRuleModel; }
@Override public List<String> getAllVariables() { final Set<String> variables = new HashSet<>(); variables.addAll(getAllLHSVariables()); variables.addAll(getAllRHSVariables()); return new ArrayList<>(variables); }
boolean isBindingUnique(String binding) { final BRLRuleModel brlRuleModel = new BRLRuleModel(model()); return !brlRuleModel.isVariableNameUsed(binding); }
List<String> getLHSBoundFacts() { final BRLRuleModel brlRuleModel = new BRLRuleModel(presenter.getModel()); return brlRuleModel.getLHSBoundFacts(); }
BRLRuleModel model = new BRLRuleModel(dt); FactPattern fp = new FactPattern("Driver"); fp.setBoundName("$brl1"); model.addLhsItem(fp); assertNotNull(model.getLHSBoundFacts()); assertEquals(2, model.getLHSBoundFacts().size()); assertTrue(model.getLHSBoundFacts().contains("$p1")); assertTrue(model.getLHSBoundFacts().contains("$brl1")); assertNotNull(model.getLHSBindingType("$p1")); assertEquals("Driver", model.getLHSBindingType("$p1")); assertNotNull(model.getLHSBindingType("$brl1")); assertEquals("Driver", model.getLHSBindingType("$brl1")); FactPattern r1 = model.getLHSBoundFact("$p1"); assertNotNull(r1); assertTrue(r1 instanceof Pattern52FactPatternAdaptor); raif1.getFactType()); FactPattern r2 = model.getLHSBoundFact("$brl1"); assertNotNull(r2); assertEquals("Driver",
public Map<String, List<String>> extract(final GuidedDecisionTable52 dtable, final List<IAction> fragment) { final BRLRuleModel rm = new BRLRuleModel(dtable); fragment.stream() .filter(iAction -> iAction instanceof ActionFieldList) .map(iAction -> (ActionFieldList) iAction) .forEach(iAction -> extract(rm, iAction)); return typeFields; }
@Test public void testRuleModelWithRHSBoundFactsUsageWithBRLActionColumn() { final GuidedDecisionTable52 dt = new GuidedDecisionTable52(); //Setup Decision Table columns final Pattern52 p1 = new Pattern52(); p1.setFactType("Driver"); p1.setBoundName("$d"); dt.getConditions().add(p1); final BRLActionColumn brl = new BRLActionColumn(); brl.setDefinition(Collections.singletonList(new ActionSetField() {{ setVariable("$d"); }})); dt.getActionCols().add(brl); final BRLRuleModel model = new BRLRuleModel(dt); //Checks assertTrue(model.isBoundFactUsed("$d")); assertFalse(model.isBoundFactUsed("$cheese")); }
BRLRuleModel model = new BRLRuleModel(dt); ActionInsertFact aif = new ActionInsertFact("Person"); aif.setBoundName("$aif"); DataType.TYPE_STRING)); aif.getFieldValues()[0].setNature(BaseSingleFieldConstraint.TYPE_LITERAL); model.addRhsItem(aif); assertNotNull(model.getRHSBoundFacts()); assertEquals(2, model.getRHSBoundFacts().size()); assertTrue(model.getRHSBoundFacts().contains("$ins")); assertTrue(model.getRHSBoundFacts().contains("$aif")); ActionInsertFact r1 = model.getRHSBoundFact("$ins"); assertNotNull(r1); assertTrue(r1 instanceof ActionInsertFactCol52ActionInsertFactAdaptor); raif1.getFieldValues()[0].getNature()); ActionInsertFact r2 = model.getRHSBoundFact("$aif"); assertNotNull(r2); assertTrue(r2 instanceof ActionInsertFact);
boolean isNewFactPattern() { final BRLRuleModel brlRuleModel = new BRLRuleModel(presenter.getModel()); final List<String> variables = brlRuleModel.getLHSPatternVariables(); return !variables .stream() .anyMatch(b -> b.equals(patternWrapper().getBoundName())); }
dt.getActionCols().add(brlAction); BRLRuleModel model = new BRLRuleModel(dt); assertNotNull(model.getAllVariables()); assertEquals(4, model.getAllVariables().size()); assertTrue(model.getAllVariables().contains("$p1")); assertTrue(model.getAllVariables().contains("$c1")); assertTrue(model.getAllVariables().contains("$ins")); assertTrue(model.getAllVariables().contains("$aif")); assertNotNull(model.getRHSBoundFacts()); assertEquals(2, model.getRHSBoundFacts().size()); assertTrue(model.getRHSBoundFacts().contains("$ins")); assertTrue(model.getRHSBoundFacts().contains("$aif")); ActionInsertFact r1 = model.getRHSBoundFact("$ins"); assertNotNull(r1); assertTrue(r1 instanceof ActionInsertFactCol52ActionInsertFactAdaptor); raif1.getFieldValues()[0].getNature()); ActionInsertFact r2 = model.getRHSBoundFact("$aif"); assertNotNull(r2); assertTrue(r2 instanceof ActionInsertFact);
@Test public void testOnlyDecisionTableColumns() { GuidedDecisionTable52 dt = new GuidedDecisionTable52(); Pattern52 p1 = new Pattern52(); p1.setFactType("Driver"); p1.setBoundName("$p1"); ConditionCol52 c1 = new ConditionCol52(); c1.setFactField("name"); c1.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL); c1.setBinding("$c1"); p1.getChildColumns().add(c1); dt.getConditions().add(p1); ActionInsertFactCol52 ins = new ActionInsertFactCol52(); ins.setBoundName("$ins"); ins.setFactField("rating"); ins.setFactType("Person"); ins.setType(DataType.TYPE_STRING); dt.getActionCols().add(ins); BRLRuleModel model = new BRLRuleModel(dt); assertNotNull(model.getAllVariables()); assertEquals(3, model.getAllVariables().size()); assertTrue(model.getAllVariables().contains("$p1")); assertTrue(model.getAllVariables().contains("$c1")); assertTrue(model.getAllVariables().contains("$ins")); }
dt.getActionCols().add(brlAction); BRLRuleModel model = new BRLRuleModel(dt); assertNotNull(model.getRHSBoundFacts()); assertEquals(3, model.getRHSBoundFacts().size()); assertTrue(model.getRHSBoundFacts().contains("$ins")); assertTrue(model.getRHSBoundFacts().contains("$ins2")); assertTrue(model.getRHSBoundFacts().contains("$aif")); ActionInsertFact r1 = model.getRHSBoundFact("$ins"); assertNotNull(r1); assertTrue(r1 instanceof ActionInsertFactCol52ActionInsertFactAdaptor); raif1.getFieldValues()[0].getNature()); ActionInsertFact r2 = model.getRHSBoundFact("$ins2"); assertNotNull(r2); assertTrue(r2 instanceof ActionInsertFactCol52ActionInsertLogicalFactAdaptor); raif2.getFieldValues()[0].getNature()); ActionInsertFact r3 = model.getRHSBoundFact("$aif"); assertNotNull(r3); assertTrue(r3 instanceof ActionInsertFact);
@Test public void testDecisionTableColumnsWithLHSBoundFieldsInConditionCol52() { GuidedDecisionTable52 dt = new GuidedDecisionTable52(); Pattern52 p1 = new Pattern52(); p1.setFactType("Driver"); p1.setBoundName("$p1"); ConditionCol52 c1 = new ConditionCol52(); c1.setFactField("name"); c1.setFieldType(DataType.TYPE_STRING); c1.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL); c1.setBinding("$c1"); p1.getChildColumns().add(c1); dt.getConditions().add(p1); BRLRuleModel model = new BRLRuleModel(dt); FieldConstraint fcr1 = model.getLHSBoundField("$c1"); assertNotNull(fcr1); assertTrue(fcr1 instanceof ConditionCol52FieldConstraintAdaptor); ConditionCol52FieldConstraintAdaptor fcr1sfc = (ConditionCol52FieldConstraintAdaptor) fcr1; assertEquals("Driver", fcr1sfc.getFactType()); assertEquals("name", fcr1sfc.getFieldName()); assertEquals(DataType.TYPE_STRING, fcr1sfc.getFieldType()); }
@Override public List<String> getLHSBoundFacts() { return rm.getLHSBoundFacts(); }
@Override public Set<PatternWrapper> getPatterns() { final Set<PatternWrapper> patterns = new HashSet<>(); final BRLRuleModel brlRuleModel = makeBRLRuleModel(); final List<String> variables = brlRuleModel.getLHSPatternVariables(); variables.forEach(var -> { final Pattern52 pattern = getPresenter().getModel().getConditionPattern(var); if (!(pattern instanceof FactPatternPattern52Adaptor)) { final String factType = brlRuleModel.getLHSBoundFact(var).getFactType(); final boolean isNegated = brlRuleModel.getLHSBoundFact(var).isNegated(); patterns.add(new PatternWrapper(factType, var, isNegated)); } }); return patterns; }
originalBindings.removeAll(editedBindings); for (String binding : originalBindings) { if (rm.isBoundFactUsed(binding)) { throw new VetoUpdatePatternInUseException(); final BoundFactsChangedEvent pce = new BoundFactsChangedEvent(rm.getLHSBoundFacts()); eventBus.fireEvent(pce);
@Override public List<String> getAllLHSVariables() { return getLHSVariables(true, true); }
private void assertLHSBindingTypeFor(final String expectedType, final String binding) { final String actualType = rm.getLHSBindingType(binding); assertEquals(expectedType, actualType); }
private void assertLHSBindings(final String... expectedBindings) { final List<String> actualBindings = rm.getAllLHSVariables(); assertNotNull(actualBindings); assertEquals(expectedBindings.length, actualBindings.size()); Arrays.asList(expectedBindings).stream().forEach(actualBindings::contains); }