package sushi.application.pages.eventrepository.model;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortState;
import org.apache.wicket.extensions.markup.html.repeater.data.table.ISortableDataProvider;
import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.IFilterStateLocator;
import org.apache.wicket.extensions.markup.html.repeater.util.SingleSortState;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import sushi.application.components.table.SushiProvider;
import sushi.application.components.table.model.AbstractDataProvider;
import sushi.event.SushiEvent;
import sushi.eventhandling.Broker;
/**
* This class is the provider for {@link SushiEvent}s.
* A filter can be specified to return only some events.
* @author micha
*/
public class EventProvider extends SushiProvider<SushiEvent> implements ISortableDataProvider<SushiEvent, String>, IFilterStateLocator {
private static final long serialVersionUID = 1L;
private EventFilter eventFilter = new EventFilter();
/**
* Constructor for providing {@link SushiEvent}s.
*/
public EventProvider() {
super(SushiEvent.findAll());
entities = filterEvents(SushiEvent.findAll(), eventFilter);
}
private List<SushiEvent> filterEvents(List<SushiEvent> eventsToFilter, EventFilter eventFilter) {
List<SushiEvent> returnedEvents = new ArrayList<SushiEvent>();
for(SushiEvent event: eventsToFilter){
if(eventFilter.match(event)){
returnedEvents.add(event);
}
}
return returnedEvents;
}
@Override
public Object getFilterState() {
return eventFilter;
}
@Override
public void setFilterState(Object state) {
this.eventFilter = (EventFilter) state;
}
public EventFilter getEventFilter() {
return eventFilter;
}
public void setEventFilter(EventFilter eventFilter) {
this.eventFilter = eventFilter;
entities = filterEvents(SushiEvent.findAll(), eventFilter);
}
}