/** * Execute the rule and return true or false. * * @param rules * @param l * @return */ public Boolean executeS(String rule, ShortURL l) { try { if (rule.contains("<")) { String[] partes = rule.split("<"); if (partes[0].equals("created")) { if (l.getCreated().before(new SimpleDateFormat("yyyy-MM-dd").parse(partes[1]))) { return true; } else { return false; } } else if (partes[0].equals("expire")) { if (l.getExpire().before(new SimpleDateFormat("yyyy-MM-dd").parse(partes[1]))) { return true; } else { return false; } } else if (partes[0].equals("token")) { return null; } else if (partes[0].equals("country")) { return null; } else if (partes[0].equals("clicks")) { if (clickRepository.clicksByHash(l.getHash(), null, null, null, null, null, null) < Long.valueOf(partes[1])) { return true; } else { return false; } } return null; } else if (rule.contains(">")) { String[] partes = rule.split(">"); if (partes[0].equals("created")) { if (l.getCreated().after(new SimpleDateFormat("yyyy-MM-dd").parse(partes[1]))) { return true; } else { return false; } } else if (partes[0].equals("expire")) { if (l.getExpire().after(new SimpleDateFormat("yyyy-MM-dd").parse(partes[1]))) { return true; } else { return false; } } else if (partes[0].equals("token")) { return null; } else if (partes[0].equals("country")) { return null; } else if (partes[0].equals("clicks")) { if (clickRepository.clicksByHash(l.getHash(), null, null, null, null, null, null) > Long.valueOf(partes[1])) { return true; } else { return false; } } return null; } else if (rule.contains("==")) { String[] partes = rule.split("=="); if (partes[0].equals("created")) { if (l.getCreated().compareTo((new SimpleDateFormat("yyyy-MM-dd").parse(partes[1]))) == 0) { return true; } else { return false; } } else if (partes[0].equals("expire")) { if (l.getExpire().compareTo((new SimpleDateFormat("yyyy-MM-dd").parse(partes[1]))) == 0) { return true; } else { return false; } } else if (partes[0].equals("token")) { if (partes[1].equals("true")) { return l.getToken() != null; } else if (partes[1].equals("false")) { return l.getToken() == null; } else { return false; } } else if (partes[0].equals("country")) { return l.getCountry().equals(partes[1]); } else if (partes[0].equals("clicks")) { if (clickRepository.clicksByHash(l.getHash(), null, null, null, null, null, null) == Long.valueOf(partes[1])) { return true; } else { return false; } } return null; } else { return null; } } catch (Exception e) { return null; } }