@Override
public QueryResult groupBy(@Nullable String studyStr, Query query, List<String> fields, QueryOptions options, String sessionId)
throws CatalogException {
query = ParamUtils.defaultObject(query, Query::new);
options = ParamUtils.defaultObject(options, QueryOptions::new);
ParamUtils.checkObj(fields, "fields");
String userId = userManager.getUserId(sessionId);
Study study = catalogManager.getStudyManager().resolveId(studyStr, userId);
Query finalQuery = new Query(query);
AnnotationUtils.fixQueryAnnotationSearch(study, userId, finalQuery, authorizationManager);
AnnotationUtils.fixQueryOptionAnnotation(options);
try {
fixQuery(study, finalQuery, sessionId);
} catch (CatalogException e) {
return new QueryResult<>(null);
}
finalQuery.put(IndividualDBAdaptor.QueryParams.STUDY_UID.key(), study.getUid());
QueryResult queryResult = individualDBAdaptor.groupBy(finalQuery, fields, options, userId);
return ParamUtils.defaultObject(queryResult, QueryResult::new);
}