/** * Execute a "delete" query, not really a query more of an operation. * <p> * * @param query The query to run * @param queryMethod Used here to find the type of object to match the query * @return Collection of deleted objects or the number of deleted objects */ private Object executeDeleteQuery(final KeyValueQuery<?> query, final QueryMethod queryMethod) { Iterable<?> resultSet = this.keyValueOperations.find(query, queryMethod.getEntityInformation().getJavaType()); Iterator<?> iterator = resultSet.iterator(); List<Object> result = new ArrayList<>(); while (iterator.hasNext()) { result.add(this.keyValueOperations.delete(iterator.next())); } if (queryMethod.isCollectionQuery()) { return result; } else if (long.class.equals(queryMethod.getReturnedObjectType()) || Long.class .equals(queryMethod.getReturnedObjectType())) { return result.size(); } else { throw new UnsupportedOperationException(String.format( "Illegal returned type: %s. The operation 'deleteBy' accepts only 'long' and 'Collection' as the returned " + "object type", queryMethod.getReturnedObjectType())); } }
/** * <p> * Execute a retrieval query. The query engine will return this in an iterator, which may need conversion to a single * domain entity or a stream. * </P> * * @param query The query to run * @param queryMethod Holds metadata about the query, is paging etc * @return Query result */ private Object executeFindQuery(final KeyValueQuery<?> query, final QueryMethod queryMethod) { Iterable<?> resultSet = this.keyValueOperations.find(query, queryMethod.getEntityInformation().getJavaType()); if (!queryMethod.isCollectionQuery() && !queryMethod.isPageQuery() && !queryMethod.isSliceQuery() && !queryMethod .isStreamQuery()) { // Singleton result return resultSet.iterator().hasNext() ? resultSet.iterator().next() : null; } if (queryMethod.isStreamQuery()) { return StreamUtils.createStreamFromIterator(resultSet.iterator()); } return resultSet; }
/** * @param parameters * @param query */ @Nullable @SuppressWarnings({ "unchecked", "rawtypes" }) protected Object doExecute(Object[] parameters, KeyValueQuery<?> query) { if (queryMethod.isPageQuery() || queryMethod.isSliceQuery()) { Pageable page = (Pageable) parameters[queryMethod.getParameters().getPageableIndex()]; query.setOffset(page.getOffset()); query.setRows(page.getPageSize()); Iterable<?> result = this.keyValueOperations.find(query, queryMethod.getEntityInformation().getJavaType()); long count = queryMethod.isSliceQuery() ? 0 : keyValueOperations.count(query, queryMethod.getEntityInformation().getJavaType()); return new PageImpl(IterableConverter.toList(result), page, count); } else if (queryMethod.isCollectionQuery()) { return this.keyValueOperations.find(query, queryMethod.getEntityInformation().getJavaType()); } else if (queryMethod.isQueryForEntity()) { Iterable<?> result = this.keyValueOperations.find(query, queryMethod.getEntityInformation().getJavaType()); return result.iterator().hasNext() ? result.iterator().next() : null; } throw new UnsupportedOperationException("Query method not supported."); }
/** * @param parameters * @param query */ @Nullable @SuppressWarnings({ "unchecked", "rawtypes" }) protected Object doExecute(Object[] parameters, KeyValueQuery<?> query) { if (queryMethod.isPageQuery() || queryMethod.isSliceQuery()) { Pageable page = (Pageable) parameters[queryMethod.getParameters().getPageableIndex()]; query.setOffset(page.getOffset()); query.setRows(page.getPageSize()); Iterable<?> result = this.keyValueOperations.find(query, queryMethod.getEntityInformation().getJavaType()); long count = queryMethod.isSliceQuery() ? 0 : keyValueOperations.count(query, queryMethod.getEntityInformation().getJavaType()); return new PageImpl(IterableConverter.toList(result), page, count); } else if (queryMethod.isCollectionQuery()) { return this.keyValueOperations.find(query, queryMethod.getEntityInformation().getJavaType()); } else if (queryMethod.isQueryForEntity()) { Iterable<?> result = this.keyValueOperations.find(query, queryMethod.getEntityInformation().getJavaType()); return result.iterator().hasNext() ? result.iterator().next() : null; } throw new UnsupportedOperationException("Query method not supported."); }
/** * @param parameters * @param query */ @Nullable @SuppressWarnings({ "unchecked", "rawtypes" }) protected Object doExecute(Object[] parameters, KeyValueQuery<?> query) { if (queryMethod.isPageQuery() || queryMethod.isSliceQuery()) { Pageable page = (Pageable) parameters[queryMethod.getParameters().getPageableIndex()]; query.setOffset(page.getOffset()); query.setRows(page.getPageSize()); Iterable<?> result = this.keyValueOperations.find(query, queryMethod.getEntityInformation().getJavaType()); long count = queryMethod.isSliceQuery() ? 0 : keyValueOperations.count(query, queryMethod.getEntityInformation().getJavaType()); return new PageImpl(IterableConverter.toList(result), page, count); } else if (queryMethod.isCollectionQuery()) { return this.keyValueOperations.find(query, queryMethod.getEntityInformation().getJavaType()); } else if (queryMethod.isQueryForEntity()) { Iterable<?> result = this.keyValueOperations.find(query, queryMethod.getEntityInformation().getJavaType()); return result.iterator().hasNext() ? result.iterator().next() : null; } throw new UnsupportedOperationException("Query method not supported."); }
query.setRows(pageRequest.getPageSize()); Iterable<?> resultSet = this.keyValueOperations.find(query, queryMethod.getEntityInformation().getJavaType()); List<?> content = IterableConverter.toList(resultSet);