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.components.ExceptionPanel;
import com.griddynamics.jagger.webclient.client.dto.PagedSessionDataDto;
import com.griddynamics.jagger.dbapi.dto.SessionDataDto;
import java.util.Date;
/**
* @author "Artem Kirillov" (akirillov@griddynamics.com)
* @since 6/9/12
*/
public class SessionDataForDatePeriodAsyncProvider extends ExtendedAsyncDataProvider<SessionDataDto> {
private Date from;
private Date to;
public SessionDataForDatePeriodAsyncProvider() {
}
public SessionDataForDatePeriodAsyncProvider(ProvidesKey<SessionDataDto> keyProvider) {
super(keyProvider);
}
public SessionDataForDatePeriodAsyncProvider(Date from, Date to) {
this.from = from;
this.to = to;
}
public SessionDataForDatePeriodAsyncProvider(ProvidesKey<SessionDataDto> keyProvider, Date from, Date to) {
super(keyProvider);
this.from = from;
this.to = to;
}
public void setDateRange(Date from, Date to) {
this.from = from;
this.to = to;
update();
}
@Override
protected void onRangeChanged(HasData<SessionDataDto> display) {
Range range = display.getVisibleRange();
final int start = range.getStart();
SessionDataService.Async.getInstance().getByDatePeriod(start, range.getLength(), from, to, 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);
}
});
}
}