/** * {@inheritDoc} */ @Override public <T> BooleanExpression createStringLikeExpression( PathBuilder<T> entityPath, String fieldName, String searchStr) { if (StringUtils.isEmpty(searchStr)) { return null; } String str = "%".concat(searchStr.toLowerCase()).concat("%"); BooleanExpression expression = entityPath.getString(fieldName).lower() .like(str); return expression; }
/** * {@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; }
public Projection(Class<T> targetClass) { PathBuilder<T> entity = new PathBuilder<T>( targetClass, "entity" ); Field[] fields = targetClass.getFields(); Expression[] fieldExpressions = new Expression[fields.length]; for( int i = 0; i < fields.length; i++ ) { fieldExpressions[i] = entity.getString( fields[ i ].getName() ); } bean = Projections.fields(targetClass, fieldExpressions); }
/** * @param path * @return */ public StringPath get(StringPath path) { StringPath newPath = getString(toString(path)); return addMetadataOf(newPath, path); }
public static void orderBy(JPACommonQuery<?> query, EntityPath<?> entity, List<String> order) { PathBuilder<?> builder = new PathBuilder(entity.getType(), entity.getMetadata()); Map<String, PathBuilder<?>> joins = Maps.newHashMap(); for (String entry : order) { String[] tokens = DOT.split(entry); if (tokens.length > 1) { String[] parent = new String[tokens.length - 1]; System.arraycopy(tokens, 0, parent, 0, tokens.length - 1); PathBuilder<?> parentAlias = join(query, builder, joins, StringUtils.join(parent, ".")); query.orderBy(parentAlias.getString(tokens[tokens.length - 1]).asc()); } else { query.orderBy(builder.getString(tokens[0]).asc()); } } }
@Test public void Group_By_Having() throws Exception { query.from(user); query.groupBy(user.getString("firstName")); query.having(user.getString("lastName").isNotNull()); assertEquals("SELECT * WHERE { ?user ?_c2 ?_c3 ; ?_c4 ?user_firstName ; ?_c6 ?user_lastName } GROUP BY ?user_firstName HAVING (bound(?user_lastName))"); }
@Test public void Or() throws Exception { query.from(user); query.where(user.getString("firstName").eq("X").or(user.getString("firstName").eq("Y"))); assertEquals("SELECT * WHERE { ?user ?_c2 ?_c3 . OPTIONAL { ?user ?_c4 ?user_firstName } FILTER(?user_firstName = ?_c6 || ?user_firstName = ?_c7) }"); }
@Test public void Matches() throws Exception { query.from(user); query.where(user.getString("firstName").matches("Bob.*")); assertEquals("SELECT * WHERE { ?user ?_c2 ?_c3 ; ?_c4 ?user_firstName . FILTER(regex(?user_firstName, ?_c6)) }"); }
@Test public void Single_From_With_Property() throws Exception { query.from(user); query.where(user.getString("firstName").eq("Bob")); assertEquals("SELECT * WHERE { ?user ?_c2 ?_c3 ; ?_c4 ?user_firstName }"); }
@Test public void String_Contains() throws Exception { query.from(user); query.where(user.getString("firstName").contains("Bob")); assertEquals("SELECT * WHERE { ?user ?_c2 ?_c3 ; ?_c4 ?user_firstName . FILTER(regex(?user_firstName, '.*Bob.*')) }"); }
@Test public void Localized_String_eq_Const() throws Exception { query.from(user); query.where(user.getString("name").eq("XXX")); assertEquals("SELECT * WHERE { ?user ?_c2 ?_c3 ; ?_c4 ?user_name }"); }
@Test public void Localized_String_ne_Const() throws Exception { query.from(user); query.where(user.getString("name").ne("XXX")); assertEquals("SELECT * WHERE { ?user ?_c2 ?_c3 ; ?_c4 ?user_name . FILTER(?user_name != ?_c6) }"); }
@Test public void Starts_With() throws Exception { query.from(user); query.where(user.getString("firstName").startsWith("Bob")); assertEquals("SELECT * WHERE { ?user ?_c2 ?_c3 ; ?_c4 ?user_firstName . FILTER(regex(?user_firstName, '^Bob')) }"); }
@Test public void Between() throws Exception { query.from(user); query.where(user.getString("firstName").between("A", "D")); assertEquals("SELECT * WHERE { ?user ?_c2 ?_c3 ; ?_c4 ?user_firstName . FILTER(?user_firstName >= ?_c6 && ?user_firstName <= ?_c7) }"); }
@Test public void In_Strings() throws Exception { query.from(user); query.where(user.getString("firstName").in("Dennis", "Bob")); assertEquals("SELECT * WHERE { ?user ?_c2 ?_c3 ; ?_c4 ?user_firstName . FILTER(?user_firstName = ?_c6 || ?user_firstName = ?_c7) }"); }
@Test public void Order_By_Desc() throws Exception { query.from(user); query.orderBy(user.getString("firstName").desc()); assertEquals("SELECT * WHERE { ?user ?_c2 ?_c3 . OPTIONAL { ?user ?_c4 ?user_firstName } } ORDER BY DESC(?user_firstName)"); }
@Test public void Ends_With() throws Exception { query.from(user); query.where(user.getString("firstName").endsWith("Bob")); assertEquals("SELECT * WHERE { ?user ?_c2 ?_c3 ; ?_c4 ?user_firstName . FILTER(regex(?user_firstName, 'Bob$')) }"); }
@Test public void Order_By() throws Exception { query.from(user); query.orderBy(user.getString("firstName").asc()); assertEquals("SELECT * WHERE { ?user ?_c2 ?_c3 . OPTIONAL { ?user ?_c4 ?user_firstName } } ORDER BY ?user_firstName"); }
@Test public void ListAccess() throws Exception { query.from(user); query.where(user.getList("buddyList", User.class).get(0).getString("name").eq("XXX")); assertEquals("SELECT * WHERE { ?user ?_c2 ?_c3 ; ?_c4 ?user_buddyList . ?user_buddyList ?_c6 ?_var_a . ?_var_a ?_c8 ?user_buddyList_0_name }"); }
@Test public void ListAccess2() throws Exception { query.from(user); query.where(user.getList("buddyList", User.class).get(1).getString("name").eq("XXX")); assertEquals("SELECT * WHERE { ?user ?_c2 ?_c3 ; ?_c4 ?user_buddyList . ?user_buddyList ?_c6 ?_var_a . ?_var_a ?_c8 ?_var_b . ?_var_b ?_c10 ?user_buddyList_1_name }"); }