List<Cohort> cohorts = dbAdaptorFactory.getCatalogCohortDBAdaptor().get( new Query(CohortDBAdaptor.QueryParams.STUDY_UID.key(), studyId), null).getResult(); assertEquals(numCohorts, cohorts.size());
@Override Cohort smartResolutor(long studyUid, String entry, String user) throws CatalogException { Query query = new Query() .append(CohortDBAdaptor.QueryParams.STUDY_UID.key(), studyUid); if (UUIDUtils.isOpenCGAUUID(entry)) { query.put(CohortDBAdaptor.QueryParams.UUID.key(), entry); } else { query.put(CohortDBAdaptor.QueryParams.ID.key(), entry); } QueryOptions options = new QueryOptions(QueryOptions.INCLUDE, Arrays.asList( CohortDBAdaptor.QueryParams.UUID.key(), CohortDBAdaptor.QueryParams.UID.key(), CohortDBAdaptor.QueryParams.STUDY_UID.key(), CohortDBAdaptor.QueryParams.ID.key(), CohortDBAdaptor.QueryParams.RELEASE.key(), CohortDBAdaptor.QueryParams.SAMPLES.key(), CohortDBAdaptor.QueryParams.STATUS.key())); QueryResult<Cohort> cohortQueryResult = cohortDBAdaptor.get(query, options, user); if (cohortQueryResult.getNumResults() == 0) { cohortQueryResult = cohortDBAdaptor.get(query, options); if (cohortQueryResult.getNumResults() == 0) { throw new CatalogException("Cohort " + entry + " not found"); } else { throw new CatalogAuthorizationException("Permission denied. " + user + " is not allowed to see the cohort " + entry); } } else if (cohortQueryResult.getNumResults() > 1) { throw new CatalogException("More than one cohort found based on " + entry); } else { return cohortQueryResult.first(); } }
@Override public QueryResult<Cohort> 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 = 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); fixQueryObject(study, query, sessionId); query.append(CohortDBAdaptor.QueryParams.STUDY_UID.key(), study.getUid()); QueryResult<Cohort> queryResult = cohortDBAdaptor.get(query, options, userId); // authorizationManager.filterCohorts(userId, studyId, queryResultAux.getResult()); return queryResult; }
.append(CohortDBAdaptor.QueryParams.STUDY_UID.key(), resource.getStudy().getUid()) .append(CohortDBAdaptor.QueryParams.UID.key(), resource.getResource().getUid()); QueryResult<Cohort> cohortQueryResult = cohortDBAdaptor.get(query, new QueryOptions(QueryOptions.INCLUDE, CohortDBAdaptor.QueryParams.SAMPLES.key()));
@Override public QueryResult<Cohort> 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 = catalogManager.getStudyManager().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); fixQueryObject(study, query, sessionId); query.append(CohortDBAdaptor.QueryParams.STUDY_UID.key(), study.getUid()); QueryResult<Cohort> cohortQueryResult = cohortDBAdaptor.get(query, options, userId); if (cohortQueryResult.getNumResults() == 0 && query.containsKey(CohortDBAdaptor.QueryParams.UID.key())) { List<Long> idList = query.getAsLongList(CohortDBAdaptor.QueryParams.UID.key()); for (Long myId : idList) { authorizationManager.checkCohortPermission(study.getUid(), myId, userId, CohortAclEntry.CohortPermissions.VIEW); } } return cohortQueryResult; }
public QueryResult<Cohort> update(String studyStr, String entryStr, ObjectMap parameters, boolean allowModifyCohortAll, QueryOptions options, String sessionId) throws CatalogException { ParamUtils.checkObj(parameters, "Update parameters"); options = ParamUtils.defaultObject(options, QueryOptions::new); parameters = new ObjectMap(parameters); MyResource<Cohort> resource = getUid(entryStr, studyStr, sessionId); // Check permissions... // Only check write annotation permissions if the user wants to update the annotation sets if (parameters.containsKey(CohortDBAdaptor.QueryParams.ANNOTATION_SETS.key())) { authorizationManager.checkCohortPermission(resource.getStudy().getUid(), resource.getResource().getUid(), resource.getUser(), CohortAclEntry.CohortPermissions.WRITE_ANNOTATIONS); } // Only check update permissions if the user wants to update anything apart from the annotation sets if ((parameters.size() == 1 && !parameters.containsKey(CohortDBAdaptor.QueryParams.ANNOTATION_SETS.key())) || parameters.size() > 1) { authorizationManager.checkCohortPermission(resource.getStudy().getUid(), resource.getResource().getUid(), resource.getUser(), CohortAclEntry.CohortPermissions.UPDATE); } Cohort cohort = cohortDBAdaptor.get(resource.getResource().getUid(), QueryOptions.empty()).first(); return unsafeUpdate(resource.getStudy(), cohort, parameters, allowModifyCohortAll, options, resource.getUser()); }