@Override public List<Project> findProjects(String organization, Date snapshotDate, Optional<String> query, Optional<String> language) { BooleanBuilder q = new BooleanBuilder(project.organizationName.eq(organization)); Optional<Date> snapshotDateMatch = getSnapshotDateMatch(snapshotDate, organization); if (!snapshotDateMatch.isPresent()) { return Collections.emptyList(); } q.and(project.snapshotDate.eq(snapshotDateMatch.get())); if (query.isPresent()) { q.and(project.name.startsWith(query.get())); } if (language.isPresent()) { q.and(project.primaryLanguage.eq(language.get())); } return queryProject().where(q).list(project); }
@Override public List<Project> findProjects(String organization, Optional<String> query, Optional<String> language) { DateTimeSubQuery<Date> lastSnapshot = new JPASubQuery().from(project) .where(project.organizationName.eq(organization)) .unique(project.snapshotDate.max()); BooleanBuilder q = new BooleanBuilder() .and(project.organizationName.eq(organization)) .and(project.snapshotDate.eq(lastSnapshot)); if (query.isPresent()) { q.and(project.name.startsWith(query.get())); } if (language.isPresent()) { q.and(project.primaryLanguage.eq(language.get())); } return queryProject().where(q).list(project); }
@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 StartsWith() { assertEquals(1, query().from(cat).where(cat.name.startsWith("R")).count()); }
@Test public void StartsWith2() { assertEquals(0, query().from(cat).where(cat.name.startsWith("X")).count()); }
@Test public void StartsWith3() { assertEquals(1, query().from(cat).where(cat.name.startsWith("Mary_")).count()); }
@Test @ExcludeIn({MYSQL, TERADATA}) @NoOpenJPA public void StringOperations() { // NOTE : locate in MYSQL is case-insensitive assertEquals(0, query().from(cat).where(cat.name.startsWith("r")).count()); assertEquals(0, query().from(cat).where(cat.name.endsWith("H123")).count()); assertEquals(Integer.valueOf(2), query().from(cat).where(cat.name.eq("Bob123")) .uniqueResult(cat.name.indexOf("b"))); }