diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java index 05af29bbac35334a9636f8360e5692918a30800c..c9fefe6c7d9576bc467a7b9febb5a78dbee53630 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java @@ -548,7 +548,7 @@ public abstract class TypedTableGrid<T extends Serializable> extends LayoutConta } } - protected int log(String message) + private int log(String message) { return viewContext.log(message + " [" + getId() + "]"); } @@ -582,7 +582,7 @@ public abstract class TypedTableGrid<T extends Serializable> extends LayoutConta } /** Refreshes the grid without showing the loading progress bar */ - protected final void refreshGridSilently() + private void refreshGridSilently() { grid.setLoadMask(false); int id = log("refresh silently"); @@ -634,7 +634,7 @@ public abstract class TypedTableGrid<T extends Serializable> extends LayoutConta grid.getSelectionModel().setSelectionMode(SelectionMode.MULTI); } - protected List<TableModelRowWithObject<T>> getGridElements() + private List<TableModelRowWithObject<T>> getGridElements() { List<BaseEntityModel<TableModelRowWithObject<T>>> models = grid.getStore().getModels(); List<TableModelRowWithObject<T>> elements = new ArrayList<TableModelRowWithObject<T>>(); @@ -1031,8 +1031,6 @@ public abstract class TypedTableGrid<T extends Serializable> extends LayoutConta saveCacheKey(key); GridRowModels<TableModelRowWithObject<T>> rowModels = result.getList(); boolean partial = result.isPartial(); - List<GridCustomColumnInfo> customColumnMetadata = rowModels.getCustomColumnsMetadata(); - customColumnsMetadataProvider.setCustomColumnsMetadata(customColumnMetadata); if (reloadingPhase) { @@ -1107,6 +1105,22 @@ public abstract class TypedTableGrid<T extends Serializable> extends LayoutConta return result; } + private void initializeModelCreation() + { + Set<String> visibleColumnIds = getIDsOfVisibleColumns(); + List<IColumnDefinitionUI<TableModelRowWithObject<T>>> colDefinitions = + createColDefinitions(); + visibleColDefinitions = + new ArrayList<IColumnDefinitionUI<TableModelRowWithObject<T>>>(); + for (IColumnDefinitionUI<TableModelRowWithObject<T>> definition : colDefinitions) + { + if (visibleColumnIds.contains(definition.getIdentifier())) + { + visibleColDefinitions.add(definition); + } + } + } + @Override /* Note: we want to differentiate between callbacks in different subclasses of this grid. */ public String getCallbackId() @@ -1115,7 +1129,7 @@ public abstract class TypedTableGrid<T extends Serializable> extends LayoutConta } } - protected Set<String> getIDsOfVisibleColumns() + private Set<String> getIDsOfVisibleColumns() { Set<String> visibleColumnIds = new HashSet<String>(); for (int i = 0, n = fullColumnModel.getColumnCount(); i < n; i++) @@ -1180,7 +1194,7 @@ public abstract class TypedTableGrid<T extends Serializable> extends LayoutConta bottomToolbars.layout(); } - protected void showModificationsBar() + private void showModificationsBar() { if (bottomToolbars.getItems().contains(modificationsToolbar) == false) { @@ -1192,7 +1206,7 @@ public abstract class TypedTableGrid<T extends Serializable> extends LayoutConta } } - protected void hideModificationsBar() + private void hideModificationsBar() { bottomToolbars.remove(modificationsToolbar); bottomToolbars.layout(); @@ -1822,8 +1836,7 @@ public abstract class TypedTableGrid<T extends Serializable> extends LayoutConta columnSettingsConfigurer.showDialog(); } - // Default visibility so that friend classes can use -- should otherwise be considered private - void saveColumnDisplaySettings() + private void saveColumnDisplaySettings() { IDisplaySettingsGetter settingsUpdater = createDisplaySettingsUpdater(); viewContext.getDisplaySettingsManager().storeSettings(getGridDisplayTypeID(), @@ -1845,7 +1858,7 @@ public abstract class TypedTableGrid<T extends Serializable> extends LayoutConta return createTableExportCriteria(false); } - protected final TableExportCriteria<TableModelRowWithObject<T>> createTableExportCriteria( + private final TableExportCriteria<TableModelRowWithObject<T>> createTableExportCriteria( boolean allColumns) { assert columnDefinitions != null : "refresh before exporting!"; @@ -1923,7 +1936,7 @@ public abstract class TypedTableGrid<T extends Serializable> extends LayoutConta } // Default visibility so that friend classes can use -- should otherwise be considered private - public static List<ColumnDataModel> createColumnsSettingsModel(ColumnModel cm, + static List<ColumnDataModel> createColumnsSettingsModel(ColumnModel cm, List<String> filteredColumnsIds) { Set<String> filteredColumnsMap = new HashSet<String>(filteredColumnsIds); @@ -2117,7 +2130,7 @@ public abstract class TypedTableGrid<T extends Serializable> extends LayoutConta return new ColumnModel(columConfigs); } - public ColumnModel getFullColumnModel() + ColumnModel getFullColumnModel() { return fullColumnModel; } @@ -2396,7 +2409,7 @@ public abstract class TypedTableGrid<T extends Serializable> extends LayoutConta } /** Toolbar for handling table modifications */ - static class TableModificationsToolbar extends ToolBar + private static class TableModificationsToolbar extends ToolBar { public TableModificationsToolbar(final IMessageProvider messageProvider, @@ -2517,28 +2530,6 @@ public abstract class TypedTableGrid<T extends Serializable> extends LayoutConta } } - /** - * Initializes creation of model from received data. This is a hook method called before { - * {@link #createModel(GridRowModel)} is invoked for all rows. This implementation does nothing. - * Subclasses usually override this method by creating an instance attribute which holds a list - * of visible column definitions. This speeds up invocation of - * {@link #createModel(GridRowModel)}. - */ - protected void initializeModelCreation() - { - Set<String> visibleColumnIds = getIDsOfVisibleColumns(); - List<IColumnDefinitionUI<TableModelRowWithObject<T>>> colDefinitions = - createColDefinitions(); - visibleColDefinitions = new ArrayList<IColumnDefinitionUI<TableModelRowWithObject<T>>>(); - for (IColumnDefinitionUI<TableModelRowWithObject<T>> definition : colDefinitions) - { - if (visibleColumnIds.contains(definition.getIdentifier())) - { - visibleColDefinitions.add(definition); - } - } - } - /** Converts specified entity into a grid row model */ protected BaseEntityModel<TableModelRowWithObject<T>> createModel( GridRowModel<TableModelRowWithObject<T>> entity) @@ -2615,7 +2606,7 @@ public abstract class TypedTableGrid<T extends Serializable> extends LayoutConta return getId() + "_" + columnID; } - protected void listEntities( + private void listEntities( final DefaultResultSetConfig<String, TableModelRowWithObject<T>> resultSetConfig, final AbstractAsyncCallback<ResultSet<TableModelRowWithObject<T>>> callback) { @@ -2625,14 +2616,19 @@ public abstract class TypedTableGrid<T extends Serializable> extends LayoutConta @Override protected void process(TypedTableResultSet<T> result) { + ResultSet<TableModelRowWithObject<T>> resultSet = result.getResultSet(); // don't need to recreate columns when paging or filtering if (resultSetConfig.getCacheConfig().getMode() != ResultSetFetchMode.FETCH_FROM_CACHE) { - headers = result.getResultSet().getList().getColumnHeaders(); + headers = resultSet.getList().getColumnHeaders(); columnUIDefinitions = null; + List<GridCustomColumnInfo> customColumnMetadata = + resultSet.getList().getCustomColumnsMetadata(); + customColumnsMetadataProvider + .setCustomColumnsMetadata(customColumnMetadata); recreateColumnModelAndRefreshColumnsWithFilters(); } - callback.onSuccess(result.getResultSet()); + callback.onSuccess(resultSet); } @Override @@ -2673,7 +2669,7 @@ public abstract class TypedTableGrid<T extends Serializable> extends LayoutConta } /** @return on which fields filters should be switched on by default? */ - protected List<IColumnDefinition<TableModelRowWithObject<T>>> getInitialFilters() + private List<IColumnDefinition<TableModelRowWithObject<T>>> getInitialFilters() { List<IColumnDefinition<TableModelRowWithObject<T>>> definitions = diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/CustomColumnsMetadataProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/CustomColumnsMetadataProvider.java index 7f25604c1f46e1e2ba467c8cbef12b4a4fedca32..5bbc591e753d6314b0dd94c8f46b9523051f21ca 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/CustomColumnsMetadataProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/CustomColumnsMetadataProvider.java @@ -22,6 +22,7 @@ import java.util.List; import java.util.Map; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GridCustomColumnInfo; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; /** * Stores metadata about grid custom columns. @@ -68,11 +69,14 @@ public class CustomColumnsMetadataProvider if (column.getDataType() == null) { GridCustomColumnInfo oldColumn = oldColumns.get(column.getCode()); - if (oldColumn != null && oldColumn.getDataType() != null) + if (oldColumn != null) { - newColumns - .add(new GridCustomColumnInfo(column.getCode(), column.getLabel(), - column.getDescription(), oldColumn.getDataType())); + DataTypeCode dataType = oldColumn.getDataType(); + newColumns.add(new GridCustomColumnInfo(column.getCode(), + column.getLabel(), column.getDescription(), dataType)); + } else + { + newColumns.add(column); } } else {