@Override public List<BaseColumnFieldDiff> update(final BaseColumnSynchronizer.ColumnMetaData originalMetaData, final BaseColumnSynchronizer.ColumnMetaData editedMetaData) throws VetoException { //Check operation is supported if (!(handlesUpdate(originalMetaData) && handlesUpdate(editedMetaData))) { return Collections.emptyList(); } final MetadataCol52 originalColumn = (MetadataCol52) originalMetaData.getColumn(); final MetadataCol52 editedColumn = (MetadataCol52) editedMetaData.getColumn(); final List<BaseColumnFieldDiff> diffs = originalColumn.diff(editedColumn); update(originalColumn, editedColumn); final boolean isMetaDataUpdated = BaseColumnFieldDiffImpl.hasChanged(MetadataCol52.FIELD_METADATA, diffs); final boolean isHideUpdated = BaseColumnFieldDiffImpl.hasChanged(DTColumnConfig52.FIELD_HIDE_COLUMN, diffs); if (isMetaDataUpdated) { setColumnHeader(originalColumn, originalColumn.getMetadata()); } if (isHideUpdated) { setColumnVisibility(originalColumn, originalColumn.isHideColumn()); } return diffs; }
@Override public List<BaseColumnFieldDiff> update(final BaseColumnSynchronizer.ColumnMetaData originalMetaData, final BaseColumnSynchronizer.ColumnMetaData editedMetaData) throws VetoException { //Check operation is supported if (!(handlesUpdate(originalMetaData) && handlesUpdate(editedMetaData))) { return Collections.emptyList(); } final MetadataCol52 originalColumn = (MetadataCol52) originalMetaData.getColumn(); final MetadataCol52 editedColumn = (MetadataCol52) editedMetaData.getColumn(); final List<BaseColumnFieldDiff> diffs = originalColumn.diff(editedColumn); update(originalColumn, editedColumn); final boolean isMetaDataUpdated = BaseColumnFieldDiffImpl.hasChanged(MetadataCol52.FIELD_METADATA, diffs); final boolean isHideUpdated = BaseColumnFieldDiffImpl.hasChanged(DTColumnConfig52.FIELD_HIDE_COLUMN, diffs); if (isMetaDataUpdated) { setColumnHeader(originalColumn, originalColumn.getMetadata()); } if (isHideUpdated) { setColumnVisibility(originalColumn, originalColumn.isHideColumn()); } return diffs; }
@Test public void testUpdate1() throws VetoException { final MetadataCol52 column = spy(new MetadataCol52()); column.setMetadata("smurf"); modelSynchronizer.appendColumn(column); final MetadataCol52 edited = new MetadataCol52(); edited.setWidth(column.getWidth()); edited.setMetadata("changed"); List<BaseColumnFieldDiff> diffs = modelSynchronizer.updateColumn(column, edited); assertEquals(1, diffs.size()); verify(column).diff(edited); assertEquals(1, model.getMetadataCols().size()); assertEquals("changed", model.getMetadataCols().get(0).getMetadata()); assertEquals(3, uiModel.getColumns().size()); assertEquals("changed", uiModel.getColumns().get(2).getHeaderMetaData().get(0).getTitle()); }
@Test public void testUpdate2() throws VetoException { final MetadataCol52 column = spy(new MetadataCol52()); column.setMetadata("smurf"); modelSynchronizer.appendColumn(column); final MetadataCol52 edited = new MetadataCol52(); edited.setWidth(column.getWidth()); edited.setMetadata("smurf"); edited.setHideColumn(true); List<BaseColumnFieldDiff> diffs = modelSynchronizer.updateColumn(column, edited); assertEquals(1, diffs.size()); verify(column).diff(edited); assertEquals(1, model.getMetadataCols().size()); assertEquals("smurf", model.getMetadataCols().get(0).getMetadata()); assertEquals(3, uiModel.getColumns().size()); assertEquals("smurf", uiModel.getColumns().get(2).getHeaderMetaData().get(0).getTitle()); assertEquals(false, uiModel.getColumns().get(2).isVisible()); }
@Test public void testDiffAll() { column1.setMetadata("meta1"); column1.setHeader("header1"); column1.setHideColumn(false); column1.setDefaultValue(new DTCellValue52("default1")); column2.setMetadata("meta2"); column2.setHeader("header2"); column2.setHideColumn(true); column2.setDefaultValue(new DTCellValue52("default2")); List<BaseColumnFieldDiff> diff = column1.diff(column2); assertNotNull(diff); assertEquals(4, diff.size()); assertEquals(FIELD_HIDE_COLUMN, diff.get(0).getFieldName()); assertEquals(false, diff.get(0).getOldValue()); assertEquals(true, diff.get(0).getValue()); assertEquals(FIELD_DEFAULT_VALUE, diff.get(1).getFieldName()); assertEquals("default1", diff.get(1).getOldValue()); assertEquals("default2", diff.get(1).getValue()); assertEquals(FIELD_HEADER, diff.get(2).getFieldName()); assertEquals("header1", diff.get(2).getOldValue()); assertEquals("header2", diff.get(2).getValue()); assertEquals(FIELD_METADATA, diff.get(3).getFieldName()); assertEquals("meta1", diff.get(3).getOldValue()); assertEquals("meta2", diff.get(3).getValue()); }
@Test public void getSafeHtml_Metadata() { MetadataCol52 originalColumn = new MetadataCol52(); originalColumn.setHideColumn(true); originalColumn.setDefaultValue(new DTCellValue52("def1")); // header & metadata of a metadata column cannot be updated in the ui originalColumn.setMetadata("meta"); originalColumn.setHeader("meta"); MetadataCol52 newColumn = new MetadataCol52(); newColumn.setHideColumn(false); newColumn.setDefaultValue(new DTCellValue52("def2")); // header & metadata of a metadata column cannot be updated in the ui newColumn.setMetadata("meta"); newColumn.setHeader("meta"); List<BaseColumnFieldDiff> diffs = originalColumn.diff(newColumn); SafeHtml result = helper.getSafeHtml(new UpdateColumnAuditLogEntry("mock user", originalColumn, newColumn, diffs)); assertEquals(getHeaderRepre(newColumn.getHeader()) + getDiffRepre(diffs), result.asString()); }