@Override
public QueryResult<Long> count(final Query query, final String user, final StudyAclEntry.StudyPermissions studyPermissions)
throws CatalogDBException, CatalogAuthorizationException {
filterOutDeleted(query);
StudyAclEntry.StudyPermissions studyPermission = (studyPermissions == null
? StudyAclEntry.StudyPermissions.VIEW_FAMILIES : studyPermissions);
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.getFamilyPermission().name(), Entity.FAMILY.name());
Bson bson = parseQuery(query, false, queryForAuthorisedEntries);
logger.debug("Family count: query : {}, dbTime: {}", bson.toBsonDocument(Document.class, MongoClient.getDefaultCodecRegistry()));
return familyCollection.count(bson);
}