use of org.drools.workbench.models.guided.dtable.shared.model.BRLActionColumn in project drools-wb by kiegroup.
the class BRLActionColumnSynchronizerTest method testUpdate1.
@Test
public void testUpdate1() throws VetoException {
// Single Column, single variable
final BRLActionColumn column = spy(new BRLActionColumn());
final BRLActionVariableColumn columnV0 = new BRLActionVariableColumn("$age", DataType.TYPE_NUMERIC_INTEGER, "Applicant", "age");
column.getChildColumns().add(columnV0);
column.setHeader("col1");
columnV0.setHeader("col1v0");
modelSynchronizer.appendColumn(column);
assertEquals(4, model.getExpandedColumns().size());
assertEquals(1, model.getActionCols().size());
assertEquals(4, uiModel.getColumns().size());
assertTrue(uiModel.getColumns().get(3) instanceof IntegerUiColumn);
final BRLActionColumn edited = new BRLActionColumn();
final BRLActionVariableColumn editedColumnV0 = new BRLActionVariableColumn("$name", DataType.TYPE_STRING, "Applicant", "name");
edited.getChildColumns().add(editedColumnV0);
edited.setHideColumn(true);
edited.setHeader("updated");
editedColumnV0.setHeader("updated");
List<BaseColumnFieldDiff> diffs = modelSynchronizer.updateColumn(column, edited);
assertEquals(5, // header, hide, field name, field type, binding
diffs.size());
verify(column).diff(edited);
assertEquals(4, model.getExpandedColumns().size());
assertEquals(1, model.getActionCols().size());
assertEquals(4, uiModel.getColumns().size());
assertTrue(uiModel.getColumns().get(3) instanceof StringUiColumn);
assertEquals("updated", uiModel.getColumns().get(3).getHeaderMetaData().get(0).getTitle());
assertEquals("$name", uiModel.getColumns().get(3).getHeaderMetaData().get(1).getTitle());
assertEquals(false, uiModel.getColumns().get(3).isVisible());
}
use of org.drools.workbench.models.guided.dtable.shared.model.BRLActionColumn in project drools-wb by kiegroup.
the class BRLActionColumnSynchronizerTest method testUpdate2.
@Test
public void testUpdate2() throws VetoException {
// Single Column, multiple variables
final BRLActionColumn column = spy(new BRLActionColumn());
final BRLActionVariableColumn columnV0 = new BRLActionVariableColumn("$age", DataType.TYPE_NUMERIC_INTEGER, "Applicant", "age");
final BRLActionVariableColumn columnV1 = new BRLActionVariableColumn("$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);
assertEquals(5, model.getExpandedColumns().size());
assertEquals(1, model.getActionCols().size());
assertEquals(5, uiModel.getColumns().size());
assertTrue(uiModel.getColumns().get(3) instanceof IntegerUiColumn);
assertTrue(uiModel.getColumns().get(4) instanceof StringUiColumn);
final BRLActionColumn edited = new BRLActionColumn();
final BRLActionVariableColumn editedColumnV0 = new BRLActionVariableColumn("$name", DataType.TYPE_STRING, "Applicant", "name");
edited.getChildColumns().add(editedColumnV0);
edited.setHideColumn(true);
edited.setHeader("updated");
editedColumnV0.setHeader("updated");
List<BaseColumnFieldDiff> diffs = modelSynchronizer.updateColumn(column, edited);
assertEquals(6, // header, hide, field name, field type, binding, removed column
diffs.size());
verify(column).diff(edited);
assertEquals(4, model.getExpandedColumns().size());
assertEquals(1, model.getActionCols().size());
assertEquals(4, uiModel.getColumns().size());
assertTrue(uiModel.getColumns().get(3) instanceof StringUiColumn);
assertEquals("updated", uiModel.getColumns().get(3).getHeaderMetaData().get(0).getTitle());
assertEquals("$name", uiModel.getColumns().get(3).getHeaderMetaData().get(1).getTitle());
assertEquals(false, uiModel.getColumns().get(3).isVisible());
}
use of org.drools.workbench.models.guided.dtable.shared.model.BRLActionColumn in project drools-wb by kiegroup.
the class BRLConditionColumnSynchronizerTest method checkBRLFragmentConditionCannotBeUpdatedWhenFieldBindingIsUsedInAction.
@Test
public void checkBRLFragmentConditionCannotBeUpdatedWhenFieldBindingIsUsedInAction() throws VetoException {
final BRLConditionColumn column = new BRLConditionColumn();
column.setDefinition(Collections.singletonList(new FactPattern("Applicant") {
{
setBoundName("$a");
addConstraint(new SingleFieldConstraint("age") {
{
setBoundName("$age");
}
});
}
}));
final BRLConditionVariableColumn columnV0 = new BRLConditionVariableColumn("$age", DataType.TYPE_NUMERIC_INTEGER, "Applicant", "age");
column.getChildColumns().add(columnV0);
column.setHeader("col1");
columnV0.setHeader("col1v0");
modelSynchronizer.appendColumn(column);
final BRLActionColumn action = new BRLActionColumn();
action.setDefinition(Collections.singletonList(new ActionCallMethod() {
{
setVariable("$age");
setMethodName("toString()");
}
}));
final BRLActionVariableColumn columnV1 = new BRLActionVariableColumn("$age", DataType.TYPE_NUMERIC_INTEGER, "Applicant", "age");
action.getChildColumns().add(columnV1);
action.setHeader("col2");
columnV1.setHeader("col2v0");
modelSynchronizer.appendColumn(action);
try {
final BRLConditionColumn editedColumn = new BRLConditionColumn();
editedColumn.setDefinition(Collections.singletonList(new FactPattern("Applicant") {
{
setBoundName("$a");
addConstraint(new SingleFieldConstraint("age") {
{
setBoundName("$age2");
}
});
}
}));
final BRLConditionVariableColumn editedColumnV0 = new BRLConditionVariableColumn("$age", DataType.TYPE_NUMERIC_INTEGER, "Applicant", "age");
editedColumn.getChildColumns().add(editedColumnV0);
editedColumn.setHeader("col1");
editedColumnV0.setHeader("col1v0");
modelSynchronizer.updateColumn(column, editedColumn);
fail("Deletion of the column should have been vetoed.");
} catch (VetoUpdatePatternInUseException veto) {
// This is expected
} catch (VetoException veto) {
fail("VetoUpdatePatternInUseException was expected.");
}
assertEquals(5, model.getExpandedColumns().size());
assertTrue(model.getExpandedColumns().get(0) instanceof RowNumberCol52);
assertTrue(model.getExpandedColumns().get(1) instanceof RuleNameColumn);
assertTrue(model.getExpandedColumns().get(2) instanceof DescriptionCol52);
assertEquals(columnV0, model.getExpandedColumns().get(3));
assertEquals(action.getChildColumns().get(0), model.getExpandedColumns().get(4));
}
use of org.drools.workbench.models.guided.dtable.shared.model.BRLActionColumn in project drools by kiegroup.
the class GuidedDTDRLPersistenceTest method testRHSWithBRLColumn_ParseToDRL_MultipleActions.
@Test
public // This test checks a Decision Table involving BRL columns is correctly converted into DRL
void testRHSWithBRLColumn_ParseToDRL_MultipleActions() {
GuidedDecisionTable52 dtable = new GuidedDecisionTable52();
// All three rows are entered, some columns with optional data
String[][] data = new String[][] { new String[] { "1", "desc", "Pupa", "50" }, new String[] { "2", "desc", "", "50" }, new String[] { "3", "desc", "Pupa", "" } };
// Simple (mandatory) columns
dtable.setRowNumberCol(new RowNumberCol52());
dtable.setDescriptionCol(new DescriptionCol52());
// BRL Column
BRLActionColumn brl1 = new BRLActionColumn();
// BRL Column definition
List<IAction> brl1Definition = new ArrayList<IAction>();
ActionInsertFact brl1DefinitionAction1 = new ActionInsertFact("Baddie");
ActionFieldValue brl1DefinitionAction1FieldValue1 = new ActionFieldValue("name", "Gargamel", DataType.TYPE_STRING);
brl1DefinitionAction1FieldValue1.setNature(BaseSingleFieldConstraint.TYPE_LITERAL);
brl1DefinitionAction1.addFieldValue(brl1DefinitionAction1FieldValue1);
brl1Definition.add(brl1DefinitionAction1);
ActionInsertFact brl1DefinitionAction2 = new ActionInsertFact("Smurf");
ActionFieldValue brl1DefinitionAction2FieldValue1 = new ActionFieldValue("name", "$name", DataType.TYPE_STRING);
brl1DefinitionAction2FieldValue1.setNature(BaseSingleFieldConstraint.TYPE_TEMPLATE);
brl1DefinitionAction2.addFieldValue(brl1DefinitionAction2FieldValue1);
ActionFieldValue brl1DefinitionAction2FieldValue2 = new ActionFieldValue("age", "$age", DataType.TYPE_NUMERIC_INTEGER);
brl1DefinitionAction2FieldValue2.setNature(BaseSingleFieldConstraint.TYPE_TEMPLATE);
brl1DefinitionAction2.addFieldValue(brl1DefinitionAction2FieldValue2);
brl1Definition.add(brl1DefinitionAction2);
brl1.setDefinition(brl1Definition);
// Setup BRL column bindings
BRLActionVariableColumn brl1Variable1 = new BRLActionVariableColumn("$name", DataType.TYPE_STRING, "Person", "name");
brl1.getChildColumns().add(brl1Variable1);
BRLActionVariableColumn brl1Variable2 = new BRLActionVariableColumn("$age", DataType.TYPE_NUMERIC_INTEGER, "Person", "age");
brl1.getChildColumns().add(brl1Variable2);
dtable.getActionCols().add(brl1);
dtable.setData(DataUtilities.makeDataLists(data));
// Now to test conversion
int ruleStartIndex;
int action1StartIndex;
int action2StartIndex;
GuidedDTDRLPersistence p = GuidedDTDRLPersistence.getInstance();
String drl = p.marshal(dtable);
// Row 0
ruleStartIndex = drl.indexOf("//from row number: 1");
assertFalse(ruleStartIndex == -1);
action1StartIndex = drl.indexOf("Baddie fact0 = new Baddie();", ruleStartIndex);
assertFalse(action1StartIndex == -1);
action1StartIndex = drl.indexOf("fact0.setName( \"Gargamel\" );", action1StartIndex);
assertFalse(action1StartIndex == -1);
action1StartIndex = drl.indexOf("insert( fact0 );", action1StartIndex);
assertFalse(action1StartIndex == -1);
action2StartIndex = drl.indexOf("Smurf fact1 = new Smurf();", ruleStartIndex);
assertFalse(action2StartIndex == -1);
action2StartIndex = drl.indexOf("fact1.setName( \"Pupa\" );", action2StartIndex);
assertFalse(action2StartIndex == -1);
action2StartIndex = drl.indexOf("fact1.setAge( 50 );", action2StartIndex);
assertFalse(action2StartIndex == -1);
action2StartIndex = drl.indexOf("insert( fact1 );", action2StartIndex);
assertFalse(action2StartIndex == -1);
// Row 1
ruleStartIndex = drl.indexOf("//from row number: 2");
int ruleEndIndex = drl.indexOf("//from row number: 3");
assertFalse(ruleStartIndex == -1);
action1StartIndex = drl.indexOf("Baddie fact0 = new Baddie();", ruleStartIndex);
assertFalse(action1StartIndex == -1);
action1StartIndex = drl.indexOf("fact0.setName( \"Gargamel\" );", action1StartIndex);
assertFalse(action1StartIndex == -1);
action1StartIndex = drl.indexOf("insert( fact0 );", action1StartIndex);
assertFalse(action1StartIndex == -1);
action2StartIndex = drl.indexOf("Smurf fact1 = new Smurf();", ruleStartIndex);
assertFalse(action2StartIndex == -1);
action2StartIndex = drl.indexOf("fact1.setName( \"Pupa\" );", ruleStartIndex);
assertFalse(action2StartIndex < ruleEndIndex);
action2StartIndex = drl.indexOf("fact1.setAge( 50 );", ruleStartIndex);
assertFalse(action2StartIndex == -1);
action2StartIndex = drl.indexOf("insert( fact1 );", ruleStartIndex);
assertFalse(action2StartIndex == -1);
// Row 2
ruleStartIndex = drl.indexOf("//from row number: 3");
assertFalse(ruleStartIndex == -1);
action1StartIndex = drl.indexOf("Baddie fact0 = new Baddie();", ruleStartIndex);
assertFalse(action1StartIndex == -1);
action1StartIndex = drl.indexOf("fact0.setName( \"Gargamel\" );", action1StartIndex);
assertFalse(action1StartIndex == -1);
action1StartIndex = drl.indexOf("insert( fact0 );", action1StartIndex);
assertFalse(action1StartIndex == -1);
action2StartIndex = drl.indexOf("Smurf fact1 = new Smurf();", ruleStartIndex);
assertFalse(action2StartIndex == -1);
action2StartIndex = drl.indexOf("fact1.setName( \"Pupa\" );", ruleStartIndex);
assertFalse(action2StartIndex == -1);
action2StartIndex = drl.indexOf("fact1.setAge( 50 );", ruleStartIndex);
assertTrue(action2StartIndex == -1);
action2StartIndex = drl.indexOf("insert( fact1 );", ruleStartIndex);
assertFalse(action2StartIndex == -1);
}
use of org.drools.workbench.models.guided.dtable.shared.model.BRLActionColumn in project drools by kiegroup.
the class GuidedDTDRLPersistenceTest method testRHSWithBRLColumn_ParseToDRL_NoVariables.
@Test
public // This test checks a Decision Table involving BRL columns is correctly converted into DRL
void testRHSWithBRLColumn_ParseToDRL_NoVariables() {
GuidedDecisionTable52 dtable = new GuidedDecisionTable52();
Object[][] data = new Object[][] { new Object[] { "1", "desc", Boolean.TRUE }, new Object[] { "2", "desc", Boolean.FALSE } };
// Simple (mandatory) columns
dtable.setRowNumberCol(new RowNumberCol52());
dtable.setDescriptionCol(new DescriptionCol52());
// BRL Column
BRLActionColumn brl1 = new BRLActionColumn();
// BRL Column definition
List<IAction> brl1Definition = new ArrayList<IAction>();
ActionInsertFact brl1DefinitionAction1 = new ActionInsertFact("Baddie");
ActionFieldValue brl1DefinitionAction1FieldValue1 = new ActionFieldValue("name", "Gargamel", DataType.TYPE_STRING);
brl1DefinitionAction1FieldValue1.setNature(BaseSingleFieldConstraint.TYPE_LITERAL);
brl1DefinitionAction1.addFieldValue(brl1DefinitionAction1FieldValue1);
brl1Definition.add(brl1DefinitionAction1);
brl1.setDefinition(brl1Definition);
// Setup BRL column bindings
BRLActionVariableColumn brl1Variable1 = new BRLActionVariableColumn("", DataType.TYPE_BOOLEAN);
brl1.getChildColumns().add(brl1Variable1);
dtable.getActionCols().add(brl1);
dtable.setData(DataUtilities.makeDataLists(data));
// Now to test conversion
int ruleStartIndex;
int action1StartIndex;
GuidedDTDRLPersistence p = GuidedDTDRLPersistence.getInstance();
String drl = p.marshal(dtable);
// Row 0
ruleStartIndex = drl.indexOf("//from row number: 1");
assertFalse(ruleStartIndex == -1);
action1StartIndex = drl.indexOf("Baddie fact0 = new Baddie();", ruleStartIndex);
assertFalse(action1StartIndex == -1);
action1StartIndex = drl.indexOf("fact0.setName( \"Gargamel\" );", action1StartIndex);
assertFalse(action1StartIndex == -1);
action1StartIndex = drl.indexOf("insert( fact0 );", action1StartIndex);
assertFalse(action1StartIndex == -1);
// Row 1
ruleStartIndex = drl.indexOf("//from row number: 2");
assertFalse(ruleStartIndex == -1);
action1StartIndex = drl.indexOf("Baddie fact0 = new Baddie();", ruleStartIndex);
assertTrue(action1StartIndex == -1);
action1StartIndex = drl.indexOf("fact0.setName( \"Gargamel\" );", ruleStartIndex);
assertTrue(action1StartIndex == -1);
action1StartIndex = drl.indexOf("insert( fact0 );", ruleStartIndex);
assertTrue(action1StartIndex == -1);
}
Aggregations