public boolean isMatch(Alert alert) { try { Object attr = alert.getAttribute(attribute); switch (relation) { case EQ: return equalObjects(attr, value); case NE: return !equalObjects(attr, value); case CONTAINS: { if (value instanceof Collection) { return ((Collection) value).contains(attr); } return false; } default: int cmp = ((Comparable) attr).compareTo(value); switch (relation) { case GT: return cmp > 0; case GE: return cmp >= 0; case LT: return cmp < 0; case LE: return cmp <= 0; default: return false; } } } catch (Exception e) { log.warning("AlertPredicate.isMatch", e); return false; } }