diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java index cf40b58fe6f78d4b22fcbd12d14255f2fee3cfeb..75f8421722671e636aad7ec10a30a8cb2ca1ac91 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java @@ -93,6 +93,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget. import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.WindowUtils; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Constants; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GridCustomColumnInfo; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GridFilters; @@ -177,7 +178,7 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod // ------ private section. NOTE: it should remain unaccessible to subclasses! --------------- - private static final int PAGE_SIZE = 50; + private static final int PAGE_SIZE = Constants.GRID_PAGE_SIZE; // set to true to see some useful debugging messages private static final boolean DEBUG = false; @@ -713,6 +714,8 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod private final DefaultResultSetConfig<String, T> resultSetConfig; private int logID; + + private boolean reloadingPhase; public ListEntitiesCallback(final IViewContext<?> viewContext, final AsyncCallback<PagingLoadResult<M>> delegate, @@ -746,8 +749,19 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod logID = log("process loaded data"); // save the key of the result, later we can refer to the result in the cache using this // key - saveCacheKey(result.getResultSetKey()); + String key = result.getResultSetKey(); + saveCacheKey(key); GridRowModels<T> rowModels = result.getList(); + boolean partial = result.isPartial(); + if (reloadingPhase) + { + reloadingPhase = false; + } else if (partial) + { + reloadingPhase = true; + resultSetConfig.setCacheConfig(ResultSetFetchConfig.createFetchFromCacheAndRecompute(key)); + listEntities(resultSetConfig, this); + } List<GridCustomColumnInfo> customColumnMetadata = rowModels.getCustomColumnsMetadata(); customColumnsMetadataProvider.setCustomColumnsMetadata(customColumnMetadata); // convert the result to the model data for the grid control @@ -760,7 +774,14 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod pagingToolbar.enableExportButton(); pagingToolbar.updateDefaultConfigButton(true); - filterToolbar.refreshColumnFiltersDistinctValues(rowModels.getColumnDistinctValues()); + if (reloadingPhase == false) + { + pagingToolbar.enable(); + filterToolbar.refreshColumnFiltersDistinctValues(rowModels.getColumnDistinctValues()); + } else + { + pagingToolbar.disableForLoadingRest(); + } onComplete(true); viewContext.logStop(logID); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/BrowserGridPagingToolBar.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/BrowserGridPagingToolBar.java index 527c56dc6f812d0f4c79e3d53669b266c1fab9ab..71eb74328a3d619cc3440778c3eeb5600e6ac15e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/BrowserGridPagingToolBar.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/BrowserGridPagingToolBar.java @@ -178,6 +178,12 @@ public final class BrowserGridPagingToolBar extends PagingToolBar { return refreshButton.isEnabled(); } + + public void disableForLoadingRest() + { + displayText.setLabel("Loading the rest of the data"); + disable(); + } protected final void updateDefaultRefreshButton(boolean isEnabled) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/Constants.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/Constants.java new file mode 100644 index 0000000000000000000000000000000000000000..8bd4defa63389dffe5d8c41a85400ee5cf14c49d --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/Constants.java @@ -0,0 +1,28 @@ +/* + * Copyright 2011 ETH Zuerich, CISD + * + * 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 ch.systemsx.cisd.openbis.generic.client.web.client.dto; + +/** + * Constants used by client and server of the web presentation layer. + * + * @author Franz-Josef Elmer + */ +public class Constants +{ + /** Maximum number of rows shown on a page of a grid. */ + public static final int GRID_PAGE_SIZE = 50; +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ResultSet.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ResultSet.java index 34568438b7452415d412c84fb8ae8ae94eb7f763..5cc03fa2fd57fed28c14b05349a21a84def88ef9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ResultSet.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ResultSet.java @@ -36,6 +36,8 @@ public final class ResultSet<T> implements IsSerializable, IResultSetHolder<T> private int totalLength; private String resultSetKey; + + private boolean partial; public final void setList(final GridRowModels<T> result) { @@ -92,4 +94,14 @@ public final class ResultSet<T> implements IsSerializable, IResultSetHolder<T> return list.toString(); } + public void setPartial(boolean partial) + { + this.partial = partial; + } + + public boolean isPartial() + { + return partial; + } + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/AbstractClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/AbstractClientService.java index b92a6287aa43821a70496f27db3413dc94c2b876..1b8f8a718ca8be4131897303dbeedbb8b2f60f65 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/AbstractClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/AbstractClientService.java @@ -384,12 +384,6 @@ public abstract class AbstractClientService implements IClientService, { public List<TableModelRowWithObject<Null>> getOriginalData(int maxSize) throws UserFailureException - { - return getOriginalData(); - } - - public List<TableModelRowWithObject<Null>> getOriginalData() - throws UserFailureException { return TableModelUtils.asTableModelRowsWithNullObject(tableModel .getRows()); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/AbstractOriginalDataProviderWithoutHeaders.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/AbstractOriginalDataProviderWithoutHeaders.java index 87c783e0b53a0c0ef7c0dae02518847a83d655fc..7266595de6576f4fc3eb889b62189280ccc49b27 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/AbstractOriginalDataProviderWithoutHeaders.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/AbstractOriginalDataProviderWithoutHeaders.java @@ -58,7 +58,7 @@ public abstract class AbstractOriginalDataProviderWithoutHeaders<T> implements return list; } - public List<T> getOriginalData() throws UserFailureException + private List<T> getOriginalData() throws UserFailureException { if (originalData != null) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java index 06584730c28ebf292765f4a93c03e27cc3ca55c5..d17cb6dc8e025b2ea0b2a4bcd3ca979900c120d7 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java @@ -2154,12 +2154,6 @@ public final class CommonClientService extends AbstractClientService implements IOriginalDataProvider<TableModelRowWithObject<Null>> dataProvider = new IOriginalDataProvider<TableModelRowWithObject<Null>>() { - public List<TableModelRowWithObject<Null>> getOriginalData() - throws UserFailureException - { - throw new IllegalStateException("Data not found in the cache"); - } - public List<TableModelColumnHeader> getHeaders() { return null; @@ -2168,7 +2162,7 @@ public final class CommonClientService extends AbstractClientService implements public List<TableModelRowWithObject<Null>> getOriginalData(int maxSize) throws UserFailureException { - return getOriginalData(); + throw new IllegalStateException("Data not found in the cache"); } }; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/ListMatchingEntitiesOriginalDataProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/ListMatchingEntitiesOriginalDataProvider.java deleted file mode 100644 index bfbc16782f1b9202e387cfba1a67363d3dd11e5d..0000000000000000000000000000000000000000 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/ListMatchingEntitiesOriginalDataProvider.java +++ /dev/null @@ -1,47 +0,0 @@ -package ch.systemsx.cisd.openbis.generic.client.web.server; - -import java.util.List; - -import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.IOriginalDataProvider; -import ch.systemsx.cisd.openbis.generic.shared.ICommonServer; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MatchingEntity; -import ch.systemsx.cisd.openbis.generic.shared.dto.SearchableEntity; - -/** - * A {@link IOriginalDataProvider} implementation for listing matching entities. - * - * @author Christian Ribeaud - */ -final class ListMatchingEntitiesOriginalDataProvider extends - AbstractOriginalDataProvider<MatchingEntity> -{ - - private final SearchableEntity[] matchingEntities; - - private final String queryText; - - private final boolean useWildcardSearchMode; - - ListMatchingEntitiesOriginalDataProvider(ICommonServer commonServer, String sessionToken, - SearchableEntity[] matchingEntities, String queryText, - final boolean useWildcardSearchMode) - { - super(commonServer, sessionToken); - this.matchingEntities = matchingEntities; - this.queryText = queryText; - this.useWildcardSearchMode = useWildcardSearchMode; - } - - // - // AbstractOriginalDataProvider - // - - @Override - public final List<MatchingEntity> getFullOriginalData() - { - final List<MatchingEntity> entities = - commonServer.listMatchingEntities(sessionToken, matchingEntities, queryText, - useWildcardSearchMode); - return entities; - } -} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/AbstractTableModelProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/AbstractTableModelProvider.java index 89648b5ec26c4ab3c3fa4caa325aa9b89ee60f23..b6007c3616b2b65438abdedef7f0d1ff0cca95a8 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/AbstractTableModelProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/AbstractTableModelProvider.java @@ -33,20 +33,9 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; public abstract class AbstractTableModelProvider<T extends ISerializable> implements ITableModelProvider<T> { - private TypedTableModel<T> model; - - public final TypedTableModel<T> getTableModel() - { - if (model == null) - { - model = createTableModel(); - } - return model; - } - public TypedTableModel<T> getTableModel(int maxSize) { - TypedTableModel<T> tableModel = getTableModel(); + TypedTableModel<T> tableModel = createTableModel(maxSize); List<TableModelColumnHeader> headers = tableModel.getHeader(); List<TableModelRowWithObject<T>> rows = tableModel.getRows(); List<TableModelRowWithObject<T>> limitedRows = new ArrayList<TableModelRowWithObject<T>>(); @@ -62,9 +51,9 @@ public abstract class AbstractTableModelProvider<T extends ISerializable> implem } /** - * Creates the table model. The returned instance is always returned by {@link #getTableModel()} - * . + * Creates the table model with the specified maximum number of rows. If + * {@link Integer#MAX_VALUE} is specified the complete table will be created. */ - protected abstract TypedTableModel<T> createTableModel(); + protected abstract TypedTableModel<T> createTableModel(int maxSize); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/CachedResultSetManager.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/CachedResultSetManager.java index 13062d60e6b509cf6a70bb5e9abeda245bfefdf2..8d3a5a790815ea27eed9bc98bc0c89f785b37128 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/CachedResultSetManager.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/CachedResultSetManager.java @@ -28,10 +28,18 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; import org.apache.log4j.Logger; import ch.rinn.restrictions.Private; +import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel; +import ch.systemsx.cisd.base.namedthread.NamingThreadPoolExecutor; import ch.systemsx.cisd.common.logging.LogCategory; import ch.systemsx.cisd.common.logging.LogFactory; import ch.systemsx.cisd.common.shared.basic.AlternativesStringFilter; @@ -424,7 +432,9 @@ public final class CachedResultSetManager<K> implements IResultSetManager<K>, Se private final ICustomColumnsProvider customColumnsProvider; // all cache access should be doen in a monitor (synchronized clause) - private final Map<K, TableData<?>> cache = new HashMap<K, TableData<?>>(); + private final Map<K, Future<?>> cache = new HashMap<K, Future<?>>(); + + private final ThreadPoolExecutor executor = new NamingThreadPoolExecutor("Background Table Loader").corePoolSize(10).daemonize(); private final XMLPropertyTransformer xmlPropertyTransformer = new XMLPropertyTransformer(); @@ -667,52 +677,135 @@ public final class CachedResultSetManager<K> implements IResultSetManager<K>, Se TableData<T> tableData = tryGetCachedTableData(dataKey); if (tableData != null) { - return calculateSortAndFilterResult(sessionToken, tableData, resultConfig, dataKey); + return calculateSortAndFilterResult(sessionToken, tableData, resultConfig, dataKey, false); } else { return fetchAndCacheResult(sessionToken, resultConfig, dataProvider); } } - + private <T> IResultSet<K, T> fetchAndCacheResult(final String sessionToken, final IResultSetConfig<K, T> resultConfig, final IOriginalDataProvider<T> dataProvider) { - K dataKey = resultSetKeyProvider.createKey(); - debug("retrieving the data with a new key " + dataKey); - List<T> rows = dataProvider.getOriginalData(); - List<TableModelColumnHeader> headers = dataProvider.getHeaders(); - TableData<T> tableData = - new TableData<T>(rows, headers, customColumnsProvider, columnCalculator); + final K dataKey = resultSetKeyProvider.createKey(); + int limit = resultConfig.getLimit(); + if (limit == IResultSetConfig.NO_LIMIT) + { + limit = Integer.MAX_VALUE; + } + debug("Retrieving " + limit + " record for a new key " + dataKey); + List<T> rows = dataProvider.getOriginalData(limit); + final List<TableModelColumnHeader> headers = dataProvider.getHeaders(); + final TableData<T> tableData = + new TableData<T>(rows, headers, customColumnsProvider, columnCalculator); xmlPropertyTransformer.transformXMLProperties(rows); + + Future<TableData<T>> future; + boolean partial = rows.size() >= limit; + if (partial) + { + debug("Only partially loaded data for key "+dataKey); + future = loadCompleteTableInBackground(dataProvider, dataKey); + } else + { + debug("Completely loaded for key "+dataKey); + future = createFutureWhichIsPresent(dataKey, tableData); + } + addToCache(dataKey, future); + return calculateSortAndFilterResult(sessionToken, tableData, resultConfig, dataKey, partial); + } - addToCache(dataKey, tableData); - return calculateSortAndFilterResult(sessionToken, tableData, resultConfig, dataKey); + private <T> Future<TableData<T>> createFutureWhichIsPresent(final K dataKey, + final TableData<T> tableData) + { + return new Future<TableData<T>>() + { + public boolean cancel(boolean mayInterruptIfRunning) + { + return true; + } + + public boolean isCancelled() + { + return false; + } + + public boolean isDone() + { + return true; + } + + public TableData<T> get() throws InterruptedException, ExecutionException + { + return tableData; + } + + public TableData<T> get(long timeout, TimeUnit unit) + throws InterruptedException, ExecutionException, TimeoutException + { + return get(); + } + }; } - private synchronized <T> void addToCache(K dataKey, TableData<T> tableData) + private <T> Future<TableData<T>> loadCompleteTableInBackground( + final IOriginalDataProvider<T> dataProvider, final K dataKey) + { + Future<TableData<T>> future; + Callable<TableData<T>> callable = new Callable<TableData<T>>() + { + public TableData<T> call() throws Exception + { + List<T> rows = dataProvider.getOriginalData(Integer.MAX_VALUE); + List<TableModelColumnHeader> headers = dataProvider.getHeaders(); + debug(rows.size() + " records loaded for key "+dataKey); + TableData<T> tableData = + new TableData<T>(rows, headers, customColumnsProvider, + columnCalculator); + xmlPropertyTransformer.transformXMLProperties(rows); + return tableData; + } + }; + future = executor.submit(callable); + return future; + } + + + private synchronized <T> void addToCache(K dataKey, Future<TableData<T>> tableData) { cache.put(dataKey, tableData); + debug(cache.size() + " keys in cache: " + cache.keySet()); } private static <K, T> IResultSet<K, T> calculateSortAndFilterResult(String sessionToken, - TableData<T> tableData, final IResultSetConfig<K, T> resultConfig, K dataKey) + TableData<T> tableData, final IResultSetConfig<K, T> resultConfig, K dataKey, boolean partial) { GridRowModels<T> data = tableData.getRows(sessionToken, resultConfig); - return filterLimitAndSort(resultConfig, data, dataKey); + return filterLimitAndSort(resultConfig, data, dataKey, partial); } private synchronized <T> TableData<T> tryGetCachedTableData(K dataKey) { - TableData<T> tableData = cast(cache.get(dataKey)); + Future<TableData<T>> tableData = cast(cache.get(dataKey)); if (tableData == null) { operationLog.error("Reference to the stale cache key " + dataKey); + return null; + } + try + { + return tableData.get(); + } catch (InterruptedException ex) + { + throw CheckedExceptionTunnel.wrapIfNecessary(ex); + } catch (ExecutionException ex) + { + throw CheckedExceptionTunnel.wrapIfNecessary(ex.getCause()); } - return tableData; } private static <K, T> IResultSet<K, T> filterLimitAndSort( - final IResultSetConfig<K, T> resultConfig, GridRowModels<T> data, K dataKey) + final IResultSetConfig<K, T> resultConfig, GridRowModels<T> data, K dataKey, boolean partial) { GridRowModels<T> filteredData = filterData(data, resultConfig.getAvailableColumns(), resultConfig.getFilters()); @@ -722,12 +815,13 @@ public final class CachedResultSetManager<K> implements IResultSetManager<K>, Se final SortInfo<T> sortInfo = resultConfig.getSortInfo(); sortData(filteredData, sortInfo); final GridRowModels<T> list = subList(filteredData, offset, limit); - return new DefaultResultSet<K, T>(dataKey, list, size); + return new DefaultResultSet<K, T>(dataKey, list, size, partial); } public final synchronized void removeResultSet(final K resultSetKey) { assert resultSetKey != null : "Unspecified data key holder."; + debug("remove key " + resultSetKey); if (cache.remove(resultSetKey) != null) { debug(String.format("Result set for key '%s' has been removed.", resultSetKey)); @@ -740,6 +834,6 @@ public final class CachedResultSetManager<K> implements IResultSetManager<K>, Se private void debug(String msg) { - operationLog.debug(msg); + operationLog.info(msg); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/DataProviderAdapter.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/DataProviderAdapter.java index a9179b00c74dd915815ebfaa1c0e504e11f1c13b..ba2cf943ec827ab5efe34d4eb021efdcb5bed1bb 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/DataProviderAdapter.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/DataProviderAdapter.java @@ -16,35 +16,43 @@ package ch.systemsx.cisd.openbis.generic.client.web.server.resultset; +import java.util.Collections; import java.util.List; -import ch.systemsx.cisd.openbis.generic.client.web.server.AbstractOriginalDataProviderWithoutHeaders; +import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.openbis.generic.shared.basic.ISerializable; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelColumnHeader; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; /** + * Adapter which turns a {@link ITableModelProvider} into a {@link IOriginalDataProvider}. + * * @author Franz-Josef Elmer */ -public final class DataProviderAdapter<T extends ISerializable> extends - AbstractOriginalDataProviderWithoutHeaders<TableModelRowWithObject<T>> +public final class DataProviderAdapter<T extends ISerializable> implements + IOriginalDataProvider<TableModelRowWithObject<T>> { private final ITableModelProvider<T> provider; + + private TypedTableModel<T> tableModel; public DataProviderAdapter(ITableModelProvider<T> provider) { this.provider = provider; } - @Override - public List<TableModelRowWithObject<T>> getFullOriginalData() + public List<TableModelRowWithObject<T>> getOriginalData(int maxSize) + throws UserFailureException { - return provider.getTableModel().getRows(); + tableModel = provider.getTableModel(maxSize); + return tableModel.getRows(); } - @Override public List<TableModelColumnHeader> getHeaders() { - return provider.getTableModel().getHeader(); + return tableModel == null ? Collections.<TableModelColumnHeader> emptyList() : tableModel + .getHeader(); } + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/DefaultResultSet.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/DefaultResultSet.java index b5b0a200badf553d4092ab8fe874b0d8210cdd57..f4333a9d498d5731e0e6dcd5c32bc7f00338bdf4 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/DefaultResultSet.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/DefaultResultSet.java @@ -31,8 +31,11 @@ public final class DefaultResultSet<K, T> implements IResultSet<K, T> private final int totalLength; - public DefaultResultSet(final K resultSetKey, final GridRowModels<T> list, final int totalLength) + private final boolean partial; + + public DefaultResultSet(final K resultSetKey, final GridRowModels<T> list, final int totalLength, boolean partial) { + this.partial = partial; assert resultSetKey != null : "Unspecified result set key"; assert list != null : "Unspecified list."; assert totalLength > -1 : "Total length must be >= 0."; @@ -60,4 +63,9 @@ public final class DefaultResultSet<K, T> implements IResultSet<K, T> return totalLength; } + public boolean isPartial() + { + return partial; + } + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/FileFormatTypesProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/FileFormatTypesProvider.java index ea88ba19f6ef16cc862194dd4072521fb458681c..6afc08d1d0ac9b4d5a50ee0849019aabf0022479 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/FileFormatTypesProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/FileFormatTypesProvider.java @@ -38,7 +38,7 @@ public class FileFormatTypesProvider extends AbstractCommonTableModelProvider<Fi } @Override - protected TypedTableModel<FileFormatType> createTableModel() + protected TypedTableModel<FileFormatType> createTableModel(int maxSize) { List<FileFormatType> fileFormats = commonServer.listFileFormatTypes(sessionToken); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/IOriginalDataProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/IOriginalDataProvider.java index af43dc83f9f834cb6df1cbb2781d6eccba767a4d..c12bbcd1eea69fead9cce391dc62cee64717fe5c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/IOriginalDataProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/IOriginalDataProvider.java @@ -30,15 +30,11 @@ public interface IOriginalDataProvider<T> { /** - * Gets the original data limited to not more than specified number of items. + * Gets the original data limited by specified number of items. All data is returned if the + * argument is {@link Integer#MAX_VALUE}. */ public List<T> getOriginalData(int maxSize) throws UserFailureException; - /** - * Returns the original data. - */ - public List<T> getOriginalData() throws UserFailureException; - /** * Returns headers if known, otherwise an empty list is returned. */ diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/IResultSet.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/IResultSet.java index e6d8355718efa218a5e42cbe7c5d547bcd6fe5a2..006521a6b4be7783268cec320859b2dbf70c1629 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/IResultSet.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/IResultSet.java @@ -46,4 +46,10 @@ public interface IResultSet<K, T> */ public int getTotalLength(); + /** + * Returns <code>true</code> if this result set is not complete. Note, that + * {@link #getTotalLength()} is meaningless if this is the case. + */ + public boolean isPartial(); + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/ITableModelProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/ITableModelProvider.java index 6121aed388008ba2719f8d4aa9a3a37be51a24a8..8ebb043e825605d644179557517b2651ee50fd97 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/ITableModelProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/ITableModelProvider.java @@ -27,12 +27,8 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; public interface ITableModelProvider<T extends ISerializable> { /** - * Returns the full table model. - */ - public TypedTableModel<T> getTableModel(); - - /** - * Returns the table model limited as specified. + * Returns the table model limited as specified. For {@link Integer#MAX_VALUE} the full table + * model is returned. */ public TypedTableModel<T> getTableModel(int maxSize); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/MatchingEntitiesProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/MatchingEntitiesProvider.java index 55432068f1c8887cdfcc63b6a7416911934a38a4..d0d2962a4a6b5b1b702a6aaeef18c6dc6421ab9f 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/MatchingEntitiesProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/MatchingEntitiesProvider.java @@ -52,7 +52,7 @@ public class MatchingEntitiesProvider extends AbstractCommonTableModelProvider<M } @Override - protected TypedTableModel<MatchingEntity> createTableModel() + protected TypedTableModel<MatchingEntity> createTableModel(int maxSize) { List<MatchingEntity> entities = commonServer.listMatchingEntities(sessionToken, matchingEntities, queryText, diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/ProjectsProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/ProjectsProvider.java index 5b0fc2204bbc1f7632f81b87f983d1c75f5723ed..7380246d8932f3753128c1d0fc6dd96449114519 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/ProjectsProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/ProjectsProvider.java @@ -43,7 +43,7 @@ public class ProjectsProvider extends AbstractCommonTableModelProvider<Project> } @Override - protected TypedTableModel<Project> createTableModel() + protected TypedTableModel<Project> createTableModel(int maxSize) { List<Project> projects = commonServer.listProjects(sessionToken); TypedTableModelBuilder<Project> builder = new TypedTableModelBuilder<Project>(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleProvider.java index 2e369ce0db4655afb865a23a58d1b39a81181a85..767c6ae91b1c26ca907b668346863956b5f7c9c0 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleProvider.java @@ -67,7 +67,7 @@ public class SampleProvider extends AbstractCommonTableModelProvider<Sample> } @Override - protected TypedTableModel<Sample> createTableModel() + protected TypedTableModel<Sample> createTableModel(int maxSize) { List<Sample> samples = getSamples(); TypedTableModelBuilder<Sample> builder = new TypedTableModelBuilder<Sample>(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SpacesProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SpacesProvider.java index ab687ebda08ffb4d719028b0eb676101c5e0f840..25887e588ebfbc34d240936697c7067e7d04f27e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SpacesProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SpacesProvider.java @@ -42,7 +42,7 @@ public class SpacesProvider extends AbstractCommonTableModelProvider<Space> } @Override - protected TypedTableModel<Space> createTableModel() + protected TypedTableModel<Space> createTableModel(int maxSize) { DatabaseInstanceIdentifier identifier = new DatabaseInstanceIdentifier(null); List<Space> spaces = commonServer.listSpaces(sessionToken, identifier); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/VocabulariesProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/VocabulariesProvider.java index fc2e14b7d54891e111a9eec76477daf5aaf7fef5..c80b497333329b49827f53ba5ef376970915de6d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/VocabulariesProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/VocabulariesProvider.java @@ -51,7 +51,7 @@ public class VocabulariesProvider extends AbstractCommonTableModelProvider<Vocab } @Override - protected TypedTableModel<Vocabulary> createTableModel() + protected TypedTableModel<Vocabulary> createTableModel(int maxSize) { List<Vocabulary> vocabularies = commonServer.listVocabularies(sessionToken, withTerms, excludeInternal); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/VocabularyTermsProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/VocabularyTermsProvider.java index fac647a6ce7d0ccb0584755ece42f81d423e55c0..a3d9672e8181ee632e9559282b77df68068cb0e8 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/VocabularyTermsProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/VocabularyTermsProvider.java @@ -57,7 +57,7 @@ public class VocabularyTermsProvider extends AbstractCommonTableModelProvider<Vo } @Override - protected TypedTableModel<VocabularyTermWithStats> createTableModel() + protected TypedTableModel<VocabularyTermWithStats> createTableModel(int maxSize) { TypedTableModelBuilder<VocabularyTermWithStats> builder = new TypedTableModelBuilder<VocabularyTermWithStats>(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/translator/ResultSetTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/translator/ResultSetTranslator.java index 2c79db268303ca321f7bed7fc2437d055b4cf763..44ee7fce9f35877ad8b300e5f22f1698e4176d31 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/translator/ResultSetTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/translator/ResultSetTranslator.java @@ -48,6 +48,7 @@ public final class ResultSetTranslator resultSet.setList(resultSetList); resultSet.setTotalLength(result.getTotalLength()); resultSet.setResultSetKey(result.getResultSetKey()); + resultSet.setPartial(result.isPartial()); return resultSet; } } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientServiceTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientServiceTest.java index 6307181b984b248eaf0b126f0732875e399506b4..928f789f24d0468c50a5eddc167c484bba6a5929 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientServiceTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientServiceTest.java @@ -299,7 +299,7 @@ public final class CommonClientServiceTest extends AbstractClientServiceTest final String resultSetKey = "131"; GridRowModels<T> rowModels = createGridRowModels(entities); final DefaultResultSet<String, T> defaultResultSet = - new DefaultResultSet<String, T>(resultSetKey, rowModels, entities.size()); + new DefaultResultSet<String, T>(resultSetKey, rowModels, entities.size(), false); context.checking(new Expectations() { { @@ -326,7 +326,7 @@ public final class CommonClientServiceTest extends AbstractClientServiceTest GridRowModels<TableModelRowWithObject<T>> rowModels = createGridRowModels(rows); final DefaultResultSet<String, TableModelRowWithObject<T>> resultSet = new DefaultResultSet<String, TableModelRowWithObject<T>>(resultSetKey, rowModels, - entities.size()); + entities.size(), false); context.checking(new Expectations() { { diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/CachedResultSetManagerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/CachedResultSetManagerTest.java index 0a91d55d7cb6f0065c789384aafc99523b02f38c..3b80f75d2c93624caf463674d0f1679b97be68ba 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/CachedResultSetManagerTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/CachedResultSetManagerTest.java @@ -331,14 +331,31 @@ public final class CachedResultSetManagerTest extends AssertJUnit } @Test - public void testOffsetAndLimit() + public void testOffset() { prepareDataAndCustomColumnDefinitions(20); ResultSetConfigBuilder builder = new ResultSetConfigBuilder(COL_DEFS).displayID(GRID_DISPLAY_ID); - getAndCheckRows(10, 0, builder.offset(-1).limit(10)); + builder.fetchFromCache(KEY); + getAndCheckRows(18, 2, builder.offset(2).limit(-1)); + getAndCheckRows(1, 19, builder.offset(19).limit(-1)); + getAndCheckRows(1, 19, builder.offset(20).limit(-1)); + getAndCheckRows(1, 19, builder.offset(21).limit(-1)); + getAndCheckRows(20, 0, builder.offset(-1).limit(-1)); + context.assertIsSatisfied(); + } + + @Test + public void testOffsetAndLimit() + { + prepareDataAndCustomColumnDefinitions(20, 10); + ResultSetConfigBuilder builder = + new ResultSetConfigBuilder(COL_DEFS).displayID(GRID_DISPLAY_ID); + + getAndCheckRows(10, 0, builder.offset(-1).limit(10)); + builder.fetchFromCache(KEY); getAndCheckRows(10, 9, builder.offset(9).limit(10)); getAndCheckRows(10, 10, builder.offset(10).limit(10)); @@ -346,12 +363,7 @@ public final class CachedResultSetManagerTest extends AssertJUnit getAndCheckRows(1, 19, builder.offset(19).limit(10)); getAndCheckRows(1, 19, builder.offset(20).limit(10)); getAndCheckRows(1, 19, builder.offset(21).limit(10)); - getAndCheckRows(18, 2, builder.offset(2).limit(-1)); - getAndCheckRows(1, 19, builder.offset(19).limit(-1)); - getAndCheckRows(1, 19, builder.offset(20).limit(-1)); - getAndCheckRows(1, 19, builder.offset(21).limit(-1)); - getAndCheckRows(20, 0, builder.offset(-1).limit(-1)); - + context.assertIsSatisfied(); } @@ -411,7 +423,7 @@ public final class CachedResultSetManagerTest extends AssertJUnit one(keyGenerator).createKey(); will(returnValue(KEY)); - one(originalDataProvider).getOriginalData(); + one(originalDataProvider).getOriginalData(Integer.MAX_VALUE); will(returnValue(Arrays.asList())); one(originalDataProvider).getHeaders(); @@ -738,7 +750,7 @@ public final class CachedResultSetManagerTest extends AssertJUnit one(keyGenerator).createKey(); will(returnValue(KEY)); - one(originalDataProvider).getOriginalData(); + one(originalDataProvider).getOriginalData(Integer.MAX_VALUE); will(returnValue(createDataList())); one(originalDataProvider).getHeaders(); @@ -808,7 +820,7 @@ public final class CachedResultSetManagerTest extends AssertJUnit one(keyGenerator).createKey(); will(returnValue(KEY)); - one(originalDataProvider).getOriginalData(); + one(originalDataProvider).getOriginalData(Integer.MAX_VALUE); will(returnValue(data)); one(originalDataProvider).getHeaders(); @@ -854,7 +866,7 @@ public final class CachedResultSetManagerTest extends AssertJUnit one(keyGenerator).createKey(); will(returnValue(KEY)); - one(originalDataProvider).getOriginalData(); + one(originalDataProvider).getOriginalData(Integer.MAX_VALUE); will(returnValue(createDataList())); one(originalDataProvider).getHeaders(); @@ -879,7 +891,7 @@ public final class CachedResultSetManagerTest extends AssertJUnit one(keyGenerator).createKey(); will(returnValue(KEY)); - one(originalDataProvider).getOriginalData(); + one(originalDataProvider).getOriginalData(Integer.MAX_VALUE); will(returnValue(createDataList("a", "b"))); one(originalDataProvider).getHeaders(); @@ -927,6 +939,12 @@ public final class CachedResultSetManagerTest extends AssertJUnit private void prepareDataAndCustomColumnDefinitions(final int size, final GridCustomColumn... columns) + { + prepareDataAndCustomColumnDefinitions(size, Integer.MAX_VALUE, columns); + } + + private void prepareDataAndCustomColumnDefinitions(final int size, final int maxSize, + final GridCustomColumn... columns) { context.checking(new Expectations() { @@ -934,16 +952,24 @@ public final class CachedResultSetManagerTest extends AssertJUnit one(keyGenerator).createKey(); will(returnValue(KEY)); - one(originalDataProvider).getOriginalData(); + one(originalDataProvider).getOriginalData(maxSize); DataHolder[] rows = new DataHolder[size]; for (int i = 0; i < rows.length; i++) { rows[i] = new DataHolder(i + "-a" + i % 2); } will(returnValue(Arrays.asList(rows))); - + one(originalDataProvider).getHeaders(); will(returnValue(Arrays.asList())); + + if (size >= maxSize) + { + one(originalDataProvider).getOriginalData(Integer.MAX_VALUE); + will(returnValue(Arrays.asList(rows))); + one(originalDataProvider).getHeaders(); + will(returnValue(Arrays.asList())); + } allowing(customColumnsProvider).getGridCustomColumn(SESSION_TOKEN, GRID_DISPLAY_ID); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/FileFormatTypesProviderTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/FileFormatTypesProviderTest.java index 0ed3fee1efc3f120ae3f01fd61c7fb935a1adece..da1a86c95c2489085bad7ab827975132a351f4dc 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/FileFormatTypesProviderTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/FileFormatTypesProviderTest.java @@ -60,7 +60,7 @@ public class FileFormatTypesProviderTest extends AbstractProviderTest { FileFormatTypesProvider vocabulariesProvider = new FileFormatTypesProvider(server, SESSION_TOKEN); - TypedTableModel<FileFormatType> tableModel = vocabulariesProvider.getTableModel(); + TypedTableModel<FileFormatType> tableModel = vocabulariesProvider.getTableModel(Integer.MAX_VALUE); assertEquals("[CODE, DESCRIPTION]", getHeaderIDs(tableModel).toString()); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleProviderTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleProviderTest.java index 4f3280352573317ee299757742e0828d0815a489..c79e440cf1ef62ea9966d6dc644c1641df6fd291 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleProviderTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/SampleProviderTest.java @@ -78,7 +78,7 @@ public class SampleProviderTest extends AbstractProviderTest } }); - TypedTableModel<Sample> tableModel = sampleProvider.getTableModel(); + TypedTableModel<Sample> tableModel = sampleProvider.getTableModel(Integer.MAX_VALUE); assertEquals( "[CODE, SUBCODE, DATABASE_INSTANCE, SPACE, SAMPLE_IDENTIFIER, SAMPLE_TYPE, " @@ -131,7 +131,7 @@ public class SampleProviderTest extends AbstractProviderTest } }); - TypedTableModel<Sample> tableModel = sampleProvider.getTableModel(); + TypedTableModel<Sample> tableModel = sampleProvider.getTableModel(Integer.MAX_VALUE); assertEquals( "[CODE, SUBCODE, DATABASE_INSTANCE, SPACE, SAMPLE_IDENTIFIER, SAMPLE_TYPE, " diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/VocabulariesProviderTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/VocabulariesProviderTest.java index 5386dfdba101708a97a7018b9996ce9677f8165d..9c3f64db99de519f1103fa5b7bea3b7716fb034b 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/VocabulariesProviderTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/VocabulariesProviderTest.java @@ -61,7 +61,7 @@ public class VocabulariesProviderTest extends AbstractProviderTest { VocabulariesProvider vocabulariesProvider = new VocabulariesProvider(server, SESSION_TOKEN, true, false); - TypedTableModel<Vocabulary> tableModel = vocabulariesProvider.getTableModel(); + TypedTableModel<Vocabulary> tableModel = vocabulariesProvider.getTableModel(Integer.MAX_VALUE); assertEquals( "[CODE, DESCRIPTION, IS_MANAGED_INTERNALLY, REGISTRATOR, REGISTRATION_DATE, URL_TEMPLATE, " diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProvider.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProvider.java index 988402c740106508b9ca560afe4b080af356a7fd..25bc49a4740f1fdf37c73b19ffad36c9f1c4b078 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProvider.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProvider.java @@ -48,7 +48,7 @@ class RawDataSampleProvider extends AbstractTableModelProvider<Sample> } @Override - public TypedTableModel<Sample> createTableModel() + public TypedTableModel<Sample> createTableModel(int maxSize) { List<MsInjectionSample> samples = service.listRawDataSamples(sessionToken); TypedTableModelBuilder<Sample> builder = new TypedTableModelBuilder<Sample>(); diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/PhosphoNetXClientServiceTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/PhosphoNetXClientServiceTest.java index 2e3ee7d683fa107bcb411b4bf3769d42fa20dfd6..3c8c161796696f64f36a432b32c9a33c263c4561 100644 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/PhosphoNetXClientServiceTest.java +++ b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/PhosphoNetXClientServiceTest.java @@ -78,7 +78,7 @@ public class PhosphoNetXClientServiceTest extends AbstractFileSystemTestCase throws UserFailureException { List<TableModelColumnHeader> headers = dataProvider.getHeaders(); - List<T> originalData = dataProvider.getOriginalData(); + List<T> originalData = dataProvider.getOriginalData(Integer.MAX_VALUE); List<GridRowModel<T>> rows = new ArrayList<GridRowModel<T>>(); for (int i = 0; i < originalData.size(); i++) { @@ -86,7 +86,7 @@ public class PhosphoNetXClientServiceTest extends AbstractFileSystemTestCase rows.add(new GridRowModel<T>(rowData, null)); } return new DefaultResultSet<K, T>(resultConfig.getCacheConfig().tryGetResultSetKey(), - new GridRowModels<T>(rows, headers, null, null), rows.size()); + new GridRowModels<T>(rows, headers, null, null), rows.size(), false); } public void removeResultSet(K resultSetKey) throws UserFailureException diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProviderTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProviderTest.java index a01f76e600b31cc90b149aaff099752b672ebe19..355b72867a2f68378b4e788f1112af858416c4a6 100644 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProviderTest.java +++ b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProviderTest.java @@ -71,7 +71,7 @@ public class RawDataSampleProviderTest extends AbstractServerTestCase { prepareListRawDataSamples(); - List<TableModelColumnHeader> headers = provider.getTableModel().getHeader(); + List<TableModelColumnHeader> headers = provider.getTableModel(Integer.MAX_VALUE).getHeader(); assertFixedColumns(headers); assertEquals(4, headers.size()); @@ -86,7 +86,7 @@ public class RawDataSampleProviderTest extends AbstractServerTestCase Sample ms3 = sample("MS3", sample("DE", "gamma", "alpha"), "two"); prepareListRawDataSamples(ms1, ms2, ms3); - List<TableModelColumnHeader> headers = provider.getTableModel().getHeader(); + List<TableModelColumnHeader> headers = provider.getTableModel(Integer.MAX_VALUE).getHeader(); assertFixedColumns(headers); assertPropertyHeader("one", "USER-ONE", 4, headers); @@ -103,7 +103,7 @@ public class RawDataSampleProviderTest extends AbstractServerTestCase { prepareListRawDataSamples(); - List<TableModelRowWithObject<Sample>> data = provider.getTableModel().getRows(); + List<TableModelRowWithObject<Sample>> data = provider.getTableModel(Integer.MAX_VALUE).getRows(); assertEquals(0, data.size()); context.assertIsSatisfied(); @@ -121,7 +121,7 @@ public class RawDataSampleProviderTest extends AbstractServerTestCase Sample ms3 = sample("MS3", parent, "2"); prepareListRawDataSamples(ms1, ms2, ms3); - TypedTableModel<Sample> tableModel = provider.getTableModel(); + TypedTableModel<Sample> tableModel = provider.getTableModel(Integer.MAX_VALUE); List<TableModelRowWithObject<Sample>> data = tableModel.getRows(); assertEquals(3, data.size()); diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/PlateMetadataProvider.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/PlateMetadataProvider.java index 5a28df480186242e58f861258d9de0eaaaddf6ad..a92c2f44831c53c7ddb80cfdc6ae95c865e3363f 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/PlateMetadataProvider.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/PlateMetadataProvider.java @@ -52,7 +52,7 @@ class PlateMetadataProvider extends AbstractTableModelProvider<WellMetadata> } @Override - public TypedTableModel<WellMetadata> createTableModel() + public TypedTableModel<WellMetadata> createTableModel(int maxSize) { TypedTableModelBuilder<WellMetadata> builder = new TypedTableModelBuilder<WellMetadata>(); PlateContent plateContent = server.getPlateContent(sessionToken, plateId); diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/WellContentProvider.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/WellContentProvider.java index 62f5bffca4a9b75ad756b27857fe265bb216fa96..2df1403c60ea7f1fd20a7b0ec1e789f975423b07 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/WellContentProvider.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/WellContentProvider.java @@ -69,7 +69,7 @@ public class WellContentProvider extends AbstractTableModelProvider<WellContent> } @Override - protected TypedTableModel<WellContent> createTableModel() + protected TypedTableModel<WellContent> createTableModel(int maxSize) { TypedTableModelBuilder<WellContent> builder = new TypedTableModelBuilder<WellContent>(); builder.addColumn(WELL_CONTENT_MATERIAL); diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/PlateMetadataProviderTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/PlateMetadataProviderTest.java index e2dfd74cc273f37fabedce65bbe42dbfe1516087..ebce0f8b652e72157bb8b3715e8a3f6a11041c04 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/PlateMetadataProviderTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/PlateMetadataProviderTest.java @@ -85,8 +85,7 @@ public class PlateMetadataProviderTest extends AbstractServerTestCase } }); - TypedTableModel<WellMetadata> tableModel = provider.getTableModel(); - assertSame(tableModel, provider.getTableModel()); + TypedTableModel<WellMetadata> tableModel = provider.getTableModel(Integer.MAX_VALUE); List<TableModelColumnHeader> headers = tableModel.getHeader(); assertEquals(null, headers.get(0).getTitle());