/*************************************************************************** * * **************************************************************************/ @Nonnull protected ElmoQuery createQuery() { return createQuery(entityName, true); }
@Override public Finder<T> sort (it.tidalwave.util.Finder.SortCriterion criterion) { return (Finder<T>)super.sort(criterion); }
@Override public Finder<T> from (int firstResult) { return (Finder<T>)super.from(firstResult); }
/*************************************************************************** * * **************************************************************************/ @Nonnull @Override public final T firstResult() throws NotFoundException { final List<? extends T> results = results(); if (results.isEmpty()) { throw new NotFoundException(getNameForException()); } return results.get(0); }
final StringBuilder orderBy = new StringBuilder(); process(auxStatements); orderBy.append(separator); orderBy.append((direction == SortDirection.DESCENDING) ? "DESC(" : "ASC("); processSortCriterion(criterion, orderBy, auxStatements); orderBy.append(")"); separator = ", ";
/*************************************************************************** * * **************************************************************************/ public ElmoFinder (final @Nonnull Class<T> entityClass, final @Nonnull Class<? extends T> entityImplClass, final @Nonnull String nameSpaceHeader) { this.entityClass = entityClass; this.entityImplClass = entityImplClass; this.nameSpaceHeader = nameSpaceHeader; setEntityName(); }
@Override public Finder<T> max (int maxResults) { return (Finder<T>)super.max(firstResult); }
/*************************************************************************** * * **************************************************************************/ @Nonnull @Override public Finder<T> clone() { final ElmoFinder<T> clone = (ElmoFinder<T>)createClone(); clone.firstResult = this.firstResult; clone.maxResults = this.maxResults; clone.sortCriteria.addAll(sortCriteria); clone.sortDirections.addAll(sortDirections); return clone; }
/*************************************************************************** * * **************************************************************************/ @Nonnull @Override public final T result() throws NotFoundException { final List<? extends T> results = results(); switch (results.size()) { case 0: throw new NotFoundException(getNameForException()); case 1: return results.get(0); default: throw new RuntimeException(getNameForException() + "Unexpected multiple results. " + results); } }
/*************************************************************************** * * **************************************************************************/ @Nonnull @Override public <X> Finder<X> ofType (final @Nonnull Class<X> type) { entityClass = (Class<T>)type; entityImplClass = (Class<? extends T>)Wrapper.findImplementation(type); if (entityImplClass == null) { throw new IllegalArgumentException(String.format("No implementation for class %s", type.getName())); } setEntityName(); return (Finder<X>)this; }
/*************************************************************************** * * **************************************************************************/ @Override @Nonnegative public int count() { logger.fine("count()"); final ElmoQuery query = createQuery(); query.setFirstResult(firstResult).setMaxResults(maxResults); final Integer result = query.getResultList().size(); // FIXME: no count(*) in SPARQL :-(( // See http://www.openrdf.org/issues/browse/SES-411 // final ElmoQuery query = createQuery("count (?object)", false); // final Integer result = (Integer)query.getSingleResult(); logger.finer(">>>> returning %d", result); return result; }
@Override public Finder<T> sort (it.tidalwave.util.Finder.SortCriterion criterion, SortDirection direction) { return (Finder<T>)super.sort(criterion, direction); } }
/*************************************************************************** * * {@inheritDoc} * **************************************************************************/ @Nonnull @Override public List<? extends T> results() { final ElmoQuery query = createQuery(); logger.fine(">>>> limit: first: %d, max: %d", firstResult, maxResults); query.setFirstResult(firstResult).setMaxResults(maxResults); final List results = Wrapper.wrap(query.getResultList()); logger.finer(">>>>results: %s", results); return results; }
/*************************************************************************** * * **************************************************************************/ @Nonnull @Override public Finder<T> sort (final @Nonnull SortCriterion criterion) { return sort(criterion, SortDirection.ASCENDING); }
assertThat(finder, is(instanceOf(ElmoFinder.class))); final ElmoFinder<MockConcept> elmoFinder = (ElmoFinder<MockConcept>)finder; final ElmoQuery elmoQuery = elmoFinder.createQuery(); assertThat(elmoQuery, is(notNullValue())); verify(elmoQuery).setType(eq("type"), eq(MockConceptImpl.class));