@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); // Fix query if it contains any annotation AnnotationUtils.fixQueryAnnotationSearch(study, userId, finalQuery, authorizationManager); AnnotationUtils.fixQueryOptionAnnotation(options); try { fixQuery(study, finalQuery, sessionId); } catch (CatalogException e) { // Any of mother, father or sample ids or names do not exist or were not found return new QueryResult<>(null); } // Add study id to the query finalQuery.put(IndividualDBAdaptor.QueryParams.STUDY_UID.key(), study.getUid()); QueryResult queryResult = individualDBAdaptor.groupBy(finalQuery, fields, options, userId); return ParamUtils.defaultObject(queryResult, QueryResult::new); }
@Override public QueryResult<Individual> count(String studyStr, Query query, String sessionId) throws CatalogException { query = ParamUtils.defaultObject(query, Query::new); String userId = userManager.getUserId(sessionId); Study study = catalogManager.getStudyManager().resolveId(studyStr, userId, new QueryOptions(QueryOptions.INCLUDE, StudyDBAdaptor.QueryParams.VARIABLE_SET.key())); Query finalQuery = new Query(query); try { fixQuery(study, finalQuery, sessionId); } catch (CatalogException e) { // Any of mother, father or sample ids or names do not exist or were not found return new QueryResult<>(null); } // Fix query if it contains any annotation AnnotationUtils.fixQueryAnnotationSearch(study, finalQuery); finalQuery.append(IndividualDBAdaptor.QueryParams.STUDY_UID.key(), study.getUid()); QueryResult<Long> queryResultAux = individualDBAdaptor.count(finalQuery, userId, StudyAclEntry.StudyPermissions.VIEW_INDIVIDUALS); return new QueryResult<>("count", queryResultAux.getDbTime(), 0, queryResultAux.first(), queryResultAux.getWarningMsg(), queryResultAux.getErrorMsg(), Collections.emptyList()); }
fixQuery(study, finalQuery, sessionId);
@Override public QueryResult<Individual> search(String studyStr, Query query, QueryOptions options, String sessionId) throws CatalogException { query = ParamUtils.defaultObject(query, Query::new); options = ParamUtils.defaultObject(options, QueryOptions::new); String userId = userManager.getUserId(sessionId); Study study = catalogManager.getStudyManager().resolveId(studyStr, userId, new QueryOptions(QueryOptions.INCLUDE, StudyDBAdaptor.QueryParams.VARIABLE_SET.key())); Query finalQuery = new Query(query); try { fixQuery(study, finalQuery, sessionId); } catch (CatalogException e) { // Any of mother, father or sample ids or names do not exist or were not found return new QueryResult<>("Get"); } // Fix query if it contains any annotation AnnotationUtils.fixQueryAnnotationSearch(study, finalQuery); AnnotationUtils.fixQueryOptionAnnotation(options); finalQuery.append(IndividualDBAdaptor.QueryParams.STUDY_UID.key(), study.getUid()); QueryResult<Individual> queryResult = individualDBAdaptor.get(finalQuery, options, userId); // authorizationManager.filterIndividuals(userId, studyId, queryResultAux.getResult()); return queryResult; }
@Override public QueryResult<Individual> get(String studyStr, Query query, QueryOptions options, String sessionId) throws CatalogException { query = ParamUtils.defaultObject(query, Query::new); options = ParamUtils.defaultObject(options, QueryOptions::new); String userId = userManager.getUserId(sessionId); Study study = studyManager.resolveId(studyStr, userId, new QueryOptions(QueryOptions.INCLUDE, StudyDBAdaptor.QueryParams.VARIABLE_SET.key())); // Fix query if it contains any annotation AnnotationUtils.fixQueryAnnotationSearch(study, query); AnnotationUtils.fixQueryOptionAnnotation(options); fixQuery(study, query, sessionId); query.append(IndividualDBAdaptor.QueryParams.STUDY_UID.key(), study.getUid()); QueryResult<Individual> individualQueryResult = individualDBAdaptor.get(query, options, userId); if (individualQueryResult.getNumResults() == 0 && query.containsKey(IndividualDBAdaptor.QueryParams.UID.key())) { List<Long> idList = query.getAsLongList(IndividualDBAdaptor.QueryParams.UID.key()); for (Long myId : idList) { authorizationManager.checkIndividualPermission(study.getUid(), myId, userId, IndividualAclEntry.IndividualPermissions.VIEW); } } return individualQueryResult; }