package com.griddynamics.jagger.webclient.client.data;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.view.client.*;
import com.griddynamics.jagger.webclient.client.SessionDataService;
import com.griddynamics.jagger.webclient.client.components.ExceptionPanel;
import com.griddynamics.jagger.webclient.client.dto.PagedSessionDataDto;
import com.griddynamics.jagger.dbapi.dto.SessionDataDto;
import java.util.Set;
/**
* @author "Artem Kirillov" (akirillov@griddynamics.com)
* @since 6/20/12
*/
public class SessionDataForSessionIdsAsyncProvider extends ExtendedAsyncDataProvider<SessionDataDto> {
private Set<String> sessionIds;
public SessionDataForSessionIdsAsyncProvider() {
}
public SessionDataForSessionIdsAsyncProvider(Set<String> sessionIds) {
this.sessionIds = sessionIds;
}
public SessionDataForSessionIdsAsyncProvider(ProvidesKey<SessionDataDto> keyProvider, Set<String> sessionIds) {
super(keyProvider);
this.sessionIds = sessionIds;
}
public void setSessionIds(Set<String> sessionIds) {
this.sessionIds = sessionIds;
update();
}
@Override
protected void onRangeChanged(HasData<SessionDataDto> display) {
Range range = display.getVisibleRange();
final int start = range.getStart();
SessionDataService.Async.getInstance().getBySessionIds(start, range.getLength(), sessionIds, new AsyncCallback<PagedSessionDataDto>() {
@Override
public void onFailure(Throwable caught) {
new ExceptionPanel("Error is occurred during server request processing (Session data fetching) for session IDs " + sessionIds);
}
@Override
public void onSuccess(PagedSessionDataDto result) {
updateRowData(start, result.getSessionDataDtoList());
updateRowCount(result.getTotalSize(), true);
}
});
}
}