@Override public Iterable<T> findAll(Sort sort) { Assert.notNull(sort, "A non-null Sort is required."); return this.datastoreTemplate .findAll(this.entityType, new DatastoreQueryOptions(null, null, sort)); }
@Override public Iterable<T> findAll(Sort sort) { Assert.notNull(sort, "A non-null Sort is required."); return this.datastoreTemplate .findAll(this.entityType, new DatastoreQueryOptions(null, null, sort)); }
@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } DatastoreQueryOptions that = (DatastoreQueryOptions) o; return Objects.equals(getLimit(), that.getLimit()) && Objects.equals(getOffset(), that.getOffset()) && Objects.equals(getSort(), that.getSort()); }
@Override public <S extends T> Optional<S> findOne(Example<S> example) { Iterable<S> entities = this.datastoreTemplate.queryByExample(example, new DatastoreQueryOptions(1, null, null)); Iterator<S> iterator = entities.iterator(); return iterator.hasNext() ? Optional.of(iterator.next()) : Optional.empty(); }
@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } DatastoreQueryOptions that = (DatastoreQueryOptions) o; return Objects.equals(getLimit(), that.getLimit()) && Objects.equals(getOffset(), that.getOffset()) && Objects.equals(getSort(), that.getSort()); }
@Override public <S extends T> boolean exists(Example<S> example) { Iterable<Key> keys = this.datastoreTemplate.keyQueryByExample(example, new DatastoreQueryOptions(1, null, null)); return StreamSupport.stream(keys.spliterator(), false).findAny().isPresent(); } }
public static void applyQueryOptions(StructuredQuery.Builder builder, DatastoreQueryOptions queryOptions, DatastorePersistentEntity<?> persistentEntity) { if (queryOptions == null) { return; } if (queryOptions.getLimit() != null) { builder.setLimit(queryOptions.getLimit()); } if (queryOptions.getOffset() != null) { builder.setOffset(queryOptions.getOffset()); } if (queryOptions.getSort() != null && persistentEntity != null) { queryOptions.getSort().stream() .map((order) -> createOrderBy(persistentEntity, order)) .forEachOrdered((orderBy) -> builder.addOrderBy(orderBy)); } }
@Override public <S extends T> Iterable<S> findAll(Example<S> example, Sort sort) { return this.datastoreTemplate.queryByExample(example, new DatastoreQueryOptions(null, null, sort)); }
public static void applyQueryOptions(StructuredQuery.Builder builder, DatastoreQueryOptions queryOptions, DatastorePersistentEntity<?> persistentEntity) { if (queryOptions == null) { return; } if (queryOptions.getLimit() != null) { builder.setLimit(queryOptions.getLimit()); } if (queryOptions.getOffset() != null) { builder.setOffset(queryOptions.getOffset()); } if (queryOptions.getSort() != null && persistentEntity != null) { queryOptions.getSort().stream() .map((order) -> createOrderBy(persistentEntity, order)) .forEachOrdered((orderBy) -> builder.addOrderBy(orderBy)); } }
@Override public Page<T> findAll(Pageable pageable) { Assert.notNull(pageable, "A non-null Pageable is required."); return new PageImpl<>( new ArrayList<>(this.datastoreTemplate .findAll(this.entityType, new DatastoreQueryOptions(pageable.getPageSize(), (int) pageable.getOffset(), pageable.getSort()))), pageable, this.datastoreTemplate.count(this.entityType)); }
@Override public Page<T> findAll(Pageable pageable) { Assert.notNull(pageable, "A non-null Pageable is required."); return new PageImpl<>( new ArrayList<>(this.datastoreTemplate .findAll(this.entityType, new DatastoreQueryOptions(pageable.getPageSize(), (int) pageable.getOffset(), pageable.getSort()))), pageable, this.datastoreTemplate.count(this.entityType)); }
@Override public <S extends T> Page<S> findAll(Example<S> example, Pageable pageable) { Assert.notNull(pageable, "A non-null pageable is required."); Iterable<S> entities = this.datastoreTemplate.queryByExample(example, new DatastoreQueryOptions(pageable.getPageSize(), (int) pageable.getOffset(), pageable.getSort())); List<S> result = StreamSupport.stream(entities.spliterator(), false).collect(Collectors.toList()); return new PageImpl<>(result, pageable, count(example)); }
private StructuredQuery applyQueryBody(Object[] parameters, StructuredQuery.Builder builder, boolean total) { ParameterAccessor paramAccessor = new ParametersParameterAccessor(getQueryMethod().getParameters(), parameters); if (this.tree.hasPredicate()) { applySelectWithFilter(parameters, builder); } Integer limit = null; Integer offset = null; if (this.tree.isExistsProjection()) { limit = 1; } else if (this.tree.isLimiting()) { limit = this.tree.getMaxResults(); } Sort sort = this.tree.getSort(); if (getQueryMethod().getParameters().hasPageableParameter()) { sort = sort.and(paramAccessor.getPageable().getSort()); } if (getQueryMethod().getParameters().hasSortParameter()) { sort = sort.and(paramAccessor.getSort()); } if (paramAccessor.getPageable().isPaged() && !total) { //for slice queries we retrieve one additional item to check if the next slice exists limit = paramAccessor.getPageable().getPageSize() + (isSliceQuery() ? 1 : 0); offset = (int) paramAccessor.getPageable().getOffset(); } DatastoreTemplate.applyQueryOptions( builder, new DatastoreQueryOptions(limit, offset, sort), this.datastorePersistentEntity); return builder.build(); }
private StructuredQuery applyQueryBody(Object[] parameters, StructuredQuery.Builder builder, boolean total) { ParameterAccessor paramAccessor = new ParametersParameterAccessor(getQueryMethod().getParameters(), parameters); if (this.tree.hasPredicate()) { applySelectWithFilter(parameters, builder); } Integer limit = null; Integer offset = null; if (this.tree.isExistsProjection()) { limit = 1; } else if (this.tree.isLimiting()) { limit = this.tree.getMaxResults(); } Sort sort = this.tree.getSort(); if (getQueryMethod().getParameters().hasPageableParameter()) { sort = sort.and(paramAccessor.getPageable().getSort()); } if (getQueryMethod().getParameters().hasSortParameter()) { sort = sort.and(paramAccessor.getSort()); } if (paramAccessor.getPageable().isPaged() && !total) { //for slice queries we retrieve one additional item to check if the next slice exists limit = paramAccessor.getPageable().getPageSize() + (isSliceQuery() ? 1 : 0); offset = (int) paramAccessor.getPageable().getOffset(); } DatastoreTemplate.applyQueryOptions( builder, new DatastoreQueryOptions(limit, offset, sort), this.datastorePersistentEntity); return builder.build(); }