Пустые строки в сетке Ваадина после применения фильтра
Я пытаюсь использовать Vaadin Grid с ленивой загрузкой. Когда я добавляю фильтр в сетку, при некоторых значениях фильтра я вижу пустые строки и получаю java.lang.IndexOutOfBoundsException: toIndex = 45. Ниже мой код:
public class ProcessService {
private List<GeneralProcess> processList;
private int i;
public ProcessService() {
processList=new Repository().list(); //fetch all data from DB
}
public List<GeneralProcess> findAll(int offset, int limit, String
filter){
Collections.sort(processList,Comparator
.comparing(GeneralProcess::getName));
if(filter!=null) {
return processList.stream().filter((s) ->
s.getName().startsWith(filter))
.collect(Collectors.toList()).subList(offset,offset+limit);
}
else {
return processList.subList(offset,offset+limit);
}
}
public int count() {
return processList.size();
}
А вот код из пользовательского интерфейса:
private TextField FilterProcessName= new TextField();
DataProvider<GeneralProcess,String> provider=
DataProvider.fromFilteringCallbacks(query->{
int offset = query.getOffset();
int limit = query.getLimit();
String filter = query.getFilter().orElse(null);
List<GeneralProcess> processes =
service.findAll(offset, limit,filter);
return processes.stream();
},
query -> service.count());
ConfigurableFilterDataProvider<GeneralProcess,Void,String> wrapper=
provider.withConfigurableFilter();
grid.setDataProvider(wrapper);
FilterProcessName.addValueChangeListener(event -> {
String filter = event.getValue();
if (filter.trim().isEmpty()) {
filter = null;
}
wrapper.setFilter(filter);
grid.getDataProvider().refreshAll();
});
Проблема возникает, когда значение фильтра очень узкое и в сетке должно быть всего несколько строк. Пожалуйста, помогите