private Optional<Pattern52> getConditionPattern(final String boundName) { final Pattern52 conditionPattern = getModel().getConditionPattern(boundName); return Optional.ofNullable(conditionPattern); }
private Optional<Pattern52> getConditionPattern(final String boundName) { final Pattern52 conditionPattern = getModel().getConditionPattern(boundName); return Optional.ofNullable(conditionPattern); }
private String getFactType(final ActionSetFieldCol52 asf) { final String binding = asf.getBoundName(); final Optional<Pattern52> pattern = Optional.ofNullable(model.getConditionPattern(binding)); if (pattern.isPresent()) { return pattern.get().getFactType(); } return model.getActionCols() .stream() .filter(c -> c instanceof ActionInsertFactCol52) .map(c -> (ActionInsertFactCol52) c) .filter(c -> c.getBoundName().equals(binding)) .findFirst() .map(ActionInsertFactCol52::getFactType) .get(); }
private String getFactType(final ActionSetFieldCol52 asf) { final String binding = asf.getBoundName(); final Optional<Pattern52> pattern = Optional.ofNullable(model.getConditionPattern(binding)); if (pattern.isPresent()) { return pattern.get().getFactType(); } return model.getActionCols() .stream() .filter(c -> c instanceof ActionInsertFactCol52) .map(c -> (ActionInsertFactCol52) c) .filter(c -> c.getBoundName().equals(binding)) .findFirst() .map(ActionInsertFactCol52::getFactType) .get(); }
public Pattern52 getConditionPattern(final String boundName) { for (CompositeColumn<?> cc : conditionPatterns) { if (cc instanceof Pattern52) { final Pattern52 p = (Pattern52) cc; if (p.isBound() && p.getBoundName().equals(boundName)) { return p; } } else if (cc instanceof BRLConditionColumn) { final BRLConditionColumn brlConditionColumn = (BRLConditionColumn) cc; for (IPattern p : brlConditionColumn.getDefinition()) { final Optional<Pattern52> factPattern = getConditionPattern(boundName, p); if (factPattern.isPresent()) { return factPattern.get(); } } } } return null; }
private Optional<Pattern52> getConditionPattern(final String boundName, final IPattern p) { if (p instanceof FactPattern) { final FactPattern fp = (FactPattern) p; if (fp.isBound() && fp.getBoundName().equals(boundName)) { return Optional.of(new FactPatternPattern52Adaptor(fp)); } } else if (p instanceof FromCompositeFactPattern) { final FromCompositeFactPattern fcfp = (FromCompositeFactPattern) p; final FactPattern fp = fcfp.getFactPattern(); final Optional<Pattern52> factPattern = getConditionPattern(boundName, fp); if (factPattern.isPresent()) { return factPattern; } } return Optional.empty(); }
protected void assertThereIsNoPatternFor(final String binding) { final Pattern52 p = dtable.getConditionPattern(binding); assertNull(p); }
private Pattern52 extractEditingPattern() { final String factType = patternWrapper().getFactType(); final String boundName = patternWrapper().getBoundName(); final Optional<Pattern52> pattern; if (!patternWrapper().isNegated()) { pattern = Optional.ofNullable(model().getConditionPattern(boundName)); } else { pattern = model() .getPatterns() .stream() .filter(Pattern52::isNegated) .filter(p -> p.getFactType().equals(factType)) .findFirst(); } return pattern.orElse(emptyPattern()); }
private Pattern52 extractEditingPattern() { final String factType = patternWrapper().getFactType(); final String boundName = patternWrapper().getBoundName(); final Optional<Pattern52> pattern; if (!patternWrapper().isNegated()) { pattern = Optional.ofNullable(model().getConditionPattern(boundName)); } else { pattern = model() .getPatterns() .stream() .filter(Pattern52::isNegated) .filter(p -> p.getFactType().equals(factType)) .findFirst(); } return pattern.orElse(emptyPattern()); }
@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; }
@Override public void initialise() { view.init(this); view.setValidator(getValidator()); patternToActionsMap.clear(); //Set-up validator for the pattern-to-action mapping voodoo getValidator().setPatternToActionSetFieldsMap(patternToActionsMap); //Set-up a factory for value editors view.setDTCellValueWidgetFactory(DTCellValueWidgetFactory.getInstance(model, oracle, false, allowEmptyValues())); //Existing ActionSetFieldCols (should be empty for a new Decision Table) for (ActionCol52 a : model.getActionCols()) { if (a instanceof ActionSetFieldCol52) { final ActionSetFieldCol52 asf = (ActionSetFieldCol52) a; final Pattern52 p = model.getConditionPattern(asf.getBoundName()); if (!patternToActionsMap.containsKey(p)) { patternToActionsMap.put(p, new ArrayList<ActionSetFieldCol52>()); } final List<ActionSetFieldCol52> actions = patternToActionsMap.get(p); actions.add(asf); } } view.setChosenFields(new ArrayList<ActionSetFieldCol52>()); content.setWidget(view); }
@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; }
@Test public void testSetFactFieldWhenFactPatternIsNotNew() { final ActionSetFactWrapper actionWrapper = spy(new ActionSetFactWrapper(plugin)); final Pattern52 patternMock = patternMock("factType"); final PatternWrapper patternWrapperMock = patternWrapperMock("factType", "boundName"); doReturn(false).when(plugin).isNewFactPattern(); doReturn(actionWrapper).when(plugin).newActionSetFactWrapper(); doReturn(patternWrapperMock).when(plugin).patternWrapper(); doReturn(patternMock).when(model).getConditionPattern(eq("boundName")); doReturn("type").when(oracle).getFieldType(eq("factType"), eq("selectedValue")); plugin.setFactField("selectedValue"); verify(actionWrapper).setFactField(eq("selectedValue")); verify(actionWrapper).setFactType(eq("factType")); verify(actionWrapper).setBoundName(eq("boundName")); verify(actionWrapper).setType(eq("type")); verify(plugin).fireChangeEvent(fieldPage); }
@Test public void testGetPatterns() throws Exception { final Pattern52 pattern = new Pattern52() {{ setFactType("FactType"); setBoundName("$fact"); }}; doReturn(Collections.singletonList(pattern)).when(model).getConditions(); doReturn(pattern).when(model).getConditionPattern(eq("$fact")); final Set<PatternWrapper> patterns = plugin.getPatterns(); assertEquals(1, patterns.size()); assertTrue(patterns.contains(new PatternWrapper("FactType", "$fact", false))); }
@Test public void testGetPatternsWithBRLCondition() throws Exception { final Pattern52 pattern = new Pattern52() {{ setFactType("FactType"); setBoundName("$fact"); }}; final BRLConditionColumn brlColumn = new BRLConditionColumn(); final FactPattern fp = new FactPattern("AnotherFact") {{ setBoundName("$another"); }}; brlColumn.setDefinition(Collections.singletonList(fp)); doReturn(Arrays.asList(pattern, brlColumn)).when(model).getConditions(); doReturn(pattern).when(model).getConditionPattern(eq("$fact")); doReturn(new FactPatternPattern52Adaptor(fp)).when(model).getConditionPattern(eq("$another")); final Set<PatternWrapper> patterns = plugin.getPatterns(); assertEquals(1, patterns.size()); assertTrue(patterns.contains(new PatternWrapper("FactType", "$fact", false))); }
@Test public void testMakeBRLRuleModel() { final String factType = "FactType"; final String boundName1 = "$fact1"; final String boundName2 = "$fact2"; final Pattern52 pattern = new Pattern52() {{ setFactType(factType); setBoundName(boundName1); }}; final FactPattern factPattern = new FactPattern() {{ setFactType(factType); setBoundName(boundName2); }}; final PatternWrapper patternWrapper = mock(PatternWrapper.class); doReturn(factPattern).when(patternWrapper).makeFactPattern(); doReturn(patternWrapper).when(plugin).patternWrapper(); doReturn(Collections.singletonList(pattern)).when(model).getConditions(); doReturn(pattern).when(model).getConditionPattern(boundName1); final BRLRuleModel brlRuleModel = plugin.makeBRLRuleModel(); final List<String> expectedVariables = Arrays.asList(boundName1, boundName2); final List<String> actualVariables = brlRuleModel.getAllVariables(); assertEquals(expectedVariables, actualVariables); }
protected void assertThereIsAPatternFor(final String factType, final String binding) { final Pattern52 result = dtable.getConditionPattern(binding); assertNotNull(result); assertEquals(factType, result.getFactType()); assertEquals(binding, result.getBoundName()); } }
@Test public void testAppend1() throws VetoException { //Single Pattern, single Condition final Pattern52 pattern = boundApplicantPattern("$a"); final ConditionCol52 condition = ageEqualsCondition(); modelSynchronizer.appendColumn(pattern, condition); assertEquals(3, model.getExpandedColumns().size()); assertEquals(1, model.getConditions().size()); assertEquals(1, model.getConditionPattern("$a").getChildColumns().size()); assertEquals(3, uiModel.getColumns().size()); assertTrue(uiModel.getColumns().get(2) instanceof IntegerUiColumn); }
@Test public void testDelete1() throws VetoException { //Single Pattern, single Condition final Pattern52 pattern = boundApplicantPattern("$a"); final ConditionCol52 condition = ageEqualsCondition(); modelSynchronizer.appendColumn(pattern, condition); assertEquals(3, model.getExpandedColumns().size()); assertEquals(1, model.getConditions().size()); assertEquals(3, uiModel.getColumns().size()); modelSynchronizer.deleteColumn(condition); assertEquals(2, model.getExpandedColumns().size()); assertEquals(0, model.getConditions().size()); assertNull(model.getConditionPattern("$a")); assertEquals(2, uiModel.getColumns().size()); }
@Test public void testAppend2() throws VetoException { //Single Pattern, multiple Conditions final Pattern52 pattern = boundApplicantPattern("$a"); final ConditionCol52 condition1 = ageEqualsCondition(); modelSynchronizer.appendColumn(pattern, condition1); assertEquals(3, model.getExpandedColumns().size()); assertEquals(1, model.getConditions().size()); assertEquals(3, uiModel.getColumns().size()); assertTrue(uiModel.getColumns().get(2) instanceof IntegerUiColumn); final ConditionCol52 condition2 = nameEqualsCondition(); modelSynchronizer.appendColumn(pattern, condition2); assertEquals(4, model.getExpandedColumns().size()); assertEquals(1, model.getConditions().size()); assertEquals(2, model.getConditionPattern("$a").getChildColumns().size()); assertEquals(4, uiModel.getColumns().size()); assertTrue(uiModel.getColumns().get(2) instanceof IntegerUiColumn); assertTrue(uiModel.getColumns().get(3) instanceof StringUiColumn); }