package sushi.application.pages.monitoring.notification; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import sushi.application.pages.eventrepository.model.AbstractFilter; import sushi.application.pages.eventrepository.model.EventFilter; import sushi.notification.SushiNotification; import sushi.notification.SushiNotificationForEvent; /** * Filter for Notification-List on @see NotificationPage */ public class NotificationFilter extends AbstractFilter { public NotificationFilter(String eventFilterCriteria, String eventFilterCondition, String filterValue){ super(eventFilterCriteria, eventFilterCondition, filterValue); } public NotificationFilter() { super(); } /** * checks whether a notification matches a filtercriteria * @param notification * @return */ public boolean match(SushiNotification notification) { if(filterCriteria == null || filterCondition == null || filterValue == null){ return true; } //"ID", "Timestamp", "NotificationRule (ID)" if(filterCriteria.equals("ID")){ try{ if(filterCondition.equals("<")){ if(notification.getID() < Integer.parseInt(filterValue)) return true; } else if(filterCondition.equals(">")){ if(notification.getID() > Integer.parseInt(filterValue)) return true; } else { if(notification.getID() == Integer.parseInt(filterValue)) return true; } } catch(NumberFormatException e){ return false; } } else if(filterCriteria.equals("Timestamp")){ try { if(filterCondition.equals("<")){ if(notification.getTimestamp().before(SimpleDateFormat.getInstance().parse(filterValue))) return true; } else if(filterCondition.equals(">")){ if(notification.getTimestamp().after(SimpleDateFormat.getInstance().parse(filterValue))) return true; } else { if(notification.getTimestamp().equals(SimpleDateFormat.getInstance().parse(filterValue))) return true; } return false; }catch(ParseException e) { return false; } } else if(filterCriteria.equals("NotificationRule (ID)")){ if(filterCondition.equals("<")){ if(notification.getNotificationRule().getID() < Integer.parseInt(filterValue)) return true; } else if(filterCondition.equals(">")){ if(notification.getNotificationRule().getID() > Integer.parseInt(filterValue)) return true; } else { if(notification.getNotificationRule().getID() == Integer.parseInt(filterValue)) return true; } return false; } else { return false; } return false; } }