@Override public long count() { final ResolvedView resolvedView = determineView(); ViewQuery query = ViewQuery.from(resolvedView.getDesignDocument(), resolvedView.getViewName()); query.reduce(true); query.stale(getCouchbaseOperations().getDefaultConsistency().viewConsistency()); ViewResult response = couchbaseOperations.queryView(query); long count = 0; for (ViewRow row : response) { count += Long.parseLong(String.valueOf(row.value())); } return count; }
@Override public long count() { final ResolvedView resolvedView = determineView(); ViewQuery query = ViewQuery.from(resolvedView.getDesignDocument(), resolvedView.getViewName()); query.reduce(true); query.stale(getCouchbaseOperations().getDefaultConsistency().viewConsistency()); ViewResult response = couchbaseOperations.queryView(query); long count = 0; for (ViewRow row : response) { count += Long.parseLong(String.valueOf(row.value())); } return count; }
protected Object guessViewAndExecute() { String designDoc = designDocName(method); String methodName = method.getName(); boolean isExplicitReduce = method.hasViewAnnotation() && method.getViewAnnotation().reduce(); boolean isReduce = methodName.startsWith("count") || isExplicitReduce; String viewName = StringUtils.uncapitalize(methodName.replaceFirst("find|count", "")); ViewQuery simpleQuery = ViewQuery.from(designDoc, viewName) .stale(operations.getDefaultConsistency().viewConsistency()); if (isReduce) { simpleQuery.reduce(); return executeReduce(simpleQuery, designDoc, viewName); } else { return execute(simpleQuery); } }
protected Object guessViewAndExecute() { String designDoc = designDocName(method); String methodName = method.getName(); boolean isExplicitReduce = method.hasViewAnnotation() && method.getViewAnnotation().reduce(); boolean isReduce = methodName.startsWith("count") || isExplicitReduce; String viewName = StringUtils.uncapitalize(methodName.replaceFirst("find|count", "")); ViewQuery simpleQuery = ViewQuery.from(designDoc, viewName) .stale(operations.getDefaultConsistency().viewConsistency()); if (isReduce) { simpleQuery.reduce(); return executeReduce(simpleQuery, designDoc, viewName); } else { return execute(simpleQuery); } }
@Override public Iterable<T> findAll() { final ResolvedView resolvedView = determineView(); ViewQuery query = ViewQuery.from(resolvedView.getDesignDocument(), resolvedView.getViewName()); query.reduce(false); query.stale(getCouchbaseOperations().getDefaultConsistency().viewConsistency()); return couchbaseOperations.findByView(query, entityInformation.getJavaType()); }
@Override public Iterable<T> findAll() { final ResolvedView resolvedView = determineView(); ViewQuery query = ViewQuery.from(resolvedView.getDesignDocument(), resolvedView.getViewName()); query.reduce(false); query.stale(getCouchbaseOperations().getDefaultConsistency().viewConsistency()); return couchbaseOperations.findByView(query, entityInformation.getJavaType()); }
@Override public void deleteAll() { final ResolvedView resolvedView = determineView(); ViewQuery query = ViewQuery.from(resolvedView.getDesignDocument(), resolvedView.getViewName()); query.reduce(false); query.stale(getCouchbaseOperations().getDefaultConsistency().viewConsistency()); ViewResult response = couchbaseOperations.queryView(query); for (ViewRow row : response) { try { couchbaseOperations.remove(row.id()); } catch (DataRetrievalFailureException e) { //ignore stale deletions if (!(e.getCause() instanceof DocumentDoesNotExistException)) throw e; } } }
@Override public void deleteAll() { final ResolvedView resolvedView = determineView(); ViewQuery query = ViewQuery.from(resolvedView.getDesignDocument(), resolvedView.getViewName()); query.reduce(false); query.stale(getCouchbaseOperations().getDefaultConsistency().viewConsistency()); ViewResult response = couchbaseOperations.queryView(query); for (ViewRow row : response) { try { couchbaseOperations.remove(row.id()); } catch (DataRetrievalFailureException e) { //ignore stale deletions if (!(e.getCause() instanceof DocumentDoesNotExistException)) throw e; } } }
@Override public Object execute(Object[] parameters) { ParametersParameterAccessor accessor = new ParametersParameterAccessor(queryMethod.getParameters(), parameters); ResultProcessor processor = this.queryMethod.getResultProcessor().withDynamicProjection(accessor); ReturnedType returnedType = processor.getReturnedType(); Class<?> typeToRead = returnedType.getTypeToRead(); typeToRead = typeToRead == null ? returnedType.getDomainType() : typeToRead; Statement statement = getStatement(accessor, parameters, returnedType); JsonValue queryPlaceholderValues = getPlaceholderValues(accessor); //prepare the final query N1qlQuery query = buildQuery(statement, queryPlaceholderValues, getCouchbaseOperations().getDefaultConsistency().n1qlConsistency()); //prepare a count query Statement countStatement = getCount(accessor, parameters); //the place holder values are the same for the count query as well N1qlQuery countQuery = buildQuery(countStatement, queryPlaceholderValues, getCouchbaseOperations().getDefaultConsistency().n1qlConsistency()); return processor.processResult(executeDependingOnType(query, countQuery, queryMethod, accessor.getPageable(), typeToRead)); }
@Override public Object execute(Object[] parameters) { ParametersParameterAccessor accessor = new ParametersParameterAccessor(queryMethod.getParameters(), parameters); ResultProcessor processor = this.queryMethod.getResultProcessor().withDynamicProjection(accessor); ReturnedType returnedType = processor.getReturnedType(); Class<?> typeToRead = returnedType.getTypeToRead(); typeToRead = typeToRead == null ? returnedType.getDomainType() : typeToRead; Statement statement = getStatement(accessor, parameters, returnedType); JsonValue queryPlaceholderValues = getPlaceholderValues(accessor); //prepare the final query N1qlQuery query = buildQuery(statement, queryPlaceholderValues, getCouchbaseOperations().getDefaultConsistency().n1qlConsistency()); //prepare a count query Statement countStatement = getCount(accessor, parameters); //the place holder values are the same for the count query as well N1qlQuery countQuery = buildQuery(countStatement, queryPlaceholderValues, getCouchbaseOperations().getDefaultConsistency().n1qlConsistency()); return processor.processResult(executeDependingOnType(query, countQuery, queryMethod, accessor.getPageable(), typeToRead)); }
@Override public Iterable<T> findAllById(final Iterable<ID> ids) { final ResolvedView resolvedView = determineView(); ViewQuery query = ViewQuery.from(resolvedView.getDesignDocument(), resolvedView.getViewName()); query.reduce(false); query.stale(getCouchbaseOperations().getDefaultConsistency().viewConsistency()); JsonArray keys = JsonArray.create(); for (ID id : ids) { keys.add(couchbaseOperations.getConverter().convertForWriteIfNeeded(id)); } query.keys(keys); return couchbaseOperations.findByView(query, entityInformation.getJavaType()); }
@Override public Iterable<T> findAllById(final Iterable<ID> ids) { final ResolvedView resolvedView = determineView(); ViewQuery query = ViewQuery.from(resolvedView.getDesignDocument(), resolvedView.getViewName()); query.reduce(false); query.stale(getCouchbaseOperations().getDefaultConsistency().viewConsistency()); JsonArray keys = JsonArray.create(); for (ID id : ids) { keys.add(couchbaseOperations.getConverter().convertForWriteIfNeeded(id)); } query.keys(keys); return couchbaseOperations.findByView(query, entityInformation.getJavaType()); }
@Override public Iterable<T> findAll(Sort sort) { Assert.notNull(sort, "Sort must not be null!"); //prepare elements of the query WherePath selectFrom = N1qlUtils.createSelectFromForEntity(getCouchbaseOperations().getCouchbaseBucket().name()); Expression whereCriteria = N1qlUtils.createWhereFilterForEntity(null, getCouchbaseOperations().getConverter(), getEntityInformation()); //apply the sort com.couchbase.client.java.query.dsl.Sort[] orderings = N1qlUtils.createSort(sort, getCouchbaseOperations().getConverter()); Statement st = selectFrom.where(whereCriteria).orderBy(orderings); //fire the query ScanConsistency consistency = getCouchbaseOperations().getDefaultConsistency().n1qlConsistency(); N1qlQuery query = N1qlQuery.simple(st, N1qlParams.build().consistency(consistency)); return getCouchbaseOperations().findByN1QL(query, getEntityInformation().getJavaType()); }
@Override public Iterable<T> findAll(Sort sort) { Assert.notNull(sort, "Sort must not be null!"); //prepare elements of the query WherePath selectFrom = N1qlUtils.createSelectFromForEntity(getCouchbaseOperations().getCouchbaseBucket().name()); Expression whereCriteria = N1qlUtils.createWhereFilterForEntity(null, getCouchbaseOperations().getConverter(), getEntityInformation()); //apply the sort com.couchbase.client.java.query.dsl.Sort[] orderings = N1qlUtils.createSort(sort, getCouchbaseOperations().getConverter()); Statement st = selectFrom.where(whereCriteria).orderBy(orderings); //fire the query ScanConsistency consistency = getCouchbaseOperations().getDefaultConsistency().n1qlConsistency(); N1qlQuery query = N1qlQuery.simple(st, N1qlParams.build().consistency(consistency)); return getCouchbaseOperations().findByN1QL(query, getEntityInformation().getJavaType()); }
.stale(operations.getDefaultConsistency().viewConsistency());
.stale(operations.getDefaultConsistency().viewConsistency());
@Override public Page<T> findAll(Pageable pageable) { Assert.notNull(pageable, "Pageable must not be null"); ScanConsistency consistency = getCouchbaseOperations().getDefaultConsistency().n1qlConsistency();
@Override public Page<T> findAll(Pageable pageable) { Assert.notNull(pageable, "Pageable must not be null"); ScanConsistency consistency = getCouchbaseOperations().getDefaultConsistency().n1qlConsistency();
@Override public Object execute(Object[] runtimeParams) { String designDoc = method.getDimensionalAnnotation().designDocument(); String viewName = method.getDimensionalAnnotation().spatialViewName(); int dimensions = method.getDimensionalAnnotation().dimensions(); /* here contrary to the classical view query we don't support not including an attribute of the entity in the method name, those are mandatory and will result in a PropertyReferenceException if not used... */ PartTree tree = new PartTree(method.getName(), method.getEntityInformation().getJavaType()); //prepare a spatial view query to be used as a base for the query creator SpatialViewQuery baseSpatialQuery = SpatialViewQuery.from(designDoc, viewName) .stale(operations.getDefaultConsistency().viewConsistency()); //use the SpatialViewQueryCreator to complete it SpatialViewQueryCreator creator = new SpatialViewQueryCreator(dimensions, tree, new ParametersParameterAccessor(method.getParameters(), runtimeParams), baseSpatialQuery, operations.getConverter()); SpatialViewQueryCreator.SpatialViewQueryWrapper finalQuery = creator.createQuery(); //execute the spatial query return execute(finalQuery); }
@Override public Object execute(Object[] runtimeParams) { String designDoc = method.getDimensionalAnnotation().designDocument(); String viewName = method.getDimensionalAnnotation().spatialViewName(); int dimensions = method.getDimensionalAnnotation().dimensions(); /* here contrary to the classical view query we don't support not including an attribute of the entity in the method name, those are mandatory and will result in a PropertyReferenceException if not used... */ PartTree tree = new PartTree(method.getName(), method.getEntityInformation().getJavaType()); //prepare a spatial view query to be used as a base for the query creator SpatialViewQuery baseSpatialQuery = SpatialViewQuery.from(designDoc, viewName) .stale(operations.getDefaultConsistency().viewConsistency()); //use the SpatialViewQueryCreator to complete it SpatialViewQueryCreator creator = new SpatialViewQueryCreator(dimensions, tree, new ParametersParameterAccessor(method.getParameters(), runtimeParams), baseSpatialQuery, operations.getConverter()); SpatialViewQueryCreator.SpatialViewQueryWrapper finalQuery = creator.createQuery(); //execute the spatial query return execute(finalQuery); }