package com.griddynamics.jagger.webclient.client.data; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.view.client.HasData; import com.google.gwt.view.client.ProvidesKey; import com.google.gwt.view.client.Range; import com.griddynamics.jagger.webclient.client.SessionDataService; import com.griddynamics.jagger.webclient.client.SessionDataServiceAsync; import com.griddynamics.jagger.webclient.client.components.ExceptionPanel; import com.griddynamics.jagger.webclient.client.dto.PagedSessionDataDto; import com.griddynamics.jagger.dbapi.dto.SessionDataDto; /** * Fetches all sessions from server * * @author "Artem Kirillov" (akirillov@griddynamics.com) * @since 6/9/12 */ public class SessionDataAsyncDataProvider extends ExtendedAsyncDataProvider<SessionDataDto> { public SessionDataAsyncDataProvider() { } public SessionDataAsyncDataProvider(ProvidesKey<SessionDataDto> keyProvider) { super(keyProvider); } @Override protected void onRangeChanged(HasData<SessionDataDto> display) { Range range = display.getVisibleRange(); final int start = range.getStart(); int end = start + range.getLength(); SessionDataServiceAsync sessionDataService = SessionDataService.Async.getInstance(); AsyncCallback<PagedSessionDataDto> callback = new AsyncCallback<PagedSessionDataDto>() { @Override public void onFailure(Throwable caught) { new ExceptionPanel("Error is occurred during server request processing (Session data fetching): \n" + caught.getMessage()); } @Override public void onSuccess(PagedSessionDataDto result) { updateRowData(start, result.getSessionDataDtoList()); updateRowCount(result.getTotalSize(), true); } }; sessionDataService.getAll(start, range.getLength(), callback); } }