public static Sort desc(final String expression) { return desc(x(expression)); }
/** * Create a N1QL {@link com.couchbase.client.java.query.dsl.Sort} out of a Spring Data {@link Sort}. Note that the later * must use alternative field names as declared by the {@link Field} annotation on the entity, if any. */ public static com.couchbase.client.java.query.dsl.Sort[] createSort(Sort sort, CouchbaseConverter converter) { List<com.couchbase.client.java.query.dsl.Sort> cbSortList = new ArrayList<com.couchbase.client.java.query.dsl.Sort>(); for (Sort.Order order : sort) { String orderProperty = order.getProperty(); //FIXME the order property should be converted to its corresponding fieldName String[] orderPropertyParts = orderProperty.split("\\."); StringBuilder sb = new StringBuilder(); for (String part:orderPropertyParts) { if (sb.length() != 0) { sb.append("."); } sb.append(i(part).toString()); } Expression orderFieldName = x(sb.toString()); if (order.isIgnoreCase()) { orderFieldName = lower(TypeFunctions.toString(orderFieldName)); } if (order.isAscending()) { cbSortList.add(com.couchbase.client.java.query.dsl.Sort.asc(orderFieldName)); } else { cbSortList.add(com.couchbase.client.java.query.dsl.Sort.desc(orderFieldName)); } } return cbSortList.toArray(new com.couchbase.client.java.query.dsl.Sort[cbSortList.size()]); }
/** * Create a N1QL {@link com.couchbase.client.java.query.dsl.Sort} out of a Spring Data {@link Sort}. Note that the later * must use alternative field names as declared by the {@link Field} annotation on the entity, if any. */ public static com.couchbase.client.java.query.dsl.Sort[] createSort(Sort sort, CouchbaseConverter converter) { List<com.couchbase.client.java.query.dsl.Sort> cbSortList = new ArrayList<com.couchbase.client.java.query.dsl.Sort>(); for (Sort.Order order : sort) { String orderProperty = order.getProperty(); //FIXME the order property should be converted to its corresponding fieldName String[] orderPropertyParts = orderProperty.split("\\."); StringBuilder sb = new StringBuilder(); for (String part:orderPropertyParts) { if (sb.length() != 0) { sb.append("."); } sb.append(i(part).toString()); } Expression orderFieldName = x(sb.toString()); if (order.isIgnoreCase()) { orderFieldName = lower(TypeFunctions.toString(orderFieldName)); } if (order.isAscending()) { cbSortList.add(com.couchbase.client.java.query.dsl.Sort.asc(orderFieldName)); } else { cbSortList.add(com.couchbase.client.java.query.dsl.Sort.desc(orderFieldName)); } } return cbSortList.toArray(new com.couchbase.client.java.query.dsl.Sort[cbSortList.size()]); }
@Override public Observable<IndexInfo> listN1qlIndexes() { Expression whereClause = x("keyspace_id").eq(s(bucket)) .and(i("using").eq(s("gsi"))); Statement listIndexes = select("idx.*").from(x("system:indexes").as("idx")).where(whereClause) .orderBy(Sort.desc("is_primary"), Sort.asc("name")); final Func1<List<JsonObject>, Observable<AsyncN1qlQueryRow>> errorHandler = errorsToThrowable( "Error while listing indexes: "); return queryExecutor.execute( N1qlQuery.simple(listIndexes, N1qlParams.build().consistency(ScanConsistency.REQUEST_PLUS)), env, env.managementTimeout(), TimeUnit.MILLISECONDS) .flatMap(new Func1<AsyncN1qlQueryResult, Observable<AsyncN1qlQueryRow>>() { @Override public Observable<AsyncN1qlQueryRow> call(final AsyncN1qlQueryResult aqr) { return aqr.finalSuccess() .flatMap(new Func1<Boolean, Observable<AsyncN1qlQueryRow>>() { @Override public Observable<AsyncN1qlQueryRow> call(Boolean success) { if (success) { return aqr.rows(); } else { return aqr.errors().toList().flatMap(errorHandler); } } }); } }).map(ROW_VALUE_TO_INDEXINFO); }