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.Set;
/**
* Created with IntelliJ IDEA.
* User: mnovozhilov
* Date: 3/7/14
* Time: 3:43 PM
* To change this template use File | Settings | File Templates.
*/
public class SessionDataForSessionTagsAsyncProvider extends ExtendedAsyncDataProvider<SessionDataDto> {
private Set<String> tagNames;
public SessionDataForSessionTagsAsyncProvider() {
}
public SessionDataForSessionTagsAsyncProvider(Set<String> tagNames) {
this.tagNames = tagNames;
}
public SessionDataForSessionTagsAsyncProvider(ProvidesKey<SessionDataDto> keyProvider, Set<String> tagNames) {
super(keyProvider);
this.tagNames = tagNames;
}
public void setTagNames(Set<String> tagNames) {
this.tagNames = tagNames;
update();
}
@Override
protected void onRangeChanged(HasData<SessionDataDto> display) {
Range range = display.getVisibleRange();
final int start = range.getStart();
SessionDataService.Async.getInstance().getBySessionTagsName(start, range.getLength(), tagNames, new AsyncCallback<PagedSessionDataDto>() {
@Override
public void onFailure(Throwable caught) {
new ExceptionPanel("Error is occurred during server request processing (Session data fetching) for tags " + tagNames);
}
@Override
public void onSuccess(PagedSessionDataDto result) {
updateRowData(start, result.getSessionDataDtoList());
updateRowCount(result.getTotalSize(), true);
}
});
}
}