/*
* Copyright 2012 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.drools.workbench.screens.guided.dtable.client.widget.table.model.synchronizers.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.drools.workbench.models.datamodel.oracle.DataType;
import org.drools.workbench.models.datamodel.oracle.FieldAccessorsAndMutators;
import org.drools.workbench.models.datamodel.oracle.ModelField;
import org.drools.workbench.models.datamodel.rule.BaseSingleFieldConstraint;
import org.drools.workbench.models.guided.dtable.shared.model.BaseColumnFieldDiff;
import org.drools.workbench.models.guided.dtable.shared.model.ConditionCol52;
import org.drools.workbench.models.guided.dtable.shared.model.Pattern52;
import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.BooleanUiColumn;
import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.IntegerUiColumn;
import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.StringUiColumn;
import org.drools.workbench.screens.guided.dtable.client.widget.table.model.GuidedDecisionTableUiCell;
import org.drools.workbench.screens.guided.dtable.client.widget.table.model.synchronizers.ModelSynchronizer;
import org.junit.Test;
import org.kie.workbench.common.widgets.client.datamodel.AsyncPackageDataModelOracle;
import org.uberfire.ext.wires.core.grids.client.model.GridColumn;
import org.uberfire.ext.wires.core.grids.client.model.impl.BaseGridCellValue;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
public class ConditionColumnSynchronizerTest extends BaseSynchronizerTest {
@Override
protected AsyncPackageDataModelOracle getOracle() {
final AsyncPackageDataModelOracle oracle = super.getOracle();
oracle.addModelFields(new HashMap<String, ModelField[]>() {
{
put("Applicant",
new ModelField[]{
new ModelField("this",
"Applicant",
ModelField.FIELD_CLASS_TYPE.REGULAR_CLASS,
ModelField.FIELD_ORIGIN.SELF,
FieldAccessorsAndMutators.ACCESSOR,
"Applicant"),
new ModelField("age",
Integer.class.getName(),
ModelField.FIELD_CLASS_TYPE.REGULAR_CLASS,
ModelField.FIELD_ORIGIN.SELF,
FieldAccessorsAndMutators.ACCESSOR,
DataType.TYPE_NUMERIC_INTEGER),
new ModelField("name",
String.class.getName(),
ModelField.FIELD_CLASS_TYPE.REGULAR_CLASS,
ModelField.FIELD_ORIGIN.SELF,
FieldAccessorsAndMutators.ACCESSOR,
DataType.TYPE_STRING),
new ModelField("approved",
Boolean.class.getName(),
ModelField.FIELD_CLASS_TYPE.REGULAR_CLASS,
ModelField.FIELD_ORIGIN.SELF,
FieldAccessorsAndMutators.ACCESSOR,
DataType.TYPE_BOOLEAN)});
put("Address",
new ModelField[]{
new ModelField("this",
"Address",
ModelField.FIELD_CLASS_TYPE.REGULAR_CLASS,
ModelField.FIELD_ORIGIN.SELF,
FieldAccessorsAndMutators.ACCESSOR,
"Address"),
new ModelField("state",
String.class.getName(),
ModelField.FIELD_CLASS_TYPE.REGULAR_CLASS,
ModelField.FIELD_ORIGIN.SELF,
FieldAccessorsAndMutators.ACCESSOR,
DataType.TYPE_STRING),
new ModelField("country",
String.class.getName(),
ModelField.FIELD_CLASS_TYPE.REGULAR_CLASS,
ModelField.FIELD_ORIGIN.SELF,
FieldAccessorsAndMutators.ACCESSOR,
DataType.TYPE_STRING)});
}
}
);
return oracle;
}
private ConditionCol52 ageEqualsCondition() {
ConditionCol52 condition = new ConditionCol52();
condition.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL);
condition.setHeader("col1");
condition.setFactField("age");
condition.setOperator("==");
return condition;
}
private ConditionCol52 nameEqualsCondition() {
ConditionCol52 condition = new ConditionCol52();
condition.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL);
condition.setHeader("col2");
condition.setFactField("name");
condition.setOperator("==");
return condition;
}
private Pattern52 boundApplicantPattern(String boundName) {
Pattern52 pattern = new Pattern52();
pattern.setBoundName(boundName);
pattern.setFactType("Applicant");
return pattern;
}
private Pattern52 boundAddressPattern(String boundName) {
Pattern52 pattern = new Pattern52();
pattern.setBoundName(boundName);
pattern.setFactType("Address");
return pattern;
}
@Test
public void testOtherwise() throws ModelSynchronizer.MoveColumnVetoException {
//Single Pattern, single Condition
final Pattern52 pattern = boundApplicantPattern("$a");
final ConditionCol52 condition = nameEqualsCondition();
modelSynchronizer.appendColumn(pattern,
condition);
modelSynchronizer.appendRow();
uiModel.setCell(0,
2,
new GuidedDecisionTableUiCell("John"));
modelSynchronizer.appendRow();
uiModel.setCell(1,
2,
new GuidedDecisionTableUiCell("George"));
modelSynchronizer.setCellOtherwiseState(1,
2);
assertFalse(((GuidedDecisionTableUiCell) uiModel.getCell(0,
2).getValue()).isOtherwise());
assertTrue(((GuidedDecisionTableUiCell) uiModel.getCell(1,
2).getValue()).isOtherwise());
}
@Test
public void testAppend1() throws ModelSynchronizer.MoveColumnVetoException {
//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 testAppend2() throws ModelSynchronizer.MoveColumnVetoException {
//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);
}
@Test
public void testAppend3() throws ModelSynchronizer.MoveColumnVetoException {
//Multiple Patterns, multiple Conditions
final Pattern52 pattern1 = boundApplicantPattern("$a");
final ConditionCol52 condition1 = ageEqualsCondition();
modelSynchronizer.appendColumn(pattern1,
condition1);
assertEquals(3,
model.getExpandedColumns().size());
assertEquals(1,
model.getConditions().size());
assertEquals(3,
uiModel.getColumns().size());
assertTrue(uiModel.getColumns().get(2) instanceof IntegerUiColumn);
final Pattern52 pattern2 = boundAddressPattern("$d");
final ConditionCol52 condition2 = new ConditionCol52();
condition2.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL);
condition2.setHeader("col2");
condition2.setFactField("country");
condition2.setOperator("==");
modelSynchronizer.appendColumn(pattern2,
condition2);
assertEquals(4,
model.getExpandedColumns().size());
assertEquals(2,
model.getConditions().size());
assertEquals(1,
model.getConditionPattern("$a").getChildColumns().size());
assertEquals(1,
model.getConditionPattern("$d").getChildColumns().size());
assertEquals(4,
uiModel.getColumns().size());
assertTrue(uiModel.getColumns().get(2) instanceof IntegerUiColumn);
assertTrue(uiModel.getColumns().get(3) instanceof StringUiColumn);
}
@Test
public void testAppendNegated() throws ModelSynchronizer.MoveColumnVetoException {
final Pattern52 pattern = new Pattern52();
pattern.setNegated(true);
pattern.setFactType("Applicant");
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.getConditions().get(0).getChildColumns().size());
assertEquals(4,
uiModel.getColumns().size());
assertTrue(uiModel.getColumns().get(2) instanceof IntegerUiColumn);
assertTrue(uiModel.getColumns().get(3) instanceof StringUiColumn);
assertEquals("not Applicant",
uiModel.getColumns().get(2).getHeaderMetaData().get(0).getTitle());
assertEquals("not Applicant",
uiModel.getColumns().get(3).getHeaderMetaData().get(0).getTitle());
}
@Test
public void testAppendBoolean() throws ModelSynchronizer.MoveColumnVetoException {
//Single Pattern, single Condition
final Pattern52 pattern = boundApplicantPattern("$a");
final ConditionCol52 condition = new ConditionCol52();
condition.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL);
condition.setHeader("col1");
condition.setFactField("approved");
condition.setOperator("==");
//Test column append
modelSynchronizer.appendColumn(pattern,
condition);
modelSynchronizer.appendRow();
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 BooleanUiColumn);
//Test row append (boolean cells should be instantiated for Model and UiModel)
modelSynchronizer.appendRow();
assertFalse(model.getData().get(0).get(2).getBooleanValue());
assertFalse(((Boolean) uiModel.getRow(0).getCells().get(2).getValue().getValue()));
}
@Test
public void testUpdate1() throws ModelSynchronizer.MoveColumnVetoException {
//Single Pattern, single Condition
final Pattern52 pattern = spy(boundApplicantPattern("$a"));
final ConditionCol52 condition = spy(ageEqualsCondition());
modelSynchronizer.appendColumn(pattern,
condition);
final Pattern52 editedPattern = boundApplicantPattern("$a");
final ConditionCol52 editedCondition = nameEqualsCondition();
editedCondition.setWidth(condition.getWidth());
List<BaseColumnFieldDiff> diffs = modelSynchronizer.updateColumn(pattern,
condition,
editedPattern,
editedCondition);
assertEquals(2,
diffs.size());
verify(pattern).diff(editedPattern);
verify(condition).diff(editedCondition);
assertEquals("header",
diffs.get(0).getFieldName());
assertEquals("factField",
diffs.get(1).getFieldName());
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 StringUiColumn);
}
@Test
public void testUpdate2() throws ModelSynchronizer.MoveColumnVetoException {
//Single Pattern, multiple Conditions
final Pattern52 pattern = spy(boundApplicantPattern("$a"));
final ConditionCol52 condition1 = spy(ageEqualsCondition());
modelSynchronizer.appendColumn(pattern,
condition1);
final ConditionCol52 condition2 = nameEqualsCondition();
modelSynchronizer.appendColumn(pattern,
condition2);
final Pattern52 editedPattern = boundApplicantPattern("$a2");
final ConditionCol52 editedCondition = ageEqualsCondition();
editedCondition.setWidth(condition2.getWidth());
List<BaseColumnFieldDiff> diffs = modelSynchronizer.updateColumn(pattern,
condition1,
editedPattern,
editedCondition);
assertEquals(1,
diffs.size());
verify(pattern).diff(editedPattern);
verify(condition1).diff(editedCondition);
assertEquals(4,
model.getExpandedColumns().size());
assertEquals(2,
model.getConditions().size());
assertEquals(1,
model.getConditionPattern("$a").getChildColumns().size());
assertEquals(1,
model.getConditionPattern("$a2").getChildColumns().size());
assertEquals(4,
uiModel.getColumns().size());
assertTrue(uiModel.getColumns().get(2) instanceof StringUiColumn);
assertTrue(uiModel.getColumns().get(3) instanceof IntegerUiColumn);
}
@Test
public void testUpdate3() throws ModelSynchronizer.MoveColumnVetoException {
//Multiple Patterns, multiple Conditions
final Pattern52 pattern1 = spy(boundApplicantPattern("$a"));
final ConditionCol52 condition1 = spy(ageEqualsCondition());
modelSynchronizer.appendColumn(pattern1,
condition1);
final ConditionCol52 condition2 = nameEqualsCondition();
modelSynchronizer.appendColumn(pattern1,
condition2);
final Pattern52 editedPattern = boundAddressPattern("$d");
final ConditionCol52 editedCondition = new ConditionCol52();
editedCondition.setWidth(condition1.getWidth());
editedCondition.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL);
editedCondition.setHeader("col1");
editedCondition.setFactField("country");
editedCondition.setOperator("==");
List<BaseColumnFieldDiff> diffs = modelSynchronizer.updateColumn(pattern1,
condition1,
editedPattern,
editedCondition);
assertEquals(3,
diffs.size());
verify(pattern1).diff(editedPattern);
verify(condition1).diff(editedCondition);
assertEquals(4,
model.getExpandedColumns().size());
assertEquals(2,
model.getConditions().size());
assertEquals(1,
model.getConditionPattern("$a").getChildColumns().size());
assertEquals(1,
model.getConditionPattern("$d").getChildColumns().size());
assertEquals(4,
uiModel.getColumns().size());
assertTrue(uiModel.getColumns().get(2) instanceof StringUiColumn);
assertTrue(uiModel.getColumns().get(3) instanceof StringUiColumn);
}
@Test
public void testUpdate4() throws ModelSynchronizer.MoveColumnVetoException {
//Multiple Patterns, multiple Conditions
final Pattern52 pattern1 = spy(boundApplicantPattern("$a"));
final ConditionCol52 condition1 = spy(ageEqualsCondition());
modelSynchronizer.appendColumn(pattern1,
condition1);
final Pattern52 editedPattern = boundAddressPattern("$d");
final ConditionCol52 editedCondition = new ConditionCol52();
editedCondition.setWidth(condition1.getWidth());
editedCondition.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL);
editedCondition.setHeader("col1");
editedCondition.setFactField("country");
editedCondition.setOperator("==");
List<BaseColumnFieldDiff> diffs = modelSynchronizer.updateColumn(pattern1,
condition1,
editedPattern,
editedCondition);
assertEquals(3,
diffs.size());
verify(pattern1).diff(editedPattern);
verify(condition1).diff(editedCondition);
assertEquals(3,
model.getExpandedColumns().size());
assertEquals(1,
model.getConditions().size());
assertNull(model.getConditionPattern("$a"));
assertEquals(1,
model.getConditionPattern("$d").getChildColumns().size());
assertEquals(3,
uiModel.getColumns().size());
assertTrue(uiModel.getColumns().get(2) instanceof StringUiColumn);
}
@Test
public void testUpdate5() throws ModelSynchronizer.MoveColumnVetoException {
final Pattern52 pattern1 = spy(boundApplicantPattern("$a"));
final ConditionCol52 condition1 = spy(ageEqualsCondition());
modelSynchronizer.appendColumn(pattern1,
condition1);
final Pattern52 editedPattern = boundApplicantPattern("$a");
final ConditionCol52 editedCondition = ageEqualsCondition();
editedCondition.setWidth(condition1.getWidth());
editedCondition.setHideColumn(true);
editedCondition.setHeader("updated");
List<BaseColumnFieldDiff> diffs = modelSynchronizer.updateColumn(pattern1,
condition1,
editedPattern,
editedCondition);
assertEquals(2,
diffs.size());
verify(pattern1).diff(editedPattern);
verify(condition1).diff(editedCondition);
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);
assertEquals(false,
uiModel.getColumns().get(2).isVisible());
assertEquals("updated",
uiModel.getColumns().get(2).getHeaderMetaData().get(0).getTitle());
}
@Test
public void testUpdate6() throws ModelSynchronizer.MoveColumnVetoException {
//Single Pattern, single Condition
final Pattern52 pattern = spy(boundApplicantPattern("$a"));
final ConditionCol52 condition = spy(ageEqualsCondition());
modelSynchronizer.appendColumn(pattern,
condition);
final Pattern52 editedPattern = boundApplicantPattern("$a");
final ConditionCol52 editedCondition = ageEqualsCondition();
editedCondition.setWidth(condition.getWidth());
editedCondition.setOperator("!=");
List<BaseColumnFieldDiff> diffs = modelSynchronizer.updateColumn(pattern,
condition,
editedPattern,
editedCondition);
assertEquals(1,
diffs.size());
verify(pattern).diff(editedPattern);
verify(condition).diff(editedCondition);
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 testUpdateToNegated() throws ModelSynchronizer.MoveColumnVetoException {
final Pattern52 pattern = spy(boundApplicantPattern("$a"));
final ConditionCol52 condition = spy(ageEqualsCondition());
modelSynchronizer.appendColumn(pattern,
condition);
assertEquals("$a : Applicant",
uiModel.getColumns().get(2).getHeaderMetaData().get(0).getTitle());
final Pattern52 editedPattern = new Pattern52();
editedPattern.setNegated(true);
editedPattern.setFactType("Applicant");
final ConditionCol52 editedCondition = spy(ageEqualsCondition());
modelSynchronizer.updateColumn(pattern,
condition,
editedPattern,
editedCondition);
assertEquals("not Applicant",
uiModel.getColumns().get(2).getHeaderMetaData().get(0).getTitle());
}
@Test
public void checkAddToValueListPreservesData() throws ModelSynchronizer.MoveColumnVetoException {
//Single Pattern, single Condition
final Pattern52 pattern = spy(boundApplicantPattern("$a"));
final ConditionCol52 condition = spy(nameEqualsCondition());
condition.setValueList("A,B,C");
modelSynchronizer.appendColumn(pattern,
condition);
modelSynchronizer.appendRow();
modelSynchronizer.appendRow();
modelSynchronizer.appendRow();
uiModel.setCell(0,
2,
new BaseGridCellValue<>("A"));
uiModel.setCell(1,
2,
new BaseGridCellValue<>("B"));
uiModel.setCell(2,
2,
new BaseGridCellValue<>("C"));
final Pattern52 editedPattern = boundApplicantPattern("$a");
final ConditionCol52 editedCondition = nameEqualsCondition();
editedCondition.setWidth(condition.getWidth());
editedCondition.setValueList("A,B,C,D");
List<BaseColumnFieldDiff> diffs = modelSynchronizer.updateColumn(pattern,
condition,
editedPattern,
editedCondition);
assertEquals(1,
diffs.size());
verify(pattern).diff(editedPattern);
verify(condition).diff(editedCondition);
assertEquals(ConditionCol52.FIELD_VALUE_LIST,
diffs.get(0).getFieldName());
assertEquals("A",
uiModel.getCell(0,
2).getValue().getValue().toString());
assertEquals("B",
uiModel.getCell(1,
2).getValue().getValue().toString());
assertEquals("C",
uiModel.getCell(2,
2).getValue().getValue().toString());
assertEquals("A",
model.getData().get(0).get(2).getStringValue());
assertEquals("B",
model.getData().get(1).get(2).getStringValue());
assertEquals("C",
model.getData().get(2).get(2).getStringValue());
}
@Test
public void checkRemoveFromValueListClearsData() throws ModelSynchronizer.MoveColumnVetoException {
//Single Pattern, single Condition
final Pattern52 pattern = spy(boundApplicantPattern("$a"));
final ConditionCol52 condition = spy(nameEqualsCondition());
condition.setValueList("A,B,C");
modelSynchronizer.appendColumn(pattern,
condition);
modelSynchronizer.appendRow();
modelSynchronizer.appendRow();
modelSynchronizer.appendRow();
uiModel.setCell(0,
2,
new BaseGridCellValue<>("A"));
uiModel.setCell(1,
2,
new BaseGridCellValue<>("B"));
uiModel.setCell(2,
2,
new BaseGridCellValue<>("C"));
final Pattern52 editedPattern = boundApplicantPattern("$a");
final ConditionCol52 editedCondition = nameEqualsCondition();
editedCondition.setWidth(condition.getWidth());
editedCondition.setValueList("A");
List<BaseColumnFieldDiff> diffs = modelSynchronizer.updateColumn(pattern,
condition,
editedPattern,
editedCondition);
assertEquals(1,
diffs.size());
verify(pattern).diff(editedPattern);
verify(condition).diff(editedCondition);
assertEquals(ConditionCol52.FIELD_VALUE_LIST,
diffs.get(0).getFieldName());
assertEquals("A",
uiModel.getCell(0,
2).getValue().getValue().toString());
assertNull(uiModel.getCell(1,
2));
assertNull(uiModel.getCell(2,
2));
assertEquals("A",
model.getData().get(0).get(2).getStringValue());
assertFalse(model.getData().get(1).get(2).hasValue());
assertFalse(model.getData().get(2).get(2).hasValue());
}
@Test
public void testDelete1() throws ModelSynchronizer.MoveColumnVetoException {
//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 testDelete2() throws ModelSynchronizer.MoveColumnVetoException {
//Single Pattern, multiple Conditions
final Pattern52 pattern = boundApplicantPattern("$a");
final ConditionCol52 condition1 = ageEqualsCondition();
modelSynchronizer.appendColumn(pattern,
condition1);
final ConditionCol52 condition2 = nameEqualsCondition();
modelSynchronizer.appendColumn(pattern,
condition2);
assertEquals(4,
model.getExpandedColumns().size());
assertEquals(1,
model.getConditions().size());
assertEquals(4,
uiModel.getColumns().size());
modelSynchronizer.deleteColumn(condition1);
assertEquals(3,
model.getExpandedColumns().size());
assertEquals(1,
model.getConditions().size());
assertEquals(1,
model.getConditionPattern("$a").getChildColumns().size());
assertEquals(3,
uiModel.getColumns().size());
}
@Test
public void testDelete3() throws ModelSynchronizer.MoveColumnVetoException {
//Multiple Patterns, multiple Conditions
final Pattern52 pattern1 = boundApplicantPattern("$a");
final ConditionCol52 condition1 = ageEqualsCondition();
modelSynchronizer.appendColumn(pattern1,
condition1);
final Pattern52 pattern2 = boundAddressPattern("$d");
final ConditionCol52 condition2 = new ConditionCol52();
condition2.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL);
condition2.setHeader("col2");
condition2.setFactField("country");
condition2.setOperator("==");
modelSynchronizer.appendColumn(pattern2,
condition2);
assertEquals(4,
model.getExpandedColumns().size());
assertEquals(2,
model.getConditions().size());
assertEquals(1,
model.getConditionPattern("$a").getChildColumns().size());
assertEquals(1,
model.getConditionPattern("$d").getChildColumns().size());
assertEquals(4,
uiModel.getColumns().size());
modelSynchronizer.deleteColumn(condition1);
assertEquals(3,
model.getExpandedColumns().size());
assertEquals(1,
model.getConditions().size());
assertNull(model.getConditionPattern("$a"));
assertEquals(1,
model.getConditionPattern("$d").getChildColumns().size());
assertEquals(3,
uiModel.getColumns().size());
}
@Test
public void testMoveLeftNegatedPattern() throws ModelSynchronizer.MoveColumnVetoException {
final Pattern52 pattern = new Pattern52();
pattern.setNegated(true);
pattern.setFactType("Applicant");
final ConditionCol52 column1 = ageEqualsCondition();
final ConditionCol52 column2 = nameEqualsCondition();
modelSynchronizer.appendColumn(pattern,
column1);
modelSynchronizer.appendColumn(pattern,
column2);
modelSynchronizer.appendRow();
uiModel.setCell(0,
2,
new BaseGridCellValue<Integer>(45));
uiModel.setCell(0,
3,
new BaseGridCellValue<String>("Smurf"));
assertEquals(1,
model.getPatterns().size());
final List<ConditionCol52> conditionColumns1_1 = model.getPatterns().get(0).getChildColumns();
assertEquals(column1,
conditionColumns1_1.get(0));
assertEquals(column2,
conditionColumns1_1.get(1));
assertEquals(45,
model.getData().get(0).get(2).getNumericValue());
assertEquals("Smurf",
model.getData().get(0).get(3).getStringValue());
assertEquals(4,
uiModel.getColumns().size());
final GridColumn<?> uiModelColumn1_1 = uiModel.getColumns().get(2);
final GridColumn<?> uiModelColumn2_1 = uiModel.getColumns().get(3);
assertEquals("not Applicant",
uiModelColumn1_1.getHeaderMetaData().get(0).getTitle());
assertEquals("not Applicant",
uiModelColumn2_1.getHeaderMetaData().get(0).getTitle());
assertTrue(uiModelColumn1_1 instanceof IntegerUiColumn);
assertTrue(uiModelColumn2_1 instanceof StringUiColumn);
assertEquals(2,
uiModelColumn1_1.getIndex());
assertEquals(3,
uiModelColumn2_1.getIndex());
assertEquals(45,
uiModel.getRow(0).getCells().get(uiModelColumn1_1.getIndex()).getValue().getValue());
assertEquals("Smurf",
uiModel.getRow(0).getCells().get(uiModelColumn2_1.getIndex()).getValue().getValue());
uiModel.moveColumnTo(2,
uiModelColumn2_1);
assertEquals(1,
model.getPatterns().size());
final List<ConditionCol52> conditionColumns1_2 = model.getPatterns().get(0).getChildColumns();
assertEquals(column2,
conditionColumns1_2.get(0));
assertEquals(column1,
conditionColumns1_2.get(1));
assertEquals("Smurf",
model.getData().get(0).get(2).getStringValue());
assertEquals(45,
model.getData().get(0).get(3).getNumericValue());
assertEquals(4,
uiModel.getColumns().size());
final GridColumn<?> uiModelColumn1_2 = uiModel.getColumns().get(2);
final GridColumn<?> uiModelColumn2_2 = uiModel.getColumns().get(3);
assertEquals("not Applicant",
uiModelColumn1_2.getHeaderMetaData().get(0).getTitle());
assertEquals("not Applicant",
uiModelColumn2_2.getHeaderMetaData().get(0).getTitle());
assertTrue(uiModelColumn1_2 instanceof StringUiColumn);
assertTrue(uiModelColumn2_2 instanceof IntegerUiColumn);
assertEquals(3,
uiModelColumn1_2.getIndex());
assertEquals(2,
uiModelColumn2_2.getIndex());
assertEquals("Smurf",
uiModel.getRow(0).getCells().get(uiModelColumn1_2.getIndex()).getValue().getValue());
assertEquals(45,
uiModel.getRow(0).getCells().get(uiModelColumn2_2.getIndex()).getValue().getValue());
}
@Test
public void testMoveColumnTo_MoveLeft() throws ModelSynchronizer.MoveColumnVetoException {
final Pattern52 pattern = boundApplicantPattern("$a");
final ConditionCol52 column1 = ageEqualsCondition();
final ConditionCol52 column2 = nameEqualsCondition();
modelSynchronizer.appendColumn(pattern,
column1);
modelSynchronizer.appendColumn(pattern,
column2);
modelSynchronizer.appendRow();
uiModel.setCell(0,
2,
new BaseGridCellValue<Integer>(45));
uiModel.setCell(0,
3,
new BaseGridCellValue<String>("Smurf"));
assertEquals(1,
model.getPatterns().size());
final List<ConditionCol52> conditionColumns1_1 = model.getPatterns().get(0).getChildColumns();
assertEquals(column1,
conditionColumns1_1.get(0));
assertEquals(column2,
conditionColumns1_1.get(1));
assertEquals(45,
model.getData().get(0).get(2).getNumericValue());
assertEquals("Smurf",
model.getData().get(0).get(3).getStringValue());
assertEquals(4,
uiModel.getColumns().size());
final GridColumn<?> uiModelColumn1_1 = uiModel.getColumns().get(2);
final GridColumn<?> uiModelColumn2_1 = uiModel.getColumns().get(3);
assertEquals("$a : Applicant",
uiModelColumn1_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$a : Applicant",
uiModelColumn2_1.getHeaderMetaData().get(0).getTitle());
assertTrue(uiModelColumn1_1 instanceof IntegerUiColumn);
assertTrue(uiModelColumn2_1 instanceof StringUiColumn);
assertEquals(2,
uiModelColumn1_1.getIndex());
assertEquals(3,
uiModelColumn2_1.getIndex());
assertEquals(45,
uiModel.getRow(0).getCells().get(uiModelColumn1_1.getIndex()).getValue().getValue());
assertEquals("Smurf",
uiModel.getRow(0).getCells().get(uiModelColumn2_1.getIndex()).getValue().getValue());
uiModel.moveColumnTo(2,
uiModelColumn2_1);
assertEquals(1,
model.getPatterns().size());
final List<ConditionCol52> conditionColumns1_2 = model.getPatterns().get(0).getChildColumns();
assertEquals(column2,
conditionColumns1_2.get(0));
assertEquals(column1,
conditionColumns1_2.get(1));
assertEquals("Smurf",
model.getData().get(0).get(2).getStringValue());
assertEquals(45,
model.getData().get(0).get(3).getNumericValue());
assertEquals(4,
uiModel.getColumns().size());
final GridColumn<?> uiModelColumn1_2 = uiModel.getColumns().get(2);
final GridColumn<?> uiModelColumn2_2 = uiModel.getColumns().get(3);
assertEquals("$a : Applicant",
uiModelColumn1_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$a : Applicant",
uiModelColumn2_2.getHeaderMetaData().get(0).getTitle());
assertTrue(uiModelColumn1_2 instanceof StringUiColumn);
assertTrue(uiModelColumn2_2 instanceof IntegerUiColumn);
assertEquals(3,
uiModelColumn1_2.getIndex());
assertEquals(2,
uiModelColumn2_2.getIndex());
assertEquals("Smurf",
uiModel.getRow(0).getCells().get(uiModelColumn1_2.getIndex()).getValue().getValue());
assertEquals(45,
uiModel.getRow(0).getCells().get(uiModelColumn2_2.getIndex()).getValue().getValue());
}
@Test
public void testMoveColumnTo_MoveRight() throws ModelSynchronizer.MoveColumnVetoException {
final Pattern52 pattern = boundApplicantPattern("$a");
final ConditionCol52 column1 = ageEqualsCondition();
final ConditionCol52 column2 = nameEqualsCondition();
modelSynchronizer.appendColumn(pattern,
column1);
modelSynchronizer.appendColumn(pattern,
column2);
modelSynchronizer.appendRow();
uiModel.setCell(0,
2,
new BaseGridCellValue<Integer>(45));
uiModel.setCell(0,
3,
new BaseGridCellValue<String>("Smurf"));
assertEquals(1,
model.getPatterns().size());
final List<ConditionCol52> conditionColumns1_1 = model.getPatterns().get(0).getChildColumns();
assertEquals(column1,
conditionColumns1_1.get(0));
assertEquals(column2,
conditionColumns1_1.get(1));
assertEquals(45,
model.getData().get(0).get(2).getNumericValue());
assertEquals("Smurf",
model.getData().get(0).get(3).getStringValue());
assertEquals(4,
uiModel.getColumns().size());
final GridColumn<?> uiModelColumn1_1 = uiModel.getColumns().get(2);
final GridColumn<?> uiModelColumn2_1 = uiModel.getColumns().get(3);
assertEquals("$a : Applicant",
uiModelColumn1_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$a : Applicant",
uiModelColumn2_1.getHeaderMetaData().get(0).getTitle());
assertTrue(uiModelColumn1_1 instanceof IntegerUiColumn);
assertTrue(uiModelColumn2_1 instanceof StringUiColumn);
assertEquals(2,
uiModelColumn1_1.getIndex());
assertEquals(3,
uiModelColumn2_1.getIndex());
assertEquals(45,
uiModel.getRow(0).getCells().get(uiModelColumn1_1.getIndex()).getValue().getValue());
assertEquals("Smurf",
uiModel.getRow(0).getCells().get(uiModelColumn2_1.getIndex()).getValue().getValue());
uiModel.moveColumnTo(3,
uiModelColumn1_1);
assertEquals(1,
model.getPatterns().size());
final List<ConditionCol52> conditionColumns1_2 = model.getPatterns().get(0).getChildColumns();
assertEquals(column2,
conditionColumns1_2.get(0));
assertEquals(column1,
conditionColumns1_2.get(1));
assertEquals("Smurf",
model.getData().get(0).get(2).getStringValue());
assertEquals(45,
model.getData().get(0).get(3).getNumericValue());
assertEquals(4,
uiModel.getColumns().size());
final GridColumn<?> uiModelColumn1_2 = uiModel.getColumns().get(2);
final GridColumn<?> uiModelColumn2_2 = uiModel.getColumns().get(3);
assertEquals("$a : Applicant",
uiModelColumn1_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$a : Applicant",
uiModelColumn2_2.getHeaderMetaData().get(0).getTitle());
assertTrue(uiModelColumn1_2 instanceof StringUiColumn);
assertTrue(uiModelColumn2_2 instanceof IntegerUiColumn);
assertEquals(3,
uiModelColumn1_2.getIndex());
assertEquals(2,
uiModelColumn2_2.getIndex());
assertEquals("Smurf",
uiModel.getRow(0).getCells().get(uiModelColumn1_2.getIndex()).getValue().getValue());
assertEquals(45,
uiModel.getRow(0).getCells().get(uiModelColumn2_2.getIndex()).getValue().getValue());
}
@Test
public void testMoveColumnTo_OutOfBounds_OutOfConditions() throws ModelSynchronizer.MoveColumnVetoException {
final Pattern52 pattern = boundApplicantPattern("$a");
final ConditionCol52 column1 = ageEqualsCondition();
final ConditionCol52 column2 = nameEqualsCondition();
modelSynchronizer.appendColumn(pattern,
column1);
modelSynchronizer.appendColumn(pattern,
column2);
modelSynchronizer.appendRow();
uiModel.setCell(0,
2,
new BaseGridCellValue<Integer>(45));
uiModel.setCell(0,
3,
new BaseGridCellValue<String>("Smurf"));
assertEquals(1,
model.getPatterns().size());
final List<ConditionCol52> conditionColumns1_1 = model.getPatterns().get(0).getChildColumns();
assertEquals(column1,
conditionColumns1_1.get(0));
assertEquals(column2,
conditionColumns1_1.get(1));
assertEquals(45,
model.getData().get(0).get(2).getNumericValue());
assertEquals("Smurf",
model.getData().get(0).get(3).getStringValue());
assertEquals(4,
uiModel.getColumns().size());
final GridColumn<?> uiModelColumn1_1 = uiModel.getColumns().get(2);
final GridColumn<?> uiModelColumn2_1 = uiModel.getColumns().get(3);
assertEquals("$a : Applicant",
uiModelColumn1_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$a : Applicant",
uiModelColumn2_1.getHeaderMetaData().get(0).getTitle());
assertTrue(uiModelColumn1_1 instanceof IntegerUiColumn);
assertTrue(uiModelColumn2_1 instanceof StringUiColumn);
assertEquals(2,
uiModelColumn1_1.getIndex());
assertEquals(3,
uiModelColumn2_1.getIndex());
assertEquals(45,
uiModel.getRow(0).getCells().get(uiModelColumn1_1.getIndex()).getValue().getValue());
assertEquals("Smurf",
uiModel.getRow(0).getCells().get(uiModelColumn2_1.getIndex()).getValue().getValue());
uiModel.moveColumnTo(0,
uiModelColumn1_1);
assertEquals(1,
model.getPatterns().size());
final List<ConditionCol52> conditionColumns1_2 = model.getPatterns().get(0).getChildColumns();
assertEquals(column1,
conditionColumns1_2.get(0));
assertEquals(column2,
conditionColumns1_2.get(1));
assertEquals(45,
model.getData().get(0).get(2).getNumericValue());
assertEquals("Smurf",
model.getData().get(0).get(3).getStringValue());
assertEquals(4,
uiModel.getColumns().size());
final GridColumn<?> uiModelColumn1_2 = uiModel.getColumns().get(2);
final GridColumn<?> uiModelColumn2_2 = uiModel.getColumns().get(3);
assertEquals("$a : Applicant",
uiModelColumn1_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$a : Applicant",
uiModelColumn2_2.getHeaderMetaData().get(0).getTitle());
assertTrue(uiModelColumn1_2 instanceof IntegerUiColumn);
assertTrue(uiModelColumn2_2 instanceof StringUiColumn);
assertEquals(2,
uiModelColumn1_2.getIndex());
assertEquals(3,
uiModelColumn2_2.getIndex());
assertEquals(45,
uiModel.getRow(0).getCells().get(uiModelColumn1_2.getIndex()).getValue().getValue());
assertEquals("Smurf",
uiModel.getRow(0).getCells().get(uiModelColumn2_2.getIndex()).getValue().getValue());
}
@Test
public void testMoveColumnTo_OutOfBounds_OutOfPattern() throws ModelSynchronizer.MoveColumnVetoException {
final Pattern52 pattern1 = boundApplicantPattern("$a");
final ConditionCol52 column1p1 = ageEqualsCondition();
modelSynchronizer.appendColumn(pattern1,
column1p1);
final ConditionCol52 column2p1 = nameEqualsCondition();
modelSynchronizer.appendColumn(pattern1,
column2p1);
final Pattern52 pattern2 = boundApplicantPattern("$a2");
final ConditionCol52 column1p2 = nameEqualsCondition();
modelSynchronizer.appendColumn(pattern2,
column1p2);
modelSynchronizer.appendRow();
uiModel.setCell(0,
2,
new BaseGridCellValue<Integer>(45));
uiModel.setCell(0,
3,
new BaseGridCellValue<String>("Fred"));
uiModel.setCell(0,
4,
new BaseGridCellValue<String>("Smurf"));
assertEquals(2,
model.getPatterns().size());
final List<ConditionCol52> conditionColumns1_1 = model.getPatterns().get(0).getChildColumns();
assertEquals(column1p1,
conditionColumns1_1.get(0));
assertEquals(column2p1,
conditionColumns1_1.get(1));
final List<ConditionCol52> conditionColumns2_1 = model.getPatterns().get(1).getChildColumns();
assertEquals(column1p2,
conditionColumns2_1.get(0));
assertEquals(45,
model.getData().get(0).get(2).getNumericValue());
assertEquals("Fred",
model.getData().get(0).get(3).getStringValue());
assertEquals("Smurf",
model.getData().get(0).get(4).getStringValue());
assertEquals(5,
uiModel.getColumns().size());
final GridColumn<?> uiModelColumn1_1 = uiModel.getColumns().get(2);
final GridColumn<?> uiModelColumn2_1 = uiModel.getColumns().get(3);
final GridColumn<?> uiModelColumn3_1 = uiModel.getColumns().get(4);
assertEquals("$a : Applicant",
uiModelColumn1_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$a : Applicant",
uiModelColumn2_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$a2 : Applicant",
uiModelColumn3_1.getHeaderMetaData().get(0).getTitle());
assertTrue(uiModelColumn1_1 instanceof IntegerUiColumn);
assertTrue(uiModelColumn2_1 instanceof StringUiColumn);
assertTrue(uiModelColumn3_1 instanceof StringUiColumn);
assertEquals(2,
uiModelColumn1_1.getIndex());
assertEquals(3,
uiModelColumn2_1.getIndex());
assertEquals(4,
uiModelColumn3_1.getIndex());
assertEquals(45,
uiModel.getRow(0).getCells().get(uiModelColumn1_1.getIndex()).getValue().getValue());
assertEquals("Fred",
uiModel.getRow(0).getCells().get(uiModelColumn2_1.getIndex()).getValue().getValue());
assertEquals("Smurf",
uiModel.getRow(0).getCells().get(uiModelColumn3_1.getIndex()).getValue().getValue());
uiModel.moveColumnTo(4,
uiModelColumn1_1);
assertEquals(2,
model.getPatterns().size());
final List<ConditionCol52> conditionColumns1_2 = model.getPatterns().get(0).getChildColumns();
assertEquals(column1p1,
conditionColumns1_2.get(0));
assertEquals(column2p1,
conditionColumns1_2.get(1));
final List<ConditionCol52> conditionColumns2_2 = model.getPatterns().get(1).getChildColumns();
assertEquals(column1p2,
conditionColumns2_2.get(0));
assertEquals(45,
model.getData().get(0).get(2).getNumericValue());
assertEquals("Fred",
model.getData().get(0).get(3).getStringValue());
assertEquals("Smurf",
model.getData().get(0).get(4).getStringValue());
assertEquals(5,
uiModel.getColumns().size());
final GridColumn<?> uiModelColumn1_2 = uiModel.getColumns().get(2);
final GridColumn<?> uiModelColumn2_2 = uiModel.getColumns().get(3);
final GridColumn<?> uiModelColumn3_2 = uiModel.getColumns().get(4);
assertEquals("$a : Applicant",
uiModelColumn1_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$a : Applicant",
uiModelColumn2_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$a2 : Applicant",
uiModelColumn3_2.getHeaderMetaData().get(0).getTitle());
assertTrue(uiModelColumn1_2 instanceof IntegerUiColumn);
assertTrue(uiModelColumn2_2 instanceof StringUiColumn);
assertTrue(uiModelColumn3_2 instanceof StringUiColumn);
assertEquals(2,
uiModelColumn1_2.getIndex());
assertEquals(3,
uiModelColumn2_2.getIndex());
assertEquals(4,
uiModelColumn3_2.getIndex());
assertEquals(45,
uiModel.getRow(0).getCells().get(uiModelColumn1_2.getIndex()).getValue().getValue());
assertEquals("Fred",
uiModel.getRow(0).getCells().get(uiModelColumn2_2.getIndex()).getValue().getValue());
assertEquals("Smurf",
uiModel.getRow(0).getCells().get(uiModelColumn3_2.getIndex()).getValue().getValue());
}
@Test
public void testMoveColumnTo_SingleColumnPattern() throws ModelSynchronizer.MoveColumnVetoException {
final Pattern52 pattern1 = boundApplicantPattern("$a");
final ConditionCol52 column1p1 = ageEqualsCondition();
modelSynchronizer.appendColumn(pattern1,
column1p1);
final Pattern52 pattern2 = boundApplicantPattern("$a2");
final ConditionCol52 column1p2 = nameEqualsCondition();
modelSynchronizer.appendColumn(pattern2,
column1p2);
modelSynchronizer.appendRow();
uiModel.setCell(0,
2,
new BaseGridCellValue<Integer>(45));
uiModel.setCell(0,
3,
new BaseGridCellValue<String>("Smurf"));
assertEquals(2,
model.getPatterns().size());
final List<ConditionCol52> conditionColumns1_1 = model.getPatterns().get(0).getChildColumns();
assertEquals(column1p1,
conditionColumns1_1.get(0));
final List<ConditionCol52> conditionColumns2_1 = model.getPatterns().get(1).getChildColumns();
assertEquals(column1p2,
conditionColumns2_1.get(0));
assertEquals(45,
model.getData().get(0).get(2).getNumericValue());
assertEquals("Smurf",
model.getData().get(0).get(3).getStringValue());
assertEquals(4,
uiModel.getColumns().size());
final GridColumn<?> uiModelColumn1_1 = uiModel.getColumns().get(2);
final GridColumn<?> uiModelColumn2_1 = uiModel.getColumns().get(3);
assertEquals("$a : Applicant",
uiModelColumn1_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$a2 : Applicant",
uiModelColumn2_1.getHeaderMetaData().get(0).getTitle());
assertTrue(uiModelColumn1_1 instanceof IntegerUiColumn);
assertTrue(uiModelColumn2_1 instanceof StringUiColumn);
assertEquals(2,
uiModelColumn1_1.getIndex());
assertEquals(3,
uiModelColumn2_1.getIndex());
assertEquals(45,
uiModel.getRow(0).getCells().get(uiModelColumn1_1.getIndex()).getValue().getValue());
assertEquals("Smurf",
uiModel.getRow(0).getCells().get(uiModelColumn2_1.getIndex()).getValue().getValue());
uiModel.moveColumnTo(3,
uiModelColumn1_1);
assertEquals(2,
model.getPatterns().size());
final List<ConditionCol52> conditionColumns1_2 = model.getPatterns().get(0).getChildColumns();
assertEquals(column1p2,
conditionColumns1_2.get(0));
final List<ConditionCol52> conditionColumns2_2 = model.getPatterns().get(1).getChildColumns();
assertEquals(column1p1,
conditionColumns2_2.get(0));
assertEquals("Smurf",
model.getData().get(0).get(2).getStringValue());
assertEquals(45,
model.getData().get(0).get(3).getNumericValue());
assertEquals(4,
uiModel.getColumns().size());
final GridColumn<?> uiModelColumn1_2 = uiModel.getColumns().get(2);
final GridColumn<?> uiModelColumn2_2 = uiModel.getColumns().get(3);
assertEquals("$a2 : Applicant",
uiModelColumn1_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$a : Applicant",
uiModelColumn2_2.getHeaderMetaData().get(0).getTitle());
assertTrue(uiModelColumn1_2 instanceof StringUiColumn);
assertTrue(uiModelColumn2_2 instanceof IntegerUiColumn);
assertEquals(3,
uiModelColumn1_2.getIndex());
assertEquals(2,
uiModelColumn2_2.getIndex());
assertEquals("Smurf",
uiModel.getRow(0).getCells().get(uiModelColumn1_2.getIndex()).getValue().getValue());
assertEquals(45,
uiModel.getRow(0).getCells().get(uiModelColumn2_2.getIndex()).getValue().getValue());
}
@Test
public void testMoveColumnsTo_MoveLeft() throws ModelSynchronizer.MoveColumnVetoException {
final Pattern52 pattern1 = boundApplicantPattern("$a");
final ConditionCol52 column1p1 = ageEqualsCondition();
final ConditionCol52 column2p1 = nameEqualsCondition();
modelSynchronizer.appendColumn(pattern1,
column1p1);
modelSynchronizer.appendColumn(pattern1,
column2p1);
final Pattern52 pattern2 = boundAddressPattern("$d");
final ConditionCol52 column1p2 = new ConditionCol52();
column1p2.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL);
column1p2.setFactField("state");
column1p2.setOperator("==");
column1p2.setHeader("state");
final ConditionCol52 column2p2 = new ConditionCol52();
column2p2.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL);
column2p2.setFactField("country");
column2p2.setOperator("==");
column2p2.setHeader("country");
modelSynchronizer.appendColumn(pattern2,
column1p2);
modelSynchronizer.appendColumn(pattern2,
column2p2);
modelSynchronizer.appendRow();
uiModel.setCell(0,
2,
new BaseGridCellValue<Integer>(45));
uiModel.setCell(0,
3,
new BaseGridCellValue<String>("Smurf"));
uiModel.setCell(0,
4,
new BaseGridCellValue<String>("NY"));
uiModel.setCell(0,
5,
new BaseGridCellValue<String>("America"));
assertEquals(2,
model.getPatterns().size());
final List<ConditionCol52> conditionColumns1_1p1 = model.getPatterns().get(0).getChildColumns();
assertEquals(column1p1,
conditionColumns1_1p1.get(0));
assertEquals(column2p1,
conditionColumns1_1p1.get(1));
assertEquals(45,
model.getData().get(0).get(2).getNumericValue());
assertEquals("Smurf",
model.getData().get(0).get(3).getStringValue());
final List<ConditionCol52> conditionColumns1_1p2 = model.getPatterns().get(1).getChildColumns();
assertEquals(column1p2,
conditionColumns1_1p2.get(0));
assertEquals(column2p2,
conditionColumns1_1p2.get(1));
assertEquals("NY",
model.getData().get(0).get(4).getStringValue());
assertEquals("America",
model.getData().get(0).get(5).getStringValue());
assertEquals(6,
uiModel.getColumns().size());
final GridColumn<?> uiModelColumn1_1 = uiModel.getColumns().get(2);
final GridColumn<?> uiModelColumn2_1 = uiModel.getColumns().get(3);
final GridColumn<?> uiModelColumn3_1 = uiModel.getColumns().get(4);
final GridColumn<?> uiModelColumn4_1 = uiModel.getColumns().get(5);
assertEquals("$a : Applicant",
uiModelColumn1_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$a : Applicant",
uiModelColumn2_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$d : Address",
uiModelColumn3_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$d : Address",
uiModelColumn4_1.getHeaderMetaData().get(0).getTitle());
assertTrue(uiModelColumn1_1 instanceof IntegerUiColumn);
assertTrue(uiModelColumn2_1 instanceof StringUiColumn);
assertTrue(uiModelColumn3_1 instanceof StringUiColumn);
assertTrue(uiModelColumn4_1 instanceof StringUiColumn);
assertEquals(2,
uiModelColumn1_1.getIndex());
assertEquals(3,
uiModelColumn2_1.getIndex());
assertEquals(4,
uiModelColumn3_1.getIndex());
assertEquals(5,
uiModelColumn4_1.getIndex());
assertEquals(45,
uiModel.getRow(0).getCells().get(uiModelColumn1_1.getIndex()).getValue().getValue());
assertEquals("Smurf",
uiModel.getRow(0).getCells().get(uiModelColumn2_1.getIndex()).getValue().getValue());
assertEquals("NY",
uiModel.getRow(0).getCells().get(uiModelColumn3_1.getIndex()).getValue().getValue());
assertEquals("America",
uiModel.getRow(0).getCells().get(uiModelColumn4_1.getIndex()).getValue().getValue());
uiModel.moveColumnsTo(2,
new ArrayList<GridColumn<?>>() {{
add(uiModelColumn3_1);
add(uiModelColumn4_1);
}});
assertEquals(2,
model.getPatterns().size());
final List<ConditionCol52> conditionColumns1_2p2 = model.getPatterns().get(0).getChildColumns();
assertEquals(column1p2,
conditionColumns1_2p2.get(0));
assertEquals(column2p2,
conditionColumns1_2p2.get(1));
assertEquals("NY",
model.getData().get(0).get(2).getStringValue());
assertEquals("America",
model.getData().get(0).get(3).getStringValue());
final List<ConditionCol52> conditionColumns1_2p1 = model.getPatterns().get(1).getChildColumns();
assertEquals(column1p1,
conditionColumns1_2p1.get(0));
assertEquals(column2p1,
conditionColumns1_2p1.get(1));
assertEquals(45,
model.getData().get(0).get(4).getNumericValue());
assertEquals("Smurf",
model.getData().get(0).get(5).getStringValue());
assertEquals(6,
uiModel.getColumns().size());
final GridColumn<?> uiModelColumn1_2 = uiModel.getColumns().get(2);
final GridColumn<?> uiModelColumn2_2 = uiModel.getColumns().get(3);
final GridColumn<?> uiModelColumn3_2 = uiModel.getColumns().get(4);
final GridColumn<?> uiModelColumn4_2 = uiModel.getColumns().get(5);
assertEquals("$d : Address",
uiModelColumn1_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$d : Address",
uiModelColumn2_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$a : Applicant",
uiModelColumn3_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$a : Applicant",
uiModelColumn4_2.getHeaderMetaData().get(0).getTitle());
assertTrue(uiModelColumn1_2 instanceof StringUiColumn);
assertTrue(uiModelColumn2_2 instanceof StringUiColumn);
assertTrue(uiModelColumn3_2 instanceof IntegerUiColumn);
assertTrue(uiModelColumn4_2 instanceof StringUiColumn);
assertEquals(4,
uiModelColumn1_2.getIndex());
assertEquals(5,
uiModelColumn2_2.getIndex());
assertEquals(2,
uiModelColumn3_2.getIndex());
assertEquals(3,
uiModelColumn4_2.getIndex());
assertEquals("NY",
uiModel.getRow(0).getCells().get(uiModelColumn1_2.getIndex()).getValue().getValue());
assertEquals("America",
uiModel.getRow(0).getCells().get(uiModelColumn2_2.getIndex()).getValue().getValue());
assertEquals(45,
uiModel.getRow(0).getCells().get(uiModelColumn3_2.getIndex()).getValue().getValue());
assertEquals("Smurf",
uiModel.getRow(0).getCells().get(uiModelColumn4_2.getIndex()).getValue().getValue());
}
@Test
public void testMoveColumnsTo_MoveLeft_MidPoint() throws ModelSynchronizer.MoveColumnVetoException {
final Pattern52 pattern1 = boundApplicantPattern("$a");
final ConditionCol52 column1p1 = ageEqualsCondition();
final ConditionCol52 column2p1 = nameEqualsCondition();
modelSynchronizer.appendColumn(pattern1,
column1p1);
modelSynchronizer.appendColumn(pattern1,
column2p1);
final Pattern52 pattern2 = boundAddressPattern("$d");
final ConditionCol52 column1p2 = new ConditionCol52();
column1p2.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL);
column1p2.setFactField("state");
column1p2.setOperator("==");
column1p2.setHeader("state");
final ConditionCol52 column2p2 = new ConditionCol52();
column2p2.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL);
column2p2.setFactField("country");
column2p2.setOperator("==");
column2p2.setHeader("country");
modelSynchronizer.appendColumn(pattern2,
column1p2);
modelSynchronizer.appendColumn(pattern2,
column2p2);
final Pattern52 pattern3 = boundAddressPattern("$d2");
final ConditionCol52 column1p3 = new ConditionCol52();
column1p3.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL);
column1p3.setFactField("state");
column1p3.setOperator("==");
column1p3.setHeader("state");
final ConditionCol52 column2p3 = new ConditionCol52();
column2p3.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL);
column2p3.setFactField("country");
column2p3.setOperator("==");
column2p3.setHeader("country");
modelSynchronizer.appendColumn(pattern3,
column1p3);
modelSynchronizer.appendColumn(pattern3,
column2p3);
modelSynchronizer.appendRow();
uiModel.setCell(0,
2,
new BaseGridCellValue<Integer>(45));
uiModel.setCell(0,
3,
new BaseGridCellValue<String>("Smurf"));
uiModel.setCell(0,
4,
new BaseGridCellValue<String>("NY"));
uiModel.setCell(0,
5,
new BaseGridCellValue<String>("America"));
uiModel.setCell(0,
6,
new BaseGridCellValue<String>("Essex"));
uiModel.setCell(0,
7,
new BaseGridCellValue<String>("England"));
assertEquals(3,
model.getPatterns().size());
final List<ConditionCol52> conditionColumns1_1p1 = model.getPatterns().get(0).getChildColumns();
assertEquals(column1p1,
conditionColumns1_1p1.get(0));
assertEquals(column2p1,
conditionColumns1_1p1.get(1));
assertEquals(45,
model.getData().get(0).get(2).getNumericValue());
assertEquals("Smurf",
model.getData().get(0).get(3).getStringValue());
final List<ConditionCol52> conditionColumns1_1p2 = model.getPatterns().get(1).getChildColumns();
assertEquals(column1p2,
conditionColumns1_1p2.get(0));
assertEquals(column2p2,
conditionColumns1_1p2.get(1));
assertEquals("NY",
model.getData().get(0).get(4).getStringValue());
assertEquals("America",
model.getData().get(0).get(5).getStringValue());
final List<ConditionCol52> conditionColumns1_1p3 = model.getPatterns().get(2).getChildColumns();
assertEquals(column1p3,
conditionColumns1_1p3.get(0));
assertEquals(column2p3,
conditionColumns1_1p3.get(1));
assertEquals("Essex",
model.getData().get(0).get(6).getStringValue());
assertEquals("England",
model.getData().get(0).get(7).getStringValue());
assertEquals(8,
uiModel.getColumns().size());
final GridColumn<?> uiModelColumn1_1 = uiModel.getColumns().get(2);
final GridColumn<?> uiModelColumn2_1 = uiModel.getColumns().get(3);
final GridColumn<?> uiModelColumn3_1 = uiModel.getColumns().get(4);
final GridColumn<?> uiModelColumn4_1 = uiModel.getColumns().get(5);
final GridColumn<?> uiModelColumn5_1 = uiModel.getColumns().get(6);
final GridColumn<?> uiModelColumn6_1 = uiModel.getColumns().get(7);
assertEquals("$a : Applicant",
uiModelColumn1_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$a : Applicant",
uiModelColumn2_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$d : Address",
uiModelColumn3_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$d : Address",
uiModelColumn4_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$d2 : Address",
uiModelColumn5_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$d2 : Address",
uiModelColumn6_1.getHeaderMetaData().get(0).getTitle());
assertTrue(uiModelColumn1_1 instanceof IntegerUiColumn);
assertTrue(uiModelColumn2_1 instanceof StringUiColumn);
assertTrue(uiModelColumn3_1 instanceof StringUiColumn);
assertTrue(uiModelColumn4_1 instanceof StringUiColumn);
assertTrue(uiModelColumn5_1 instanceof StringUiColumn);
assertTrue(uiModelColumn6_1 instanceof StringUiColumn);
assertEquals(2,
uiModelColumn1_1.getIndex());
assertEquals(3,
uiModelColumn2_1.getIndex());
assertEquals(4,
uiModelColumn3_1.getIndex());
assertEquals(5,
uiModelColumn4_1.getIndex());
assertEquals(6,
uiModelColumn5_1.getIndex());
assertEquals(7,
uiModelColumn6_1.getIndex());
assertEquals(45,
uiModel.getRow(0).getCells().get(uiModelColumn1_1.getIndex()).getValue().getValue());
assertEquals("Smurf",
uiModel.getRow(0).getCells().get(uiModelColumn2_1.getIndex()).getValue().getValue());
assertEquals("NY",
uiModel.getRow(0).getCells().get(uiModelColumn3_1.getIndex()).getValue().getValue());
assertEquals("America",
uiModel.getRow(0).getCells().get(uiModelColumn4_1.getIndex()).getValue().getValue());
assertEquals("Essex",
uiModel.getRow(0).getCells().get(uiModelColumn5_1.getIndex()).getValue().getValue());
assertEquals("England",
uiModel.getRow(0).getCells().get(uiModelColumn6_1.getIndex()).getValue().getValue());
uiModel.moveColumnsTo(4,
new ArrayList<GridColumn<?>>() {{
add(uiModelColumn5_1);
add(uiModelColumn6_1);
}});
assertEquals(3,
model.getPatterns().size());
final List<ConditionCol52> conditionColumns1_2p1 = model.getPatterns().get(0).getChildColumns();
assertEquals(column1p1,
conditionColumns1_2p1.get(0));
assertEquals(column2p1,
conditionColumns1_2p1.get(1));
assertEquals(45,
model.getData().get(0).get(2).getNumericValue());
assertEquals("Smurf",
model.getData().get(0).get(3).getStringValue());
final List<ConditionCol52> conditionColumns1_2p3 = model.getPatterns().get(1).getChildColumns();
assertEquals(column1p3,
conditionColumns1_2p3.get(0));
assertEquals(column2p3,
conditionColumns1_2p3.get(1));
assertEquals("Essex",
model.getData().get(0).get(4).getStringValue());
assertEquals("England",
model.getData().get(0).get(5).getStringValue());
final List<ConditionCol52> conditionColumns1_2p2 = model.getPatterns().get(2).getChildColumns();
assertEquals(column1p2,
conditionColumns1_2p2.get(0));
assertEquals(column2p2,
conditionColumns1_2p2.get(1));
assertEquals("NY",
model.getData().get(0).get(6).getStringValue());
assertEquals("America",
model.getData().get(0).get(7).getStringValue());
assertEquals(8,
uiModel.getColumns().size());
final GridColumn<?> uiModelColumn1_2 = uiModel.getColumns().get(2);
final GridColumn<?> uiModelColumn2_2 = uiModel.getColumns().get(3);
final GridColumn<?> uiModelColumn3_2 = uiModel.getColumns().get(4);
final GridColumn<?> uiModelColumn4_2 = uiModel.getColumns().get(5);
final GridColumn<?> uiModelColumn5_2 = uiModel.getColumns().get(6);
final GridColumn<?> uiModelColumn6_2 = uiModel.getColumns().get(7);
assertEquals("$a : Applicant",
uiModelColumn1_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$a : Applicant",
uiModelColumn2_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$d2 : Address",
uiModelColumn3_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$d2 : Address",
uiModelColumn4_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$d : Address",
uiModelColumn5_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$d : Address",
uiModelColumn6_2.getHeaderMetaData().get(0).getTitle());
assertTrue(uiModelColumn1_2 instanceof IntegerUiColumn);
assertTrue(uiModelColumn2_2 instanceof StringUiColumn);
assertTrue(uiModelColumn3_2 instanceof StringUiColumn);
assertTrue(uiModelColumn4_2 instanceof StringUiColumn);
assertTrue(uiModelColumn5_2 instanceof StringUiColumn);
assertTrue(uiModelColumn6_2 instanceof StringUiColumn);
assertEquals(2,
uiModelColumn1_2.getIndex());
assertEquals(3,
uiModelColumn2_2.getIndex());
assertEquals(6,
uiModelColumn3_2.getIndex());
assertEquals(7,
uiModelColumn4_2.getIndex());
assertEquals(4,
uiModelColumn5_2.getIndex());
assertEquals(5,
uiModelColumn6_2.getIndex());
assertEquals(45,
uiModel.getRow(0).getCells().get(uiModelColumn1_2.getIndex()).getValue().getValue());
assertEquals("Smurf",
uiModel.getRow(0).getCells().get(uiModelColumn2_2.getIndex()).getValue().getValue());
assertEquals("Essex",
uiModel.getRow(0).getCells().get(uiModelColumn3_2.getIndex()).getValue().getValue());
assertEquals("England",
uiModel.getRow(0).getCells().get(uiModelColumn4_2.getIndex()).getValue().getValue());
assertEquals("NY",
uiModel.getRow(0).getCells().get(uiModelColumn5_2.getIndex()).getValue().getValue());
assertEquals("America",
uiModel.getRow(0).getCells().get(uiModelColumn6_2.getIndex()).getValue().getValue());
}
@Test
public void testMoveColumnsTo_MoveRight() throws ModelSynchronizer.MoveColumnVetoException {
final Pattern52 pattern1 = boundApplicantPattern("$a");
final ConditionCol52 column1p1 = ageEqualsCondition();
final ConditionCol52 column2p1 = nameEqualsCondition();
modelSynchronizer.appendColumn(pattern1,
column1p1);
modelSynchronizer.appendColumn(pattern1,
column2p1);
final Pattern52 pattern2 = boundAddressPattern("$d");
final ConditionCol52 column1p2 = new ConditionCol52();
column1p2.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL);
column1p2.setFactField("state");
column1p2.setOperator("==");
column1p2.setHeader("state");
final ConditionCol52 column2p2 = new ConditionCol52();
column2p2.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL);
column2p2.setFactField("country");
column2p2.setOperator("==");
column2p2.setHeader("country");
modelSynchronizer.appendColumn(pattern2,
column1p2);
modelSynchronizer.appendColumn(pattern2,
column2p2);
modelSynchronizer.appendRow();
uiModel.setCell(0,
2,
new BaseGridCellValue<Integer>(45));
uiModel.setCell(0,
3,
new BaseGridCellValue<String>("Smurf"));
uiModel.setCell(0,
4,
new BaseGridCellValue<String>("NY"));
uiModel.setCell(0,
5,
new BaseGridCellValue<String>("America"));
assertEquals(2,
model.getPatterns().size());
final List<ConditionCol52> conditionColumns1_1p1 = model.getPatterns().get(0).getChildColumns();
assertEquals(column1p1,
conditionColumns1_1p1.get(0));
assertEquals(column2p1,
conditionColumns1_1p1.get(1));
assertEquals(45,
model.getData().get(0).get(2).getNumericValue());
assertEquals("Smurf",
model.getData().get(0).get(3).getStringValue());
final List<ConditionCol52> conditionColumns1_1p2 = model.getPatterns().get(1).getChildColumns();
assertEquals(column1p2,
conditionColumns1_1p2.get(0));
assertEquals(column2p2,
conditionColumns1_1p2.get(1));
assertEquals("NY",
model.getData().get(0).get(4).getStringValue());
assertEquals("America",
model.getData().get(0).get(5).getStringValue());
assertEquals(6,
uiModel.getColumns().size());
final GridColumn<?> uiModelColumn1_1 = uiModel.getColumns().get(2);
final GridColumn<?> uiModelColumn2_1 = uiModel.getColumns().get(3);
final GridColumn<?> uiModelColumn3_1 = uiModel.getColumns().get(4);
final GridColumn<?> uiModelColumn4_1 = uiModel.getColumns().get(5);
assertEquals("$a : Applicant",
uiModelColumn1_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$a : Applicant",
uiModelColumn2_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$d : Address",
uiModelColumn3_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$d : Address",
uiModelColumn4_1.getHeaderMetaData().get(0).getTitle());
assertTrue(uiModelColumn1_1 instanceof IntegerUiColumn);
assertTrue(uiModelColumn2_1 instanceof StringUiColumn);
assertTrue(uiModelColumn3_1 instanceof StringUiColumn);
assertTrue(uiModelColumn4_1 instanceof StringUiColumn);
assertEquals(2,
uiModelColumn1_1.getIndex());
assertEquals(3,
uiModelColumn2_1.getIndex());
assertEquals(4,
uiModelColumn3_1.getIndex());
assertEquals(5,
uiModelColumn4_1.getIndex());
assertEquals(45,
uiModel.getRow(0).getCells().get(uiModelColumn1_1.getIndex()).getValue().getValue());
assertEquals("Smurf",
uiModel.getRow(0).getCells().get(uiModelColumn2_1.getIndex()).getValue().getValue());
assertEquals("NY",
uiModel.getRow(0).getCells().get(uiModelColumn3_1.getIndex()).getValue().getValue());
assertEquals("America",
uiModel.getRow(0).getCells().get(uiModelColumn4_1.getIndex()).getValue().getValue());
// The target column index is the right-most of the target pattern. This
// index is provided by wires-grid's at runtime when dragging blocked columns.
uiModel.moveColumnsTo(5,
new ArrayList<GridColumn<?>>() {{
add(uiModelColumn1_1);
add(uiModelColumn2_1);
}});
assertEquals(2,
model.getPatterns().size());
final List<ConditionCol52> conditionColumns1_2p2 = model.getPatterns().get(0).getChildColumns();
assertEquals(column1p2,
conditionColumns1_2p2.get(0));
assertEquals(column2p2,
conditionColumns1_2p2.get(1));
assertEquals("NY",
model.getData().get(0).get(2).getStringValue());
assertEquals("America",
model.getData().get(0).get(3).getStringValue());
final List<ConditionCol52> conditionColumns1_2p1 = model.getPatterns().get(1).getChildColumns();
assertEquals(column1p1,
conditionColumns1_2p1.get(0));
assertEquals(column2p1,
conditionColumns1_2p1.get(1));
assertEquals(45,
model.getData().get(0).get(4).getNumericValue());
assertEquals("Smurf",
model.getData().get(0).get(5).getStringValue());
assertEquals(6,
uiModel.getColumns().size());
final GridColumn<?> uiModelColumn1_2 = uiModel.getColumns().get(2);
final GridColumn<?> uiModelColumn2_2 = uiModel.getColumns().get(3);
final GridColumn<?> uiModelColumn3_2 = uiModel.getColumns().get(4);
final GridColumn<?> uiModelColumn4_2 = uiModel.getColumns().get(5);
assertEquals("$d : Address",
uiModelColumn1_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$d : Address",
uiModelColumn2_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$a : Applicant",
uiModelColumn3_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$a : Applicant",
uiModelColumn4_2.getHeaderMetaData().get(0).getTitle());
assertTrue(uiModelColumn1_2 instanceof StringUiColumn);
assertTrue(uiModelColumn2_2 instanceof StringUiColumn);
assertTrue(uiModelColumn3_2 instanceof IntegerUiColumn);
assertTrue(uiModelColumn4_2 instanceof StringUiColumn);
assertEquals(4,
uiModelColumn1_2.getIndex());
assertEquals(5,
uiModelColumn2_2.getIndex());
assertEquals(2,
uiModelColumn3_2.getIndex());
assertEquals(3,
uiModelColumn4_2.getIndex());
assertEquals("NY",
uiModel.getRow(0).getCells().get(uiModelColumn1_2.getIndex()).getValue().getValue());
assertEquals("America",
uiModel.getRow(0).getCells().get(uiModelColumn2_2.getIndex()).getValue().getValue());
assertEquals(45,
uiModel.getRow(0).getCells().get(uiModelColumn3_2.getIndex()).getValue().getValue());
assertEquals("Smurf",
uiModel.getRow(0).getCells().get(uiModelColumn4_2.getIndex()).getValue().getValue());
}
@Test
public void testMoveColumnsTo_MoveRight_MidPoint() throws ModelSynchronizer.MoveColumnVetoException {
final Pattern52 pattern1 = boundApplicantPattern("$a");
final ConditionCol52 column1p1 = ageEqualsCondition();
final ConditionCol52 column2p1 = nameEqualsCondition();
modelSynchronizer.appendColumn(pattern1,
column1p1);
modelSynchronizer.appendColumn(pattern1,
column2p1);
final Pattern52 pattern2 = boundAddressPattern("$d");
final ConditionCol52 column1p2 = new ConditionCol52();
column1p2.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL);
column1p2.setFactField("state");
column1p2.setOperator("==");
column1p2.setHeader("state");
final ConditionCol52 column2p2 = new ConditionCol52();
column2p2.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL);
column2p2.setFactField("country");
column2p2.setOperator("==");
column2p2.setHeader("country");
modelSynchronizer.appendColumn(pattern2,
column1p2);
modelSynchronizer.appendColumn(pattern2,
column2p2);
final Pattern52 pattern3 = boundAddressPattern("$d2");
final ConditionCol52 column1p3 = new ConditionCol52();
column1p3.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL);
column1p3.setFactField("state");
column1p3.setOperator("==");
column1p3.setHeader("state");
final ConditionCol52 column2p3 = new ConditionCol52();
column2p3.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL);
column2p3.setFactField("country");
column2p3.setOperator("==");
column2p3.setHeader("country");
modelSynchronizer.appendColumn(pattern3,
column1p3);
modelSynchronizer.appendColumn(pattern3,
column2p3);
modelSynchronizer.appendRow();
uiModel.setCell(0,
2,
new BaseGridCellValue<Integer>(45));
uiModel.setCell(0,
3,
new BaseGridCellValue<String>("Smurf"));
uiModel.setCell(0,
4,
new BaseGridCellValue<String>("NY"));
uiModel.setCell(0,
5,
new BaseGridCellValue<String>("America"));
uiModel.setCell(0,
6,
new BaseGridCellValue<String>("Essex"));
uiModel.setCell(0,
7,
new BaseGridCellValue<String>("England"));
assertEquals(3,
model.getPatterns().size());
final List<ConditionCol52> conditionColumns1_1p1 = model.getPatterns().get(0).getChildColumns();
assertEquals(column1p1,
conditionColumns1_1p1.get(0));
assertEquals(column2p1,
conditionColumns1_1p1.get(1));
assertEquals(45,
model.getData().get(0).get(2).getNumericValue());
assertEquals("Smurf",
model.getData().get(0).get(3).getStringValue());
final List<ConditionCol52> conditionColumns1_1p2 = model.getPatterns().get(1).getChildColumns();
assertEquals(column1p2,
conditionColumns1_1p2.get(0));
assertEquals(column2p2,
conditionColumns1_1p2.get(1));
assertEquals("NY",
model.getData().get(0).get(4).getStringValue());
assertEquals("America",
model.getData().get(0).get(5).getStringValue());
final List<ConditionCol52> conditionColumns1_1p3 = model.getPatterns().get(2).getChildColumns();
assertEquals(column1p3,
conditionColumns1_1p3.get(0));
assertEquals(column2p3,
conditionColumns1_1p3.get(1));
assertEquals("Essex",
model.getData().get(0).get(6).getStringValue());
assertEquals("England",
model.getData().get(0).get(7).getStringValue());
assertEquals(8,
uiModel.getColumns().size());
final GridColumn<?> uiModelColumn1_1 = uiModel.getColumns().get(2);
final GridColumn<?> uiModelColumn2_1 = uiModel.getColumns().get(3);
final GridColumn<?> uiModelColumn3_1 = uiModel.getColumns().get(4);
final GridColumn<?> uiModelColumn4_1 = uiModel.getColumns().get(5);
final GridColumn<?> uiModelColumn5_1 = uiModel.getColumns().get(6);
final GridColumn<?> uiModelColumn6_1 = uiModel.getColumns().get(7);
assertEquals("$a : Applicant",
uiModelColumn1_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$a : Applicant",
uiModelColumn2_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$d : Address",
uiModelColumn3_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$d : Address",
uiModelColumn4_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$d2 : Address",
uiModelColumn5_1.getHeaderMetaData().get(0).getTitle());
assertEquals("$d2 : Address",
uiModelColumn6_1.getHeaderMetaData().get(0).getTitle());
assertTrue(uiModelColumn1_1 instanceof IntegerUiColumn);
assertTrue(uiModelColumn2_1 instanceof StringUiColumn);
assertTrue(uiModelColumn3_1 instanceof StringUiColumn);
assertTrue(uiModelColumn4_1 instanceof StringUiColumn);
assertTrue(uiModelColumn5_1 instanceof StringUiColumn);
assertTrue(uiModelColumn6_1 instanceof StringUiColumn);
assertEquals(2,
uiModelColumn1_1.getIndex());
assertEquals(3,
uiModelColumn2_1.getIndex());
assertEquals(4,
uiModelColumn3_1.getIndex());
assertEquals(5,
uiModelColumn4_1.getIndex());
assertEquals(6,
uiModelColumn5_1.getIndex());
assertEquals(7,
uiModelColumn6_1.getIndex());
assertEquals(45,
uiModel.getRow(0).getCells().get(uiModelColumn1_1.getIndex()).getValue().getValue());
assertEquals("Smurf",
uiModel.getRow(0).getCells().get(uiModelColumn2_1.getIndex()).getValue().getValue());
assertEquals("NY",
uiModel.getRow(0).getCells().get(uiModelColumn3_1.getIndex()).getValue().getValue());
assertEquals("America",
uiModel.getRow(0).getCells().get(uiModelColumn4_1.getIndex()).getValue().getValue());
assertEquals("Essex",
uiModel.getRow(0).getCells().get(uiModelColumn5_1.getIndex()).getValue().getValue());
assertEquals("England",
uiModel.getRow(0).getCells().get(uiModelColumn6_1.getIndex()).getValue().getValue());
// The target column index is the right-most of the target pattern. This
// index is provided by wires-grid's at runtime when dragging blocked columns.
uiModel.moveColumnsTo(5,
new ArrayList<GridColumn<?>>() {{
add(uiModelColumn1_1);
add(uiModelColumn2_1);
}});
assertEquals(3,
model.getPatterns().size());
final List<ConditionCol52> conditionColumns1_2p2 = model.getPatterns().get(0).getChildColumns();
assertEquals(column1p2,
conditionColumns1_2p2.get(0));
assertEquals(column2p2,
conditionColumns1_2p2.get(1));
assertEquals("NY",
model.getData().get(0).get(2).getStringValue());
assertEquals("America",
model.getData().get(0).get(3).getStringValue());
final List<ConditionCol52> conditionColumns1_2p1 = model.getPatterns().get(1).getChildColumns();
assertEquals(column1p1,
conditionColumns1_2p1.get(0));
assertEquals(column2p1,
conditionColumns1_2p1.get(1));
assertEquals(45,
model.getData().get(0).get(4).getNumericValue());
assertEquals("Smurf",
model.getData().get(0).get(5).getStringValue());
final List<ConditionCol52> conditionColumns1_2p3 = model.getPatterns().get(2).getChildColumns();
assertEquals(column1p3,
conditionColumns1_2p3.get(0));
assertEquals(column2p3,
conditionColumns1_2p3.get(1));
assertEquals("Essex",
model.getData().get(0).get(6).getStringValue());
assertEquals("England",
model.getData().get(0).get(7).getStringValue());
assertEquals(8,
uiModel.getColumns().size());
final GridColumn<?> uiModelColumn1_2 = uiModel.getColumns().get(2);
final GridColumn<?> uiModelColumn2_2 = uiModel.getColumns().get(3);
final GridColumn<?> uiModelColumn3_2 = uiModel.getColumns().get(4);
final GridColumn<?> uiModelColumn4_2 = uiModel.getColumns().get(5);
final GridColumn<?> uiModelColumn5_2 = uiModel.getColumns().get(6);
final GridColumn<?> uiModelColumn6_2 = uiModel.getColumns().get(7);
assertEquals("$d : Address",
uiModelColumn1_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$d : Address",
uiModelColumn2_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$a : Applicant",
uiModelColumn3_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$a : Applicant",
uiModelColumn4_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$d2 : Address",
uiModelColumn5_2.getHeaderMetaData().get(0).getTitle());
assertEquals("$d2 : Address",
uiModelColumn6_2.getHeaderMetaData().get(0).getTitle());
assertTrue(uiModelColumn1_2 instanceof StringUiColumn);
assertTrue(uiModelColumn2_2 instanceof StringUiColumn);
assertTrue(uiModelColumn3_2 instanceof IntegerUiColumn);
assertTrue(uiModelColumn4_2 instanceof StringUiColumn);
assertTrue(uiModelColumn5_2 instanceof StringUiColumn);
assertTrue(uiModelColumn6_2 instanceof StringUiColumn);
assertEquals(4,
uiModelColumn1_2.getIndex());
assertEquals(5,
uiModelColumn2_2.getIndex());
assertEquals(2,
uiModelColumn3_2.getIndex());
assertEquals(3,
uiModelColumn4_2.getIndex());
assertEquals(6,
uiModelColumn5_2.getIndex());
assertEquals(7,
uiModelColumn6_2.getIndex());
assertEquals("NY",
uiModel.getRow(0).getCells().get(uiModelColumn1_2.getIndex()).getValue().getValue());
assertEquals("America",
uiModel.getRow(0).getCells().get(uiModelColumn2_2.getIndex()).getValue().getValue());
assertEquals(45,
uiModel.getRow(0).getCells().get(uiModelColumn3_2.getIndex()).getValue().getValue());
assertEquals("Smurf",
uiModel.getRow(0).getCells().get(uiModelColumn4_2.getIndex()).getValue().getValue());
assertEquals("Essex",
uiModel.getRow(0).getCells().get(uiModelColumn5_2.getIndex()).getValue().getValue());
assertEquals("England",
uiModel.getRow(0).getCells().get(uiModelColumn6_2.getIndex()).getValue().getValue());
}
}