Beispiel #1
0
  @Test
  public void Various() {
    StringPath str = user.lastName;
    List<Predicate> predicates = new ArrayList<Predicate>();
    predicates.add(str.between("a", "b"));
    predicates.add(str.contains("a"));
    predicates.add(str.containsIgnoreCase("a"));
    predicates.add(str.endsWith("a"));
    predicates.add(str.endsWithIgnoreCase("a"));
    predicates.add(str.eq("a"));
    predicates.add(str.equalsIgnoreCase("a"));
    predicates.add(str.goe("a"));
    predicates.add(str.gt("a"));
    predicates.add(str.in("a", "b", "c"));
    predicates.add(str.isEmpty());
    predicates.add(str.isNotNull());
    predicates.add(str.isNull());
    //        predicates.add(str.like("a"));
    predicates.add(str.loe("a"));
    predicates.add(str.lt("a"));
    predicates.add(str.matches("a"));
    predicates.add(str.ne("a"));
    predicates.add(str.notBetween("a", "b"));
    predicates.add(str.notIn("a", "b", "c"));
    predicates.add(str.startsWith("a"));
    predicates.add(str.startsWithIgnoreCase("a"));

    for (Predicate predicate : predicates) {
      where(predicate).count();
      where(predicate.not()).count();
    }
  }
 @Test(expected = UnsupportedOperationException.class)
 public void Starts_With_Ignore_Case_Phrase_Does_Not_Find_Results() throws Exception {
   testQuery(title.startsWithIgnoreCase("urassic Par"), "+title:urassic* +title:*par*", 0);
 }
  /**
   * Creates a Predicate from list of BooleanExpression predicates which represents all search
   * filters.
   *
   * @param config PaginationConfiguration data holding object
   * @return query to filter entities according pagination configuration data.
   */
  @SuppressWarnings({"rawtypes", "unchecked"})
  protected Predicate getPredicate(PaginationConfiguration config) {

    PathBuilder<T> entityPath = new PathBuilder(entityClass, getAliasName(entityClass));
    BooleanExpression predicate = null;

    Map<String, Object> filters = config.getFilters();
    if (filters != null) {
      // first we process nonstandard filters
      List<String> filtersToRemove = processNonStandardFilters(filters, entityPath);
      filters = removeUsedFilters(filtersToRemove, filters);
      if (!filters.isEmpty()) {
        for (Map.Entry<String, Object> entry : filters.entrySet()) {
          String key = entry.getKey();
          Object filter = entry.getValue();
          if (filter != null) {

            // if ranged search (from - to fields)
            if (key.contains("fromRange-")) {
              // CHECKSTYLE:OFF
              String parsedKey = key.substring(10);
              // CHECKSTYLE:ON
              if (filter instanceof Number) {
                NumberPath path = createNumberPath(entityPath, parsedKey, filter);
                predicate = and(predicate, path.goe((Number) filter));
              } else if (filter instanceof Date) {
                DatePath path = entityPath.getDate(parsedKey, Date.class);
                predicate = and(predicate, path.goe((Date) filter));
              }
            } else if (key.contains("toRange-")) {
              // CHECKSTYLE:OFF
              String parsedKey = key.substring(8);
              // CHECKSTYLE:ON
              if (filter instanceof Number) {
                NumberPath path = createNumberPath(entityPath, parsedKey, filter);
                predicate = and(predicate, path.loe((Number) filter));
              } else if (filter instanceof Date) {
                DatePath path = entityPath.getDate(parsedKey, Date.class);
                predicate = and(predicate, path.loe((Date) filter));
              }
            } else if (key.contains("list-")) {
              // CHECKSTYLE:OFF
              // if searching elements from list
              String parsedKey = key.substring(5);
              // CHECKSTYLE:ON
              ListPath path = entityPath.getList(parsedKey, filter.getClass());
              predicate = and(predicate, path.contains(filter));
            } else { // if not ranged search
              if (filter instanceof String) {
                StringPath path = entityPath.getString(key);
                String filterString = (String) filter;
                predicate = and(predicate, path.startsWithIgnoreCase(filterString));
              } else if (filter instanceof Date) {
                DatePath path = entityPath.getDate(key, Date.class);
                predicate = and(predicate, path.eq(filter));
              } else if (filter instanceof Number) {
                NumberPath path = createNumberPath(entityPath, key, filter);
                predicate = and(predicate, path.eq(filter));
              } else if (filter instanceof Boolean) {
                BooleanPath path = entityPath.getBoolean(key);
                predicate = and(predicate, path.eq((Boolean) filter));
              } else if (filter instanceof Enum) {
                EnumPath path = entityPath.getEnum(key, Enum.class);
                predicate = and(predicate, path.eq(filter));
              } else if (BaseEntity.class.isAssignableFrom(filter.getClass())) {
                PathBuilder path = entityPath.get(key);
                predicate = and(predicate, path.eq(filter));
              }
            }
          }
        }
      }
    }
    return predicate;
  }