@Override
public QueryResult<Long> count(final Query query, final String user, final StudyAclEntry.StudyPermissions studyPermissions)
throws CatalogDBException, CatalogAuthorizationException {
filterOutDeleted(query);
StudyAclEntry.StudyPermissions studyPermission = studyPermissions;
if (studyPermission == null) {
studyPermission = StudyAclEntry.StudyPermissions.VIEW_CLINICAL_ANALYSIS;
}
Query studyQuery = new Query(StudyDBAdaptor.QueryParams.UID.key(), query.getLong(QueryParams.STUDY_UID.key()));
QueryResult queryResult = dbAdaptorFactory.getCatalogStudyDBAdaptor().nativeGet(studyQuery, QueryOptions.empty());
if (queryResult.getNumResults() == 0) {
throw new CatalogDBException("Study " + query.getLong(QueryParams.STUDY_UID.key()) + " not found");
}
Document queryForAuthorisedEntries = getQueryForAuthorisedEntries((Document) queryResult.first(), user,
studyPermission.name(), studyPermission.getClinicalAnalysisPermission().name(), Entity.CLINICAL_ANALYSIS.name());
Bson bson = parseQuery(query, false, queryForAuthorisedEntries);
logger.debug("Clinical count: query : {}, dbTime: {}", bson.toBsonDocument(Document.class, MongoClient.getDefaultCodecRegistry()));
return clinicalCollection.count(bson);
}