Skip to content

Commit fe34401

Browse files
authored
Merge pull request #102 from opencb/TASK-5610
TASK-5610 - Create the CVDB endpoint analysis/clinical/cvdb/variant/summary and overwrite analysis/clinical/variant
2 parents f7347a1 + d16114b commit fe34401

5 files changed

Lines changed: 42 additions & 15 deletions

File tree

commons-datastore/commons-datastore-core/src/main/java/org/opencb/commons/datastore/core/QueryOptions.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ public class QueryOptions extends ObjectMap {
3333

3434
public static final String SORT = "sort";
3535
public static final String ORDER = "order";
36+
public static final String ASC = "asc";
3637
public static final String ASCENDING = "ascending";
38+
public static final String DESC = "desc";
3739
public static final String DESCENDING = "descending";
3840

3941
public static final String TIMEOUT = "timeout";

commons-datastore/commons-datastore-mongodb/src/main/java/org/opencb/commons/datastore/mongodb/MongoDBNativeQuery.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,7 @@
2828
import org.opencb.commons.datastore.core.ComplexTypeConverter;
2929
import org.opencb.commons.datastore.core.QueryOptions;
3030

31-
import java.util.ArrayList;
32-
import java.util.Collection;
33-
import java.util.Iterator;
34-
import java.util.List;
31+
import java.util.*;
3532
import java.util.concurrent.*;
3633

3734
import static org.opencb.commons.datastore.mongodb.MongoDBQueryUtils.getProjection;
@@ -181,8 +178,8 @@ public FindIterable<Document> nativeFind(ClientSession clientSession, Bson query
181178
if (sortObject instanceof Bson) {
182179
findIterable.sort(((Bson) sortObject));
183180
} else if (sortObject instanceof String) {
184-
String order = options.getString(QueryOptions.ORDER, "DESC");
185-
if (order.equalsIgnoreCase(QueryOptions.ASCENDING) || order.equalsIgnoreCase("ASC")
181+
String order = options.getString(QueryOptions.ORDER, QueryOptions.DESC.toUpperCase(Locale.ROOT));
182+
if (order.equalsIgnoreCase(QueryOptions.ASCENDING) || order.equalsIgnoreCase(QueryOptions.ASC)
186183
|| order.equals("1")) {
187184
findIterable.sort(Sorts.ascending(((String) sortObject)));
188185
} else {
@@ -200,9 +197,9 @@ public FindIterable<Document> nativeFind(ClientSession clientSession, Bson query
200197
order = fieldArray[1];
201198
} else if (fieldArray.length == 1) {
202199
sortField = field;
203-
order = options.getString(QueryOptions.ORDER, "DESC");
200+
order = options.getString(QueryOptions.ORDER, QueryOptions.DESC.toUpperCase(Locale.ROOT));
204201
}
205-
if (QueryOptions.ASCENDING.equalsIgnoreCase(order) || "ASC".equalsIgnoreCase(order)
202+
if (QueryOptions.ASCENDING.equalsIgnoreCase(order) || QueryOptions.ASC.equalsIgnoreCase(order)
206203
|| "1".equals(order)) {
207204
sortedList.add(Sorts.ascending(sortField));
208205
} else {

commons-datastore/commons-datastore-mongodb/src/main/java/org/opencb/commons/datastore/mongodb/MongoDBQueryUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1052,8 +1052,8 @@ public static Bson getSort(QueryOptions options) {
10521052
if (sortObject instanceof Bson) {
10531053
return Aggregates.sort((Bson) sortObject);
10541054
} else if (sortObject instanceof String) {
1055-
String order = options.getString(QueryOptions.ORDER, "DESC");
1056-
if (order.equalsIgnoreCase(QueryOptions.ASCENDING) || order.equalsIgnoreCase("ASC") || order.equals("1")) {
1055+
String order = options.getString(QueryOptions.ORDER, QueryOptions.DESC.toUpperCase(Locale.ROOT));
1056+
if (order.equalsIgnoreCase(QueryOptions.ASCENDING) || order.equalsIgnoreCase(QueryOptions.ASC) || order.equals("1")) {
10571057
return Aggregates.sort(Sorts.ascending((String) sortObject));
10581058
} else {
10591059
return Aggregates.sort(Sorts.descending((String) sortObject));

commons-datastore/commons-datastore-mongodb/src/test/java/org/opencb/commons/datastore/mongodb/MongoDBCollectionTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import java.util.*;
3838

3939
import static org.junit.Assert.*;
40-
import static org.opencb.commons.datastore.core.QueryOptions.SORT;
4140
import static org.opencb.commons.datastore.mongodb.MongoDBQueryUtils.*;
4241
import static org.opencb.commons.datastore.mongodb.MongoDBQueryUtils.Accumulator.*;
4342

@@ -256,8 +255,8 @@ public void testDistinct() throws Exception {
256255
@Test
257256
public void testSortOrder() throws Exception {
258257
Document query = new Document();
259-
QueryOptions queryOptions = new QueryOptions(QueryOptions.LIMIT, 10).append(SORT, "number")
260-
.append(QueryOptions.ORDER, "asc");
258+
QueryOptions queryOptions = new QueryOptions(QueryOptions.LIMIT, 10).append(QueryOptions.SORT, "number")
259+
.append(QueryOptions.ORDER, QueryOptions.ASC);
261260
List<Document> result = mongoDBCollection.find(query, queryOptions).getResults();
262261
assertEquals(0L, result.get(0).get("number"));
263262
}
@@ -266,8 +265,9 @@ public void testSortOrder() throws Exception {
266265
public void testMultipleSortOrder() throws Exception {
267266
Document query = new Document();
268267
QueryOptions queryOptions = new QueryOptions(QueryOptions.LIMIT, 500)
269-
.append(SORT, Arrays.asList("age:ASC", "number:DESC"))
270-
.append(QueryOptions.ORDER, "asc");
268+
.append(QueryOptions.SORT, Arrays.asList("age:" + QueryOptions.ASC.toUpperCase(Locale.ROOT),
269+
"number:" + QueryOptions.DESC.toUpperCase(Locale.ROOT)))
270+
.append(QueryOptions.ORDER, QueryOptions.ASC);
271271
int age = 0;
272272
long number = Long.MAX_VALUE;
273273
List<Document> result = mongoDBCollection.find(query, queryOptions).getResults();

commons-datastore/commons-datastore-solr/src/main/java/org/opencb/commons/datastore/solr/FacetQueryParser.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import java.util.regex.Matcher;
2626
import java.util.regex.Pattern;
2727

28+
import static org.opencb.commons.datastore.core.QueryOptions.*;
29+
2830
public class FacetQueryParser {
2931

3032
public static final String FACET_SEPARATOR = ";";
@@ -252,6 +254,7 @@ private Map<String, Object> parseFacet(String facet, QueryOptions options) throw
252254
auxMap.put("type", "terms");
253255
setTermLimit(matcher.group(3), options, auxMap);
254256
setTermSkip(options, auxMap);
257+
setTermOrder(options, auxMap);
255258

256259
Map<String, Object> tmpMap = new HashMap<>();
257260
tmpMap.put(matcher.group(1), auxMap);
@@ -261,6 +264,7 @@ private Map<String, Object> parseFacet(String facet, QueryOptions options) throw
261264
outputMap.put("type", "terms");
262265
setTermLimit(matcher.group(3), options, outputMap);
263266
setTermSkip(options, outputMap);
267+
setTermOrder(options, outputMap);
264268
}
265269
} else {
266270
throw new Exception("Invalid categorical facet: " + facet);
@@ -290,6 +294,30 @@ private void setTermSkip(QueryOptions options, Map<String, Object> map) {
290294
}
291295
}
292296

297+
private void setTermOrder(QueryOptions options, Map<String, Object> map) throws Exception {
298+
if (options.containsKey(QueryOptions.ORDER)) {
299+
String order = options.getString(QueryOptions.ORDER);
300+
switch (order.toLowerCase(Locale.ROOT)) {
301+
case ASC:
302+
case ASCENDING: {
303+
map.put("sort", "count asc");
304+
break;
305+
}
306+
case DESC:
307+
case DESCENDING: {
308+
map.put("sort", "count desc");
309+
break;
310+
}
311+
default: {
312+
throw new Exception("Invalid order value: '" + order + "'. Valid values are: "
313+
+ StringUtils.join(Arrays.asList(ASC, ASCENDING, DESC, DESCENDING)));
314+
}
315+
}
316+
} else {
317+
map.put("sort", "count desc");
318+
}
319+
}
320+
293321
private void parseNestedFacet(String nestedFacet, QueryOptions options, Map<String, Object> jsonFacet)
294322
throws Exception {
295323
String[] split = nestedFacet.split(NESTED_FACET_SEPARATOR);

0 commit comments

Comments
 (0)