package sushi.application.pages.eventrepository.model; import sushi.application.pages.eventrepository.EventPanel; import sushi.event.SushiEvent; import sushi.process.SushiProcessInstance; /** * This class filters {@link SushiEvent}s in the {@link EventPanel}. * @author micha */ public class EventFilter extends AbstractFilter { private static final long serialVersionUID = 1L; public EventFilter(){ super(); } /** * Constructor for the class, which filters {@link SushiEvent} in the {@link EventPanel}. * @param filterCriteria * @param filterCondition * @param filterValue */ public EventFilter(String filterCriteria, String filterCondition, String filterValue){ super(filterCriteria, filterCondition, filterValue); } public boolean match(SushiEvent event) { if(filterCriteria == null || filterCondition == null || filterValue == null){ return true; } if(filterCriteria.equals("ID")){ try{ if(filterCondition.equals("<")){ if(event.getID() < Integer.parseInt(filterValue)) return true; } else if(filterCondition.equals(">")){ if(event.getID() < Integer.parseInt(filterValue)) return true; } else { if(event.getID() == Integer.parseInt(filterValue)) return true; } } catch(NumberFormatException e){ return false; } } else if(filterCriteria.equals("Event Type (ID)")){ if(filterCondition.equals("<")){ if(event.getEventType().getID() < Integer.parseInt(filterValue)) return true; } else if(filterCondition.equals(">")){ if(event.getEventType().getID() > Integer.parseInt(filterValue)) return true; } else { if(event.getEventType().getID() == Integer.parseInt(filterValue)) return true; } return false; } else if(filterCriteria.equals("Process Instance")){ if(filterCondition.equals("<")){ for(SushiProcessInstance processInstance : event.getProcessInstances()){ if(!(processInstance.getID() < event.getID())) return false; } return true; } else if(filterCondition.equals(">")){ for(SushiProcessInstance processInstance : event.getProcessInstances()){ if(!(processInstance.getID() > event.getID())) return false; } return true; } else { for(SushiProcessInstance processInstance : event.getProcessInstances()){ if(!(processInstance.getID() == event.getID())) return false; } return true; } } else if(SushiEvent.findAllEventAttributes().contains(filterCriteria)){ return SushiEvent.findByValue(filterCriteria, filterValue).contains(event); } else { return false; } return false; } }