@Test public void testMoveColumnsTo_MoveLeft_MidPoint() throws VetoException { 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 $d"); final ConditionCol52 column2p2 = new ConditionCol52(); column2p2.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL); column2p2.setFactField("country"); column2p2.setOperator("=="); column2p2.setHeader("country $d"); 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 $d2"); final ConditionCol52 column2p3 = new ConditionCol52(); column2p3.setConstraintValueType(BaseSingleFieldConstraint.TYPE_LITERAL); column2p3.setFactField("country"); column2p3.setOperator("=="); column2p3.setHeader("country $d2"); modelSynchronizer.appendColumn(pattern3, column1p3); modelSynchronizer.appendColumn(pattern3, column2p3); modelSynchronizer.appendRow(); uiModel.setCellValue(0, 3, new BaseGridCellValue<Integer>(45)); uiModel.setCellValue(0, 4, new BaseGridCellValue<String>("Smurf")); uiModel.setCellValue(0, 5, new BaseGridCellValue<String>("NY")); uiModel.setCellValue(0, 6, new BaseGridCellValue<String>("America")); uiModel.setCellValue(0, 7, new BaseGridCellValue<String>("Essex")); uiModel.setCellValue(0, 8, 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(3).getNumericValue()); assertEquals("Smurf", model.getData().get(0).get(4).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(5).getStringValue()); assertEquals("America", model.getData().get(0).get(6).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(7).getStringValue()); assertEquals("England", model.getData().get(0).get(8).getStringValue()); assertEquals(9, uiModel.getColumns().size()); final GridColumn<?> uiModelColumn1_1 = uiModel.getColumns().get(3); final GridColumn<?> uiModelColumn2_1 = uiModel.getColumns().get(4); final GridColumn<?> uiModelColumn3_1 = uiModel.getColumns().get(5); final GridColumn<?> uiModelColumn4_1 = uiModel.getColumns().get(6); final GridColumn<?> uiModelColumn5_1 = uiModel.getColumns().get(7); final GridColumn<?> uiModelColumn6_1 = uiModel.getColumns().get(8); 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(3, uiModelColumn1_1.getIndex()); assertEquals(4, uiModelColumn2_1.getIndex()); assertEquals(5, uiModelColumn3_1.getIndex()); assertEquals(6, uiModelColumn4_1.getIndex()); assertEquals(7, uiModelColumn5_1.getIndex()); assertEquals(8, 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(5, 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(3).getNumericValue()); assertEquals("Smurf", model.getData().get(0).get(4).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(5).getStringValue()); assertEquals("England", model.getData().get(0).get(6).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(7).getStringValue()); assertEquals("America", model.getData().get(0).get(8).getStringValue()); assertEquals(9, uiModel.getColumns().size()); final GridColumn<?> uiModelColumn1_2 = uiModel.getColumns().get(3); final GridColumn<?> uiModelColumn2_2 = uiModel.getColumns().get(4); final GridColumn<?> uiModelColumn3_2 = uiModel.getColumns().get(5); final GridColumn<?> uiModelColumn4_2 = uiModel.getColumns().get(6); final GridColumn<?> uiModelColumn5_2 = uiModel.getColumns().get(7); final GridColumn<?> uiModelColumn6_2 = uiModel.getColumns().get(8); 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(3, uiModelColumn1_2.getIndex()); assertEquals(4, uiModelColumn2_2.getIndex()); assertEquals(7, uiModelColumn3_2.getIndex()); assertEquals(8, uiModelColumn4_2.getIndex()); assertEquals(5, uiModelColumn5_2.getIndex()); assertEquals(6, 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()); }
@Override public void moveColumnsTo(final List<MoveColumnToMetaData> metaData) throws VetoException { if (!handlesMoveColumnsTo(metaData)) { return; } if (isPattern(metaData)) { doMovePattern(metaData); } else if (isSingleCondition(metaData)) { doMoveSingleCondition(metaData.get(0)); } else { throw new ModelSynchronizer.MoveVetoException(); } }
ConditionColumnSynchronizer extends BaseColumnSynchronizer<PatternConditionMetaData, PatternConditionMetaData, BaseColumnSynchronizer.ColumnMetaData> { @Override public void moveColumnsTo(final List<MoveColumnToMetaData> metaData) throws VetoException { if (!handlesMoveColumnsTo(metaData)) { return; } if (isPattern(metaData)) { doMovePattern(metaData); } else if (isSingleCondition(metaData)) { doMoveSingleCondition(metaData.get(0)); } else { throw new ModelSynchronizer.MoveVetoException(); } } }
ConditionColumnSynchronizer extends BaseColumnSynchronizer<PatternConditionMetaData, PatternConditionMetaData, BaseColumnSynchronizer.ColumnMetaData> { @Override public void moveColumnsTo(final List<MoveColumnToMetaData> metaData) throws VetoException { if (!handlesMoveColumnsTo(metaData)) { return; } if (isPattern(metaData)) { doMovePattern(metaData); } else if (isSingleCondition(metaData)) { doMoveSingleCondition(metaData.get(0)); } else { throw new ModelSynchronizer.MoveVetoException(); } }  }
ConditionColumnSynchronizer extends BaseColumnSynchronizer<PatternConditionMetaData, PatternConditionMetaData, BaseColumnSynchronizer.ColumnMetaData> { @Override public void moveColumnsTo(final List<MoveColumnToMetaData> metaData) throws VetoException { if (!handlesMoveColumnsTo(metaData)) { return; } if (isPattern(metaData)) { doMovePattern(metaData); } else if (isSingleCondition(metaData)) { doMoveSingleCondition(metaData.get(0)); } else { throw new ModelSynchronizer.MoveVetoException(); } }  @Override boolean handlesAppend(final MetaData metaData); @Override void append(final PatternConditionMetaData metaData); @Override boolean handlesUpdate(final MetaData metaData); @Override List<BaseColumnFieldDiff> update(final PatternConditionMetaData originalMetaData,
                                            final PatternConditionMetaData editedMetaData); @Override boolean handlesDelete(final MetaData metaData); @Override void delete(final ColumnMetaData metaData); @Override boolean handlesMoveColumnsTo(final List<? extends MetaData> metaData); @Override void moveColumnsTo(final List<MoveColumnToMetaData> metaData); }
ConditionColumnSynchronizer extends BaseColumnSynchronizer<PatternConditionMetaData, PatternConditionMetaData, BaseColumnSynchronizer.ColumnMetaData> { @Override public void moveColumnsTo(final List<MoveColumnToMetaData> metaData) throws VetoException { if (!handlesMoveColumnsTo(metaData)) { return; } if (isPattern(metaData)) { doMovePattern(metaData); } else if (isSingleCondition(metaData)) { doMoveSingleCondition(metaData.get(0)); } else { throw new ModelSynchronizer.MoveVetoException(); } }  @Override boolean handlesAppend(final MetaData metaData); @Override void append(final PatternConditionMetaData metaData); @Override boolean handlesUpdate(final MetaData metaData); @Override List<BaseColumnFieldDiff> update(final PatternConditionMetaData originalMetaData,
                                            final PatternConditionMetaData editedMetaData); @Override boolean handlesDelete(final MetaData metaData); @Override void delete(final ColumnMetaData metaData); @Override boolean handlesMoveColumnsTo(final List<? extends MetaData> metaData); @Override void moveColumnsTo(final List<MoveColumnToMetaData> metaData);  }