/** * Return true if this starts with str * * @param str * @return this.startsWith(str) * @see java.lang.String#startsWith(String) */ public BooleanExpression startsWith(String str) { return startsWith(ConstantImpl.create(str)); }
/** * Get the concatenation of this and str * * @param str * @return this + str */ public StringExpression concat(Expression<String> str) { return append(str); }
/** * {@inheritDoc} */ @Override public <T> BooleanExpression createStringExpression( PathBuilder<T> entityPath, String fieldName, String searchStr) { if (StringUtils.isEmpty(searchStr)) { return null; } BooleanExpression expression = entityPath.getString(fieldName).lower() .eq(searchStr.toLowerCase()); return expression; }
/** * Expr: {@code this not like str} * * @param str * @return */ public BooleanExpression notLike(Expression<String> str) { return like(str).not(); }
@Test @NoBatooJPA // can't be parsed public void Order_StringValue_To_Integer() { int count = (int)query().from(cat).count(); assertEquals(count, query().from(cat).orderBy(cat.id.stringValue().castToNum(Integer.class).asc()).list(cat).size()); }
@Test public void OrderBy_Operation() { QCat cat = QCat.cat; QCat cat_mate = new QCat("cat_mate"); mixin.from(cat); mixin.orderBy(cat.mate.name.lower().asc()); QueryMetadata md = mixin.getMetadata(); assertEquals(Arrays.asList( new JoinExpression(JoinType.DEFAULT, cat), new JoinExpression(JoinType.LEFTJOIN, cat.mate.as(cat_mate))), md.getJoins()); assertEquals(Arrays.asList(cat_mate.name.lower().asc()), md.getOrderBy()); }
/** * Get the character at the given index * * @param i * @return this.charAt(i) * @see java.lang.String#charAt(int) */ public SimpleExpression<Character> charAt(int i) { return charAt(ConstantImpl.create(i)); }
@Override public StringExpression as(String alias) { return as(new PathImpl<String>(String.class, alias)); }
@Test public void substring_indexOf() { QCat cat = QCat.cat; JPQLSerializer serializer = new JPQLSerializer(HQLTemplates.DEFAULT); cat.name.substring(cat.name.indexOf("")).accept(serializer, null); assertEquals("substring(cat.name,(locate(?1,cat.name)-1)+1)", serializer.toString()); } }
/** * Expr: {@code this not like str} * * @param str * @return */ public BooleanExpression notLike(String str) { return like(str).not(); }
@Test @NoBatooJPA // can't be parsed public void Order_StringValue_ToLong() { int count = (int)query().from(cat).count(); assertEquals(count, query().from(cat).orderBy(cat.id.stringValue().castToNum(Long.class).asc()).list(cat).size()); }
@Test @NoOpenJPA public void Type_Order() { assertEquals(Arrays.asList(10,1,2,3,4,5,6), query().from(animal).orderBy(JPAExpressions.type(animal).asc(), animal.id.asc()) .list(animal.id)); } }
/** * Expr: {@code this not like str} * * @param str * @return */ public BooleanExpression notLike(String str, char escape) { return like(str, escape).not(); }
@Test public void StringValue_StartsWith() { visitor.handle(QNODE.o.stringValue().startsWith("B")); assertEquals("regex(str(?o), '^B')", visitor.toString()); }
/** * Return equal expression for {@code entityPath.fieldName}. * <p/> * Expr: {@code entityPath.fieldName eq 'searchStr'} * <p/> * Equal operation is case insensitive. * * @param entityPath Full path to entity and associations. For example: * {@code Pet} , {@code Pet.owner} * @param fieldName Property name in the given entity path. For example: * {@code name} in {@code Pet} entity, {@code firstName} in * {@code Pet.owner} entity. * @param searchStr the value to find, may be null * @return BooleanExpression */ public static <T> BooleanExpression createStringExpression( PathBuilder<T> entityPath, String fieldName, String searchStr) { if (StringUtils.isEmpty(searchStr)) { return null; } BooleanExpression expression = entityPath.getString(fieldName).lower() .eq(searchStr.toLowerCase()); return expression; }
/** * Get the concatenation of this and str * * @param str * @return this + str */ public StringExpression concat(String str) { return append(str); }
@Test @NoBatooJPA // can't be parsed public void Order_StringValue_ToBigInteger() { int count = (int)query().from(cat).count(); assertEquals(count, query().from(cat).orderBy(cat.id.stringValue().castToNum(BigInteger.class).asc()).list(cat).size()); }
@Test public void Order_StringValue() { int count = (int)query().from(cat).count(); assertEquals(count, query().from(cat).orderBy(cat.id.stringValue().asc()).list(cat).size()); }