blob: 0c1637b6dc3c24f09fee97dfa8338a9b8d2806d8 [file] [log] [blame]
/**
* Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Florian Pirchner - Initial implementation
*/
package org.eclipse.osbp.runtime.web.vaadin.common.data;
import java.util.Collection;
import java.util.List;
import org.eclipse.osbp.runtime.common.filter.SortOrder;
import com.vaadin.data.Container.Filter;
public class StatefulInMemoryBeanSearchService<BEAN> implements IBeanSearchService<BEAN> {
private DeepResolvingBeanItemContainer<BEAN> delegate;
public StatefulInMemoryBeanSearchService(Class<BEAN> type) {
delegate = new DeepResolvingBeanItemContainer<BEAN>(type);
}
public void addBean(BEAN bean) {
delegate.addBean(bean);
}
public void addBeans(Collection<BEAN> beans) {
delegate.addAll(beans);
}
@Override
public int size(List<Filter> filters) {
setupContainer(filters);
return delegate.size();
}
@Override
public boolean contains(BEAN bean, List<Filter> filters) {
setupContainer(filters);
return delegate.containsId(bean);
}
protected void setupContainer(List<Filter> filters) {
delegate.removeAllContainerFilters();
for (Filter filter : filters) {
delegate.addContainerFilter(filter);
}
}
@Override
public BEAN getNextBean(BEAN bean, List<Filter> filters, SortOrder sortOrder) {
setupContainer(filters);
return delegate.nextItemId(bean);
}
@Override
public BEAN getPreviousBean(BEAN bean, List<Filter> filters, SortOrder sortOrder) {
setupContainer(filters);
return delegate.prevItemId(bean);
}
@Override
public BEAN getFirstBean(List<Filter> filters, SortOrder sortOrder) {
setupContainer(filters);
return delegate.firstItemId();
}
@Override
public BEAN getLastBean(List<Filter> filters, SortOrder sortOrder) {
setupContainer(filters);
return delegate.lastItemId();
}
@Override
public boolean isFirstBean(BEAN bean, List<Filter> filters, SortOrder sortOrder) {
setupContainer(filters);
return delegate.isFirstId(bean);
}
@Override
public boolean isLastBean(BEAN bean, List<Filter> filters, SortOrder sortOrder) {
return delegate.isLastId(bean);
}
@Override
public int indexOf(BEAN bean, List<Filter> filters, SortOrder sortOrder) {
setupContainer(filters);
return delegate.indexOfId(bean);
}
@Override
public BEAN getBeanByIndex(int index, List<Filter> filters, SortOrder sortOrder) {
setupContainer(filters);
return delegate.getIdByIndex(index);
}
@Override
public List<BEAN> getBeansByIndex(int startIndex, int numberOfItems, List<Filter> filters, SortOrder sortOrder) {
setupContainer(filters);
return delegate.getItemIds(startIndex, numberOfItems);
}
@Override
public BEAN refresh(BEAN bean) {
return bean;
}
}