/************************************************************* ** VIEW CALLBACK METHODS ** *************************************************************/ void onColumnSelect(final int index, final boolean selected) { final DataColumnDef columnDef = acceptableColumns.get(index); if (selected) { listEditor.getList().add(columnDef.clone()); } else { listEditor.getList().remove(columnDef); } columnsChangedEvent.fire(new ColumnsChangedEvent(this, listEditor.getList())); }
/************************************************************* ** VIEW CALLBACK METHODS ** *************************************************************/ void onColumnSelect(final int index, final boolean selected) { final DataColumnDef columnDef = acceptableColumns.get(index); if (selected) { listEditor.getList().add(columnDef.clone()); } else { listEditor.getList().remove(columnDef); } columnsChangedEvent.fire(new ColumnsChangedEvent(this, listEditor.getList())); }
/** * Checks that if only single column used in data set -> it cannot be unselected. */ private boolean checkSingleColumnEditorDisabled() { final int size = listEditor.getList().size(); final boolean hasEditors = !listEditor.getEditors().isEmpty(); if (size == 1 && hasEditors) { setEditorEnabled(0 ,false, DataSetEditorConstants.INSTANCE.dataSetMustHaveAtLeastOneColumn()); return true; } return false; }
/** * Checks that if only single column used in data set -> it cannot be unselected. */ private boolean checkSingleColumnEditorDisabled() { final int size = listEditor.getList().size(); final boolean hasEditors = !listEditor.getEditors().isEmpty(); if (size == 1 && hasEditors) { setEditorEnabled(0 ,false, DataSetEditorConstants.INSTANCE.dataSetMustHaveAtLeastOneColumn()); return true; } return false; }
@Override public DataColumnDefEditor create(final int index) { final DataColumnDef column = listEditor.getList().get(index); final int localIndex = acceptableColumns.indexOf(column); // Check single column used in data set -> it cannot be unselected. if (!checkSingleColumnEditorDisabled()) { // Enable column selection if more than one column remains on the data set. checkMultipleColumnsEditorEnabled(); } // Create the new editor. final org.dashbuilder.client.widgets.dataset.editor.column.DataColumnDefEditor editor = createColumnEditor(); final boolean hasSingleColumn = listEditor.getList().size() == 1; final boolean isRestricted = restrictedColumns.contains(column.getId()); final String tooltipText = hasSingleColumn ? DataSetEditorConstants.INSTANCE.dataSetMustHaveAtLeastOneColumn() : ( isRestricted ? DataSetEditorConstants.INSTANCE.columnIsUsedInFilter() : null ); doSetOriginalColumnType(column.getId(), editor); replace(localIndex, editor, true, !isRestricted && !hasSingleColumn, tooltipText); return editor; }
/** * Set the column that can be removed again from the list, as it's no longer used by the filter. * @param value The column id. */ @Override public void onValueUnRestricted(final String value) { this.restrictedColumns.remove(value); // Check single column used in data set -> it cannot be unselected. if (listEditor.getList().size() == 1) { setEditorEnabled(0 ,false, DataSetEditorConstants.INSTANCE.dataSetMustHaveAtLeastOneColumn()); } else { setEditorEnabled(value, true, null); } }
@Override public DataColumnDefEditor create(final int index) { final DataColumnDef column = listEditor.getList().get(index); final int localIndex = acceptableColumns.indexOf(column); // Check single column used in data set -> it cannot be unselected. if (!checkSingleColumnEditorDisabled()) { // Enable column selection if more than one column remains on the data set. checkMultipleColumnsEditorEnabled(); } // Create the new editor. final org.dashbuilder.client.widgets.dataset.editor.column.DataColumnDefEditor editor = createColumnEditor(); final boolean hasSingleColumn = listEditor.getList().size() == 1; final boolean isRestricted = restrictedColumns.contains(column.getId()); final String tooltipText = hasSingleColumn ? DataSetEditorConstants.INSTANCE.dataSetMustHaveAtLeastOneColumn() : ( isRestricted ? DataSetEditorConstants.INSTANCE.columnIsUsedInFilter() : null ); doSetOriginalColumnType(column.getId(), editor); replace(localIndex, editor, true, !isRestricted && !hasSingleColumn, tooltipText); return editor; }
/** * Set the column that can be removed again from the list, as it's no longer used by the filter. * @param value The column id. */ @Override public void onValueUnRestricted(final String value) { this.restrictedColumns.remove(value); // Check single column used in data set -> it cannot be unselected. if (listEditor.getList().size() == 1) { setEditorEnabled(0 ,false, DataSetEditorConstants.INSTANCE.dataSetMustHaveAtLeastOneColumn()); } else { setEditorEnabled(value, true, null); } }
/** * Checks that if multiple columns are used in data set -> the column editors must be enabed, if the columns are not are restricted. */ private boolean checkMultipleColumnsEditorEnabled() { final int size = listEditor.getList().size(); if (size == 2 && !listEditor.getEditors().isEmpty()) { final String cId = listEditor.getEditors().get(0).id().getValue(); if (!restrictedColumns.contains(cId)) { setEditorEnabled(0, true, null); } return true; } return false; }
/** * Checks that if multiple columns are used in data set -> the column editors must be enabed, if the columns are not are restricted. */ private boolean checkMultipleColumnsEditorEnabled() { final int size = listEditor.getList().size(); if (size == 2 && !listEditor.getEditors().isEmpty()) { final String cId = listEditor.getEditors().get(0).id().getValue(); if (!restrictedColumns.contains(cId)) { setEditorEnabled(0, true, null); } return true; } return false; }
@Test public void testOnColumnSelected() { listEditor.getList().clear(); when(col1.clone()).thenReturn(col1); presenter.onColumnSelect(0, true); assertEquals(1, listEditor.getList().size()); assertEquals(col1, listEditor.getList().get(0)); verify(columnsChangedEvent, times(1)).fire(any(ColumnsChangedEvent.class)); }
@Test public void testOnColumnUnSelected() { when(col1.clone()).thenReturn(col1); presenter.onColumnSelect(0, false); assertTrue(listEditor.getList().isEmpty()); verify(columnsChangedEvent, times(1)).fire(any(ColumnsChangedEvent.class)); }
/** * Column editor editMode set to true, as more than one column present in the dset definition, so it can be selected/unselected. */ @Test public void testOnValueUnRestricted() { final String value = "col1"; presenter.restrictedColumns.add("col1"); final DataColumnDef col2 = mock(DataColumnDef.class); when(col2.getId()).thenReturn("col2"); when(col2.getColumnType()).thenReturn(ColumnType.LABEL); presenter.listEditor.getList().add(col2); presenter.onValueUnRestricted(value); assertTrue(presenter.restrictedColumns.isEmpty()); verify(dataColumnDefEditor, times(1)).isEditMode(true); verify(view, times(1)).insert(anyInt(), any(DataColumnDefEditor.View.class), anyBoolean(), anyBoolean(), anyString()); verify(view, times(1)).remove(anyInt()); verify(view, times(0)).init(presenter); verify(view, times(0)).clear(); }
/** * Column editor created with editMode set to true, as more than one column present in the dset definition. First column enabled too, as it was disabled as was the unique one before this creation. */ @Test public void testDataColumnDefEditorSource_CreateMultiple() { final DataColumnDef col2 = mock(DataColumnDef.class); when(col2.getId()).thenReturn("col2"); when(col2.getColumnType()).thenReturn(ColumnType.LABEL); presenter.acceptableColumns.add(col2); presenter.listEditor.getList().add(col2); presenter.restrictedColumns.clear(); ColumnListEditor.DataColumnDefEditorSource source = presenter.createDataColumnDefEditorSource(); org.dashbuilder.dataset.client.editor.DataColumnDefEditor e = source.create(0); verify(dataColumnDefEditor, times(2)).isEditMode(true); verify(dataColumnDefEditor, times(1)).setOriginalColumnType(any(ColumnType.class)); verify(dataColumnDefEditor, times(1)).setProviderType(any(DataSetProviderType.class)); verify(view, times(2)).insert(anyInt(), any(DataColumnDefEditor.View.class), anyBoolean(), anyBoolean(), anyString()); verify(view, times(2)).remove(anyInt()); verify(view, times(0)).init(presenter); verify(view, times(0)).clear(); }
editors.add(dataColumnDefEditor); when(listEditor.getEditors()).thenReturn(editors); when(listEditor.getList()).thenReturn(columns); presenter.listEditor = listEditor;
/** * See https://issues.jboss.org/browse/DASHBUILDE-79 (re-opened) */ @Test public void testDataColumnDefEditorSource_Create_DASHBUILDE79_B() { final DataColumnDef col2 = mock(DataColumnDef.class); when(col2.getId()).thenReturn("col2"); when(col2.getColumnType()).thenReturn(ColumnType.LABEL); presenter.acceptableColumns.add(col2); presenter.listEditor.getList().clear(); presenter.listEditor.getList().add(col2); presenter.listEditor.getEditors().clear(); presenter.restrictedColumns.clear(); ColumnListEditor.DataColumnDefEditorSource source = presenter.createDataColumnDefEditorSource(); org.dashbuilder.dataset.client.editor.DataColumnDefEditor e = source.create(0); verify(dataColumnDefEditor, times(1)).isEditMode(false); verify(dataColumnDefEditor, times(1)).setOriginalColumnType(any(ColumnType.class)); verify(dataColumnDefEditor, times(1)).setProviderType(any(DataSetProviderType.class)); verify(view, times(1)).insert(anyInt(), any(DataColumnDefEditor.View.class), anyBoolean(), anyBoolean(), anyString()); verify(view, times(1)).remove(anyInt()); verify(view, times(0)).init(presenter); verify(view, times(0)).clear(); }
/** * See https://issues.jboss.org/browse/DASHBUILDE-79 */ @Test public void testDataColumnDefEditorSource_Create_DASHBUILDE79_A() { final DataColumnDef col2 = mock(DataColumnDef.class); when(col2.getId()).thenReturn("col2"); when(col2.getColumnType()).thenReturn(ColumnType.LABEL); presenter.acceptableColumns.add(col2); presenter.listEditor.getList().add(col2); presenter.listEditor.getEditors().clear(); presenter.restrictedColumns.clear(); ColumnListEditor.DataColumnDefEditorSource source = presenter.createDataColumnDefEditorSource(); org.dashbuilder.dataset.client.editor.DataColumnDefEditor e = source.create(0); verify(dataColumnDefEditor, times(1)).isEditMode(true); verify(dataColumnDefEditor, times(1)).setOriginalColumnType(any(ColumnType.class)); verify(dataColumnDefEditor, times(1)).setProviderType(any(DataSetProviderType.class)); verify(view, times(1)).insert(anyInt(), any(DataColumnDefEditor.View.class), anyBoolean(), anyBoolean(), anyString()); verify(view, times(1)).remove(anyInt()); verify(view, times(0)).init(presenter); verify(view, times(0)).clear(); }
when(col2Editor.id()).thenReturn(id2); presenter.acceptableColumns.add(col2); presenter.listEditor.getList().add(col2); presenter.listEditor.getEditors().add(col2Editor);