/* * 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.guided.dtable.shared.model.BRLConditionColumn; import org.drools.workbench.models.guided.dtable.shared.model.BRLConditionVariableColumn; import org.drools.workbench.models.guided.dtable.shared.model.BaseColumnFieldDiff; import org.drools.workbench.models.guided.dtable.shared.model.CompositeColumn; 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.IntegerUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.LongUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.StringUiColumn; 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 BRLConditionColumnSynchronizerTest 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("salary", Long.class.getName(), ModelField.FIELD_CLASS_TYPE.REGULAR_CLASS, ModelField.FIELD_ORIGIN.SELF, FieldAccessorsAndMutators.ACCESSOR, DataType.TYPE_NUMERIC_LONG), new ModelField("name", String.class.getName(), ModelField.FIELD_CLASS_TYPE.REGULAR_CLASS, ModelField.FIELD_ORIGIN.SELF, FieldAccessorsAndMutators.ACCESSOR, DataType.TYPE_STRING)}); put("Address", new ModelField[]{ new ModelField("this", "Address", ModelField.FIELD_CLASS_TYPE.REGULAR_CLASS, ModelField.FIELD_ORIGIN.SELF, FieldAccessorsAndMutators.ACCESSOR, "Address"), new ModelField("country", String.class.getName(), ModelField.FIELD_CLASS_TYPE.REGULAR_CLASS, ModelField.FIELD_ORIGIN.SELF, FieldAccessorsAndMutators.ACCESSOR, DataType.TYPE_STRING)}); } } ); return oracle; } @Test public void testAppend1() throws ModelSynchronizer.MoveColumnVetoException { //Single Column, single variable final BRLConditionColumn column = new BRLConditionColumn(); 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); assertEquals(3, model.getExpandedColumns().size()); assertEquals(1, model.getConditions().size()); assertEquals(3, uiModel.getColumns().size()); assertTrue(uiModel.getColumns().get(2) instanceof IntegerUiColumn); assertEquals(2, uiModel.getColumns().get(2).getHeaderMetaData().size()); assertEquals("$age", uiModel.getColumns().get(2).getHeaderMetaData().get(1).getTitle()); } @Test public void testAppend2() throws ModelSynchronizer.MoveColumnVetoException { //Single Column, multiple variables 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); assertEquals(4, model.getExpandedColumns().size()); assertEquals(1, model.getConditions().size()); assertEquals(4, uiModel.getColumns().size()); assertTrue(uiModel.getColumns().get(2) instanceof IntegerUiColumn); assertTrue(uiModel.getColumns().get(3) instanceof StringUiColumn); assertEquals(2, uiModel.getColumns().get(2).getHeaderMetaData().size()); assertEquals("$age", uiModel.getColumns().get(2).getHeaderMetaData().get(1).getTitle()); assertEquals(2, uiModel.getColumns().get(3).getHeaderMetaData().size()); assertEquals("$name", uiModel.getColumns().get(3).getHeaderMetaData().get(1).getTitle()); } @Test public void testUpdate1() throws ModelSynchronizer.MoveColumnVetoException { //Single Column, single variable final BRLConditionColumn column = spy(new BRLConditionColumn()); 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); assertEquals(3, model.getExpandedColumns().size()); assertEquals(1, model.getConditions().size()); assertEquals(3, uiModel.getColumns().size()); assertTrue(uiModel.getColumns().get(2) instanceof IntegerUiColumn); assertEquals(2, uiModel.getColumns().get(2).getHeaderMetaData().size()); assertEquals("$age", uiModel.getColumns().get(2).getHeaderMetaData().get(1).getTitle()); 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"); List<BaseColumnFieldDiff> diffs = modelSynchronizer.updateColumn(column, edited); assertEquals(5, // header, hide, field name, field type, binding diffs.size()); verify(column).diff(edited); assertEquals(3, model.getExpandedColumns().size()); assertEquals(1, model.getConditions().size()); assertEquals(3, uiModel.getColumns().size()); assertTrue(uiModel.getColumns().get(2) instanceof StringUiColumn); assertEquals("updated", uiModel.getColumns().get(2).getHeaderMetaData().get(0).getTitle()); assertEquals(false, uiModel.getColumns().get(2).isVisible()); assertEquals(2, uiModel.getColumns().get(2).getHeaderMetaData().size()); assertEquals("$name", uiModel.getColumns().get(2).getHeaderMetaData().get(1).getTitle()); } @Test public void testUpdate2() throws ModelSynchronizer.MoveColumnVetoException { //Single Column, multiple variables final BRLConditionColumn column = spy(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); assertEquals(4, model.getExpandedColumns().size()); assertEquals(1, model.getConditions().size()); assertEquals(4, uiModel.getColumns().size()); assertTrue(uiModel.getColumns().get(2) instanceof IntegerUiColumn); 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"); 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(3, model.getExpandedColumns().size()); assertEquals(1, model.getConditions().size()); assertEquals(3, uiModel.getColumns().size()); assertTrue(uiModel.getColumns().get(2) instanceof StringUiColumn); assertEquals("updated", uiModel.getColumns().get(2).getHeaderMetaData().get(0).getTitle()); assertEquals(false, uiModel.getColumns().get(2).isVisible()); assertEquals("$name", uiModel.getColumns().get(2).getHeaderMetaData().get(1).getTitle()); } @Test public void testUpdate3() throws ModelSynchronizer.MoveColumnVetoException { //Single Column, multiple variables final BRLConditionColumn column = spy(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); assertEquals(4, model.getExpandedColumns().size()); assertEquals(1, model.getConditions().size()); assertEquals(4, uiModel.getColumns().size()); assertTrue(uiModel.getColumns().get(2) instanceof IntegerUiColumn); assertTrue(uiModel.getColumns().get(3) instanceof StringUiColumn); assertEquals("$age", uiModel.getColumns().get(2).getHeaderMetaData().get(1).getTitle()); final BRLConditionColumn edited = new BRLConditionColumn(); final BRLConditionVariableColumn editedColumnV0 = new BRLConditionVariableColumn("$s", DataType.TYPE_NUMERIC_LONG, "Applicant", "salary"); 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(3, model.getExpandedColumns().size()); assertEquals(1, model.getConditions().size()); assertEquals(3, uiModel.getColumns().size()); assertTrue(uiModel.getColumns().get(2) instanceof LongUiColumn); assertEquals("updated", uiModel.getColumns().get(2).getHeaderMetaData().get(0).getTitle()); assertEquals(false, uiModel.getColumns().get(2).isVisible()); assertEquals("$s", uiModel.getColumns().get(2).getHeaderMetaData().get(1).getTitle()); } @Test public void testDelete() throws ModelSynchronizer.MoveColumnVetoException { 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); assertEquals(4, model.getExpandedColumns().size()); assertEquals(1, model.getConditions().size()); assertEquals(4, uiModel.getColumns().size()); modelSynchronizer.deleteColumn(column); assertEquals(2, model.getExpandedColumns().size()); assertEquals(0, model.getConditions().size()); assertEquals(2, uiModel.getColumns().size()); } @Test public void testMoveBRLConditionVariableColumnTo() throws ModelSynchronizer.MoveColumnVetoException { final CompositeColumn<BRLConditionVariableColumn> column1 = new BRLConditionColumn(); final BRLConditionVariableColumn column1v0 = new BRLConditionVariableColumn("$age", DataType.TYPE_NUMERIC_INTEGER, "Applicant", "age"); column1v0.setHeader("age"); final BRLConditionVariableColumn column1v1 = new BRLConditionVariableColumn("$name", DataType.TYPE_STRING, "Applicant", "name"); column1v1.setHeader("name"); final CompositeColumn<BRLConditionVariableColumn> column2 = new BRLConditionColumn(); final BRLConditionVariableColumn column2v0 = new BRLConditionVariableColumn("$country", DataType.TYPE_STRING, "Address", "country"); column2v0.setHeader("country"); column1.getChildColumns().add(column1v0); column1.getChildColumns().add(column1v1); column2.getChildColumns().add(column2v0); modelSynchronizer.appendColumn(column1); modelSynchronizer.appendColumn(column2); modelSynchronizer.appendRow(); uiModel.setCell(0, 2, new BaseGridCellValue<Integer>(55)); uiModel.setCell(0, 3, new BaseGridCellValue<String>("Smurf")); uiModel.setCell(0, 4, new BaseGridCellValue<String>("Canada")); assertEquals(2, model.getConditions().size()); assertEquals(column1, model.getConditions().get(0)); assertEquals(column2, model.getConditions().get(1)); assertEquals(55, model.getData().get(0).get(2).getNumericValue()); assertEquals("Smurf", model.getData().get(0).get(3).getStringValue()); assertEquals("Canada", 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("age", uiModelColumn1_1.getHeaderMetaData().get(0).getTitle()); assertEquals("name", uiModelColumn2_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(55, uiModel.getRow(0).getCells().get(uiModelColumn1_1.getIndex()).getValue().getValue()); assertEquals("Smurf", uiModel.getRow(0).getCells().get(uiModelColumn2_1.getIndex()).getValue().getValue()); assertEquals("Canada", uiModel.getRow(0).getCells().get(uiModelColumn3_1.getIndex()).getValue().getValue()); uiModel.moveColumnTo(2, uiModelColumn2_1); //The move should have been vetoed and nothing changed assertEquals(2, model.getConditions().size()); assertEquals(column1, model.getConditions().get(0)); assertEquals(column2, model.getConditions().get(1)); assertEquals(55, model.getData().get(0).get(2).getNumericValue()); assertEquals("Smurf", model.getData().get(0).get(3).getStringValue()); assertEquals("Canada", 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("age", uiModelColumn1_2.getHeaderMetaData().get(0).getTitle()); assertEquals("name", uiModelColumn2_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(55, uiModel.getRow(0).getCells().get(uiModelColumn1_2.getIndex()).getValue().getValue()); assertEquals("Smurf", uiModel.getRow(0).getCells().get(uiModelColumn2_2.getIndex()).getValue().getValue()); assertEquals("Canada", uiModel.getRow(0).getCells().get(uiModelColumn3_2.getIndex()).getValue().getValue()); } @Test public void testMoveBRLConditionBlockTo() throws ModelSynchronizer.MoveColumnVetoException { final CompositeColumn<BRLConditionVariableColumn> column1 = new BRLConditionColumn(); final BRLConditionVariableColumn column1v0 = new BRLConditionVariableColumn("$age", DataType.TYPE_NUMERIC_INTEGER, "Applicant", "age"); column1v0.setHeader("age"); final BRLConditionVariableColumn column1v1 = new BRLConditionVariableColumn("$name", DataType.TYPE_STRING, "Applicant", "name"); column1v1.setHeader("name"); column1.getChildColumns().add(column1v0); column1.getChildColumns().add(column1v1); final Pattern52 column2 = new Pattern52(); column2.setFactType("Address"); final ConditionCol52 column2v0 = new ConditionCol52(); column2v0.setBinding("$country"); column2v0.setFactField("country"); column2v0.setFieldType(DataType.TYPE_STRING); column2v0.setHeader("country"); modelSynchronizer.appendColumn(column1); modelSynchronizer.appendColumn(column2, column2v0); modelSynchronizer.appendRow(); uiModel.setCell(0, 2, new BaseGridCellValue<>(55)); uiModel.setCell(0, 3, new BaseGridCellValue<>("Smurf")); uiModel.setCell(0, 4, new BaseGridCellValue<>("Canada")); assertEquals(2, model.getConditions().size()); assertEquals(column1, model.getConditions().get(0)); assertEquals(column2, model.getConditions().get(1)); assertEquals(55, model.getData().get(0).get(2).getNumericValue()); assertEquals("Smurf", model.getData().get(0).get(3).getStringValue()); assertEquals("Canada", 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("age", uiModelColumn1_1.getHeaderMetaData().get(0).getTitle()); assertEquals("name", uiModelColumn2_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(55, uiModel.getRow(0).getCells().get(uiModelColumn1_1.getIndex()).getValue().getValue()); assertEquals("Smurf", uiModel.getRow(0).getCells().get(uiModelColumn2_1.getIndex()).getValue().getValue()); assertEquals("Canada", uiModel.getRow(0).getCells().get(uiModelColumn3_1.getIndex()).getValue().getValue()); uiModel.moveColumnsTo(4, new ArrayList<GridColumn<?>>() {{ add(uiModelColumn1_1); add(uiModelColumn2_1); }} ); assertEquals(2, model.getConditions().size()); assertEquals(column2, model.getConditions().get(0)); assertEquals(column1, model.getConditions().get(1)); assertEquals("Canada", model.getData().get(0).get(2).getStringValue()); assertEquals(55, model.getData().get(0).get(3).getNumericValue()); 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("Address", uiModelColumn1_2.getHeaderMetaData().get(0).getTitle()); assertEquals("age", uiModelColumn2_2.getHeaderMetaData().get(0).getTitle()); assertEquals("name", uiModelColumn3_2.getHeaderMetaData().get(0).getTitle()); assertTrue(uiModelColumn1_2 instanceof StringUiColumn); assertTrue(uiModelColumn2_2 instanceof IntegerUiColumn); assertTrue(uiModelColumn3_2 instanceof StringUiColumn); assertEquals(4, uiModelColumn1_2.getIndex()); assertEquals(2, uiModelColumn2_2.getIndex()); assertEquals(3, uiModelColumn3_2.getIndex()); assertEquals("Canada", uiModel.getRow(0).getCells().get(uiModelColumn1_2.getIndex()).getValue().getValue()); assertEquals(55, 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 testMovePatternBefore() throws ModelSynchronizer.MoveColumnVetoException { final CompositeColumn<BRLConditionVariableColumn> column1 = new BRLConditionColumn(); final BRLConditionVariableColumn column1v0 = new BRLConditionVariableColumn("$age", DataType.TYPE_NUMERIC_INTEGER, "Applicant", "age"); column1v0.setHeader("age"); final BRLConditionVariableColumn column1v1 = new BRLConditionVariableColumn("$name", DataType.TYPE_STRING, "Applicant", "name"); column1v1.setHeader("name"); column1.getChildColumns().add(column1v0); column1.getChildColumns().add(column1v1); final Pattern52 column2 = new Pattern52(); column2.setFactType("Address"); final ConditionCol52 column2v0 = new ConditionCol52(); column2v0.setBinding("$country"); column2v0.setFactField("country"); column2v0.setFieldType(DataType.TYPE_STRING); column2v0.setHeader("country"); modelSynchronizer.appendColumn(column1); modelSynchronizer.appendColumn(column2, column2v0); modelSynchronizer.appendRow(); uiModel.setCell(0, 2, new BaseGridCellValue<>(55)); uiModel.setCell(0, 3, new BaseGridCellValue<>("Smurf")); uiModel.setCell(0, 4, new BaseGridCellValue<>("Canada")); assertEquals(2, model.getConditions().size()); assertEquals(column1, model.getConditions().get(0)); assertEquals(column2, model.getConditions().get(1)); assertEquals(55, model.getData().get(0).get(2).getNumericValue()); assertEquals("Smurf", model.getData().get(0).get(3).getStringValue()); assertEquals("Canada", 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("age", uiModelColumn1_1.getHeaderMetaData().get(0).getTitle()); assertEquals("name", uiModelColumn2_1.getHeaderMetaData().get(0).getTitle()); assertEquals("Address", 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(55, uiModel.getRow(0).getCells().get(uiModelColumn1_1.getIndex()).getValue().getValue()); assertEquals("Smurf", uiModel.getRow(0).getCells().get(uiModelColumn2_1.getIndex()).getValue().getValue()); assertEquals("Canada", uiModel.getRow(0).getCells().get(uiModelColumn3_1.getIndex()).getValue().getValue()); uiModel.moveColumnTo(2, uiModelColumn3_1); assertEquals(2, model.getConditions().size()); assertEquals(column2, model.getConditions().get(0)); assertEquals(column1, model.getConditions().get(1)); assertEquals("Canada", model.getData().get(0).get(2).getStringValue()); assertEquals(55, model.getData().get(0).get(3).getNumericValue()); 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("Address", uiModelColumn1_2.getHeaderMetaData().get(0).getTitle()); assertEquals("age", uiModelColumn2_2.getHeaderMetaData().get(0).getTitle()); assertEquals("name", uiModelColumn3_2.getHeaderMetaData().get(0).getTitle()); assertTrue(uiModelColumn1_2 instanceof StringUiColumn); assertTrue(uiModelColumn2_2 instanceof IntegerUiColumn); assertTrue(uiModelColumn3_2 instanceof StringUiColumn); assertEquals(4, uiModelColumn1_2.getIndex()); assertEquals(2, uiModelColumn2_2.getIndex()); assertEquals(3, uiModelColumn3_2.getIndex()); assertEquals("Canada", uiModel.getRow(0).getCells().get(uiModelColumn1_2.getIndex()).getValue().getValue()); assertEquals(55, 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 testMovePatternAfter() throws ModelSynchronizer.MoveColumnVetoException { final Pattern52 column1 = new Pattern52(); column1.setFactType("Address"); final ConditionCol52 column1v0 = new ConditionCol52(); column1v0.setBinding("$country"); column1v0.setFactField("country"); column1v0.setFieldType(DataType.TYPE_STRING); column1v0.setHeader("country"); final CompositeColumn<BRLConditionVariableColumn> column2 = new BRLConditionColumn(); final BRLConditionVariableColumn column2v0 = new BRLConditionVariableColumn("$age", DataType.TYPE_NUMERIC_INTEGER, "Applicant", "age"); column2v0.setHeader("age"); final BRLConditionVariableColumn column2v1 = new BRLConditionVariableColumn("$name", DataType.TYPE_STRING, "Applicant", "name"); column2v1.setHeader("name"); column2.getChildColumns().add(column2v0); column2.getChildColumns().add(column2v1); modelSynchronizer.appendColumn(column1, column1v0); modelSynchronizer.appendColumn(column2); modelSynchronizer.appendRow(); uiModel.setCell(0, 2, new BaseGridCellValue<>("Canada")); uiModel.setCell(0, 3, new BaseGridCellValue<>(55)); uiModel.setCell(0, 4, new BaseGridCellValue<>("Smurf")); assertEquals(2, model.getConditions().size()); assertEquals(column1, model.getConditions().get(0)); assertEquals(column2, model.getConditions().get(1)); assertEquals("Canada", model.getData().get(0).get(2).getStringValue()); assertEquals(55, model.getData().get(0).get(3).getNumericValue()); 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("Address", uiModelColumn1_1.getHeaderMetaData().get(0).getTitle()); assertEquals("age", uiModelColumn2_1.getHeaderMetaData().get(0).getTitle()); assertEquals("name", uiModelColumn3_1.getHeaderMetaData().get(0).getTitle()); assertTrue(uiModelColumn1_1 instanceof StringUiColumn); assertTrue(uiModelColumn2_1 instanceof IntegerUiColumn); assertTrue(uiModelColumn3_1 instanceof StringUiColumn); assertEquals(2, uiModelColumn1_1.getIndex()); assertEquals(3, uiModelColumn2_1.getIndex()); assertEquals(4, uiModelColumn3_1.getIndex()); assertEquals("Canada", uiModel.getRow(0).getCells().get(uiModelColumn1_1.getIndex()).getValue().getValue()); assertEquals(55, 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.getConditions().size()); assertEquals(column2, model.getConditions().get(0)); assertEquals(column1, model.getConditions().get(1)); assertEquals(55, model.getData().get(0).get(2).getNumericValue()); assertEquals("Smurf", model.getData().get(0).get(3).getStringValue()); assertEquals("Canada", 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("age", uiModelColumn1_2.getHeaderMetaData().get(0).getTitle()); assertEquals("name", uiModelColumn2_2.getHeaderMetaData().get(0).getTitle()); assertEquals("Address", uiModelColumn3_2.getHeaderMetaData().get(0).getTitle()); assertTrue(uiModelColumn1_2 instanceof IntegerUiColumn); assertTrue(uiModelColumn2_2 instanceof StringUiColumn); assertTrue(uiModelColumn3_2 instanceof StringUiColumn); assertEquals(3, uiModelColumn1_2.getIndex()); assertEquals(4, uiModelColumn2_2.getIndex()); assertEquals(2, uiModelColumn3_2.getIndex()); assertEquals(55, uiModel.getRow(0).getCells().get(uiModelColumn1_2.getIndex()).getValue().getValue()); assertEquals("Smurf", uiModel.getRow(0).getCells().get(uiModelColumn2_2.getIndex()).getValue().getValue()); assertEquals("Canada", uiModel.getRow(0).getCells().get(uiModelColumn3_2.getIndex()).getValue().getValue()); } }