/**
   * 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;
    }
  }