BRLConditionColumn clone(final DTColumnConfig52 column) { final BRLConditionColumn brlConditionColumn = (BRLConditionColumn) column; final BRLConditionColumn clone; if (tableFormat() == LIMITED_ENTRY) { clone = new LimitedEntryBRLConditionColumn(); } else { clone = new BRLConditionColumn(); clone.setChildColumns(cloneVariables(brlConditionColumn.getChildColumns())); } clone.setHeader(column.getHeader()); clone.setHideColumn(column.isHideColumn()); clone.setDefinition(cloneDefinition(brlConditionColumn.getDefinition())); clone.setOperator(brlConditionColumn.getOperator()); return clone; }
@Test public void getSafeHtml_BrlCondition() { // Definition diffs are currently not supported, maybe #soon? BRLConditionColumn originalColumn = new BRLConditionColumn(); // originalColumn.setDefinition(Arrays.asList(new FactPattern("FactType1"))); originalColumn.setHeader("condition1"); originalColumn.setHideColumn(false); BRLConditionColumn newColumn = new BRLConditionColumn(); // originalColumn.setDefinition(Arrays.asList(new FactPattern("FactType2"), new FactPattern("FactType3"))); newColumn.setHeader("condition2"); newColumn.setHideColumn(true); List<BaseColumnFieldDiff> diffs = originalColumn.diff(newColumn); SafeHtml result = helper.getSafeHtml(new UpdateColumnAuditLogEntry("mock user", originalColumn, newColumn, diffs)); assertEquals(getHeaderRepre(newColumn.getHeader()) + getDiffRepre(diffs), result.asString()); }
@Override public List<BaseColumnFieldDiff> diff( BaseColumn otherColumn ) { if ( otherColumn == null ) { return null; } List<BaseColumnFieldDiff> result = super.diff( otherColumn ); BRLConditionColumn other = (BRLConditionColumn) otherColumn; // Field: definition. if ( !isEqualOrNull( this.getDefinition(), other.getDefinition() ) ) { result.add( new BaseColumnFieldDiffImpl( FIELD_DEFINITION, this.getDefinition(), other.getDefinition() ) ); } // Field: childColumns. if ( !isEqualOrNull( this.getChildColumns(), other.getChildColumns() ) ) { result.addAll( getColumnDiffs( other.getChildColumns() ) ); } return result; }
private BRLConditionColumn makeBRLConditionColumn(final String header, final boolean hideColumn, final List<IPattern> definition, final List<BRLConditionVariableColumn> childColumns) { final BRLConditionColumn column = new BRLConditionColumn(); column.setHeader(header); column.setHideColumn(hideColumn); column.setDefinition(definition); column.setChildColumns(childColumns); return column; }
conditionCol0.getHeader()); assertEquals(1, conditionCol0.getChildColumns().size()); List<IPattern> conditionCol0definition = conditionCol0.getDefinition(); assertEquals(1, conditionCol0definition.size()); BRLConditionVariableColumn conditionCol0param0 = conditionCol0.getChildColumns().get(0); assertEquals("param1", conditionCol0param0.getVarName());
@Test public void checkBRLFragmentConditionCannotBeUpdatedWhenBindingIsUsedInAction() throws VetoException { final BRLConditionColumn column = new BRLConditionColumn(); column.setDefinition(Collections.singletonList(new FactPattern("Applicant") {{ setBoundName("$a"); }})); "Applicant", "age"); column.getChildColumns().add(columnV0); column.setHeader("col1"); columnV0.setHeader("col1v0"); final BRLConditionColumn editedColumn = new BRLConditionColumn(); editedColumn.setDefinition(Collections.singletonList(new FactPattern("Applicant") {{ setBoundName("$a2"); }})); "Applicant", "age"); editedColumn.getChildColumns().add(editedColumnV0); editedColumn.setHeader("col1"); editedColumnV0.setHeader("col1v0");
@Test public void testUpdate2() throws VetoException { final BRLConditionColumn column = spy(new BRLConditionColumn()); final BRLConditionVariableColumn columnV0 = new BRLConditionVariableColumn("$age", DataType.TYPE_NUMERIC_INTEGER, "Applicant", "name"); column.getChildColumns().add(columnV0); column.getChildColumns().add(columnV1); column.setHeader("col1"); columnV0.setHeader("col1v0"); columnV1.setHeader("col1v1"); assertTrue(uiModel.getColumns().get(3) instanceof StringUiColumn); final BRLConditionColumn edited = new BRLConditionColumn(); final BRLConditionVariableColumn editedColumnV0 = new BRLConditionVariableColumn("$name", DataType.TYPE_STRING, "Applicant", "name"); edited.getChildColumns().add(editedColumnV0); edited.setHideColumn(true); edited.setHeader("updated"); editedColumnV0.setHeader("updated"); verify(column).diff(edited);
@Test public void checkBRLFragmentConditionCanBeDeletedWithNoAction() throws VetoException { final BRLConditionColumn column = new BRLConditionColumn(); final BRLConditionVariableColumn columnV0 = new BRLConditionVariableColumn("$age", DataType.TYPE_NUMERIC_INTEGER, "Applicant", "age"); final BRLConditionVariableColumn columnV1 = new BRLConditionVariableColumn("$name", DataType.TYPE_STRING, "Applicant", "name"); column.getChildColumns().add(columnV0); column.getChildColumns().add(columnV1); column.setHeader("col1"); columnV0.setHeader("col1v0"); columnV1.setHeader("col1v1"); modelSynchronizer.appendColumn(column); try { modelSynchronizer.deleteColumn(column); } catch (VetoException veto) { fail("Deletion should have been permitted."); } assertEquals(2, model.getExpandedColumns().size()); assertTrue(model.getExpandedColumns().get(0) instanceof RowNumberCol52); assertTrue(model.getExpandedColumns().get(1) instanceof DescriptionCol52); }
BRLConditionColumn brl1 = new BRLConditionColumn(); brl1.setDefinition(brl1Definition); BRLConditionVariableColumn brl1Variable2 = new BRLConditionVariableColumn("age", DataType.TYPE_NUMERIC_INTEGER); brl1.getChildColumns().add(brl1Variable1); brl1.getChildColumns().add(brl1Variable2);
private Set<String> getPatternBindings(final BRLConditionColumn column) { final Set<String> bindings = new HashSet<>(); final List<IPattern> definition = column.getDefinition(); final RuleModel rm = new RuleModel(); rm.lhs = definition.toArray(new IPattern[definition.size()]); bindings.addAll(rm.getLHSVariables(true, true)); return bindings; } }
public static GuidedDecisionTable52 makeTableWithBRLFragmentConditionColWithPredicate(final String packageName, final Collection<Import> imports, final String tableName) { final GuidedDecisionTable52 dt = new GuidedDecisionTable52(); dt.setPackageName(packageName); dt.getImports().getImports().addAll(imports); dt.setTableName(tableName); final BRLConditionColumn brl = new BRLConditionColumn(); final FactPattern fp1 = new FactPattern(); fp1.setFactType("Applicant"); final SingleFieldConstraint sfc1 = new SingleFieldConstraint(); sfc1.setConstraintValueType(BaseSingleFieldConstraint.TYPE_PREDICATE); sfc1.setValue("age = 45"); fp1.addConstraint(sfc1); brl.getDefinition().add(fp1); brl.getChildColumns().add(new BRLConditionVariableColumn("f1", DataType.TYPE_BOOLEAN)); dt.getConditions().add(brl); dt.setData(DataUtilities.makeDataLists(new Object[][]{ new Object[]{"1", "desc", true} })); return dt; }
@Test public void testCloneWhenColumnIsABRLConditionColumn() throws Exception { doReturn(GuidedDecisionTable52.TableFormat.EXTENDED_ENTRY).when(model).getTableFormat(); final List<IPattern> definition = new ArrayList<>(); final Boolean hideColumn = false; final List<BRLConditionVariableColumn> childColumns = new ArrayList<BRLConditionVariableColumn>() {{ add(mock(BRLConditionVariableColumn.class)); }}; final BRLConditionColumn column = makeBRLConditionColumn("header", hideColumn, definition, childColumns); final BRLConditionColumn clone = plugin.clone(column); assertEquals(column.getHeader(), clone.getHeader()); assertEquals(column.isHideColumn(), clone.isHideColumn()); assertEquals(column.getDefinition(), clone.getDefinition()); assertNotSame(column, clone); assertFalse(clone.getChildColumns().isEmpty()); }
public BRLConditionColumn getBRLColumn(BRLConditionVariableColumn col) { for (CompositeColumn<? extends BaseColumn> cc : conditionPatterns) { if (cc instanceof BRLConditionColumn) { final BRLConditionColumn brl = (BRLConditionColumn) cc; if (brl.getChildColumns().contains(col)) { return brl; } } } throw new IllegalStateException("col is not a child of any of the defined BRLColumns."); }
protected BRLConditionColumn whenThereIsABRLFactPattern(final String factType, final String binding) { final FactPattern fp = new FactPattern(factType); fp.setBoundName(binding); final BRLConditionColumn brl = new BRLConditionColumn(); brl.getDefinition().add(fp); dtable.getConditions().add(brl); return brl; }
@Test public void cloneBRLConditionColumn() { final BRLConditionColumn original = new BRLConditionColumn(); original.setHeader("header"); original.setOperator("=="); final BRLConditionColumn clone = plugin.clone(original); assertEquals("header", clone.getHeader()); assertEquals("==", clone.getOperator()); }
public static BRLConditionColumn createBRLConditionColumn() { final BRLConditionColumn brlConditionColumn = new BRLConditionColumn(); final ArrayList<IPattern> definition = new ArrayList<>(); definition.add(mock(IPattern.class)); brlConditionColumn.setDefinition(definition); final ArrayList<BRLConditionVariableColumn> childColumns = new ArrayList<>(); final BRLConditionVariableColumn brlConditionVariableColumn = new BRLConditionVariableColumn(); brlConditionVariableColumn.getFactType(); childColumns.add(brlConditionVariableColumn); brlConditionColumn.setChildColumns(childColumns); return brlConditionColumn; }
@Test public void testDiffAll() { List<IPattern> definition1 = Arrays.asList(new FactPattern("Mock1")); column1.setDefinition(definition1); List<BRLConditionVariableColumn> childColumns1 = Arrays.asList(new BRLConditionVariableColumn("var1", "FieldType1")); column1.setChildColumns(childColumns1); column1.setHeader("header1"); column1.setHideColumn(false); column2.setDefinition(definition2); List<BRLConditionVariableColumn> childColumns2 = Arrays.asList(new BRLConditionVariableColumn("var2", "FieldType2")); column2.setChildColumns(childColumns2); column2.setHeader("header2"); column2.setHideColumn(true); List<BaseColumnFieldDiff> diff = column1.diff(column2); assertNotNull(diff); assertEquals(FIELD_HIDE_COLUMN, diff.get(0).getFieldName());
@Test public void testInsertBRLConditionColumn() throws Exception { BRLConditionColumn brlConditionOne = new BRLConditionColumn(); BRLConditionVariableColumn a = new BRLConditionVariableColumn(); BRLConditionVariableColumn b = new BRLConditionVariableColumn(); BRLConditionColumn brlConditionTwo = new BRLConditionColumn(); BRLConditionVariableColumn c = new BRLConditionVariableColumn(); BRLConditionVariableColumn d = new BRLConditionVariableColumn(); brlConditionOne.setChildColumns(Arrays.asList(a, b)); brlConditionTwo.setChildColumns(Arrays.asList(c, d)); model.getConditions().addAll(Arrays.asList(brlConditionOne, brlConditionTwo)); decisionTableAnalyzer.insertColumn(brlConditionTwo); verify(updateManager).newColumn(model, 4); }
final List<BaseColumnFieldDiff> diffs = originalColumn.diff(editedColumn); for (BRLConditionVariableColumn variable : originalColumn.getChildColumns()) { int iColumnIndex = model.getExpandedColumns().indexOf(variable); final List<DTCellValue52> originalColumnData = new ArrayList<>(); for (BRLConditionVariableColumn childModelColumn : editedColumn.getChildColumns()) { final String key = makeUpdateBRLConditionColumnKey(childModelColumn); if (originalColumnsData.containsKey(key)) {
private void setCompositeColumnHeader(final BRLConditionColumn column) { final List<BRLConditionVariableColumn> columnVariableColumns = column.getChildColumns(); final StringBuilder sb = new StringBuilder(); final List<String> variableColumnHeaders = new ArrayList<>(); sb.append("Converted from ["); for (int i = 0; i < columnVariableColumns.size(); i++) { final BRLConditionVariableColumn variableColumn = columnVariableColumns.get(i); final String header = variableColumn.getHeader(); variableColumnHeaders.add(header); sb.append("'").append(header).append("'"); sb.append(i < columnVariableColumns.size() - 1 ? ", " : ""); } sb.append("]"); column.setHeader(sb.toString()); for (int i = 0; i < columnVariableColumns.size(); i++) { final BRLConditionVariableColumn variableColumn = columnVariableColumns.get(i); variableColumn.setHeader(variableColumnHeaders.get(i)); } }