Browse Source

Reworks the datasource size logic (#13334)

There's no setting of size, but it's inferred instead. Also, you can't 
set the size, only ask for a size.

Change-Id: Ibec5ecc5008b3fc38e5942c25e1b8ff8a1b7e402
tags/7.4.0.beta1
Henrik Paul 9 years ago
parent
commit
0b451f018c

+ 3
- 20
client/src/com/vaadin/client/data/AbstractRemoteDataSource.java View File

@@ -144,8 +144,6 @@ public abstract class AbstractRemoteDataSource<T> implements DataSource<T> {

private DataChangeHandler dataChangeHandler;

private Range availableDataRange = Range.between(0, 0);

private CacheStrategy cacheStrategy = new CacheStrategy.DefaultCacheStrategy();

private final ScheduledCommand coverageChecker = new ScheduledCommand() {
@@ -160,17 +158,6 @@ public abstract class AbstractRemoteDataSource<T> implements DataSource<T> {
private Map<Object, RowHandleImpl> pinnedRows = new HashMap<Object, RowHandleImpl>();
protected Collection<T> temporarilyPinnedRows = Collections.emptySet();

/**
* Sets the number of rows in the data source.
*
* @param size
* the number of available rows
*/
protected void setSize(int size) {
// TODO update dataChangeHandler if size changes
availableDataRange = Range.withLength(0, size);
}

private void ensureCoverageCheck() {
if (!coverageCheckPending) {
coverageCheckPending = true;
@@ -257,11 +244,6 @@ public abstract class AbstractRemoteDataSource<T> implements DataSource<T> {
*/
protected abstract void requestRows(int firstRowIndex, int numberOfRows);

@Override
public int size() {
return availableDataRange.length();
}

@Override
public T getRow(int rowIndex) {
return rowCache.get(Integer.valueOf(rowIndex));
@@ -395,7 +377,7 @@ public abstract class AbstractRemoteDataSource<T> implements DataSource<T> {
.length());
cached = remainsBefore.combineWith(transposedRemainsAfter);
}
setSize(size() - count);
dataChangeHandler.dataRemoved(firstRowIndex, count);
checkCacheCoverage();

@@ -441,7 +423,6 @@ public abstract class AbstractRemoteDataSource<T> implements DataSource<T> {
}
}

setSize(size() + count);
dataChangeHandler.dataAdded(firstRowIndex, count);
checkCacheCoverage();

@@ -480,6 +461,7 @@ public abstract class AbstractRemoteDataSource<T> implements DataSource<T> {
}

private Range getMinCacheRange() {
Range availableDataRange = Range.withLength(0, size());
Range minCacheRange = cacheStrategy.getMinCacheRange(
requestedAvailability, cached, availableDataRange);

@@ -489,6 +471,7 @@ public abstract class AbstractRemoteDataSource<T> implements DataSource<T> {
}

private Range getMaxCacheRange() {
Range availableDataRange = Range.withLength(0, size());
Range maxCacheRange = cacheStrategy.getMaxCacheRange(
requestedAvailability, cached, availableDataRange);


+ 5
- 6
client/src/com/vaadin/client/data/RpcDataSourceConnector.java View File

@@ -99,13 +99,17 @@ public class RpcDataSourceConnector extends AbstractExtensionConnector {
.releaseTemporarilyPinnedKeys();
}
}

@Override
public int size() {
return getState().containerSize;
}
}

private final RpcDataSource dataSource = new RpcDataSource();

@Override
protected void extend(ServerConnector target) {
dataSource.setSize(getState().containerSize);
((GridConnector) target).setDataSource(dataSource);

registerRpc(DataProviderRpc.class, new DataProviderRpc() {
@@ -141,11 +145,6 @@ public class RpcDataSourceConnector extends AbstractExtensionConnector {
});
}

/*
* (non-Javadoc)
*
* @see com.vaadin.client.ui.AbstractConnector#getState()
*/
@Override
public DataProviderState getState() {
return (DataProviderState) super.getState();

Loading…
Cancel
Save