Arrays.asList(StringUtils.split(fileAclParams.getSample(), ",")), studyStr, sessionId); Query query = new Query(FileDBAdaptor.QueryParams.SAMPLE_UIDS.key(), resource.getResourceList().stream().map(Sample::getUid) .collect(Collectors.toList())); QueryOptions options = new QueryOptions(QueryOptions.INCLUDE, FileDBAdaptor.QueryParams.UID.key()); authorizationManager.checkCanAssignOrSeePermissions(resource.getStudy().getUid(), resource.getUser()); checkMembers(resource.getStudy().getUid(), members); .map(String::valueOf) .collect(Collectors.toList()); return authorizationManager.setAcls(resource.getStudy().getUid(), resource.getResourceList().stream().map(File::getUid) .collect(Collectors.toList()), members, permissions, allFilePermissions, Entity.FILE); case ADD: return authorizationManager.addAcls(resource.getStudy().getUid(), resource.getResourceList().stream().map(File::getUid) .collect(Collectors.toList()), members, permissions, Entity.FILE); case REMOVE: return authorizationManager.removeAcls(resource.getResourceList().stream().map(File::getUid).collect(Collectors.toList()), members, permissions, Entity.FILE); case RESET: return authorizationManager.removeAcls(resource.getResourceList().stream().map(File::getUid).collect(Collectors.toList()), members, null, Entity.FILE); default:
fileList.addAll(resource.getResourceList()); uidFileSet.addAll(resource.getResourceList().stream().map(File::getUid).collect(Collectors.toSet())); for (File file : resource.getResourceList()) { if (file.getType().equals(File.Type.DIRECTORY)) { pathList.add("~^" + file.getPath()); .append(FileDBAdaptor.QueryParams.STUDY_UID.key(), resource.getStudy().getUid()) .append(FileDBAdaptor.QueryParams.PATH.key(), pathList); QueryResult<File> fileQueryResult1 = fileDBAdaptor.get(query, options); return new MyResources<>(resource.getUser(), resource.getStudy(), fileList);
JobDBAdaptor.QueryParams.OUT_DIR.key(), JobDBAdaptor.QueryParams.ATTRIBUTES.key())); List<Long> resourceList = resource.getResourceList().stream().map(File::getUid).collect(Collectors.toList()); .append(JobDBAdaptor.QueryParams.STUDY_UID.key(), resource.getStudy().getUid()) .append(JobDBAdaptor.QueryParams.INPUT_UID.key(), resourceList) .append(JobDBAdaptor.QueryParams.STATUS_NAME.key(), Constants.ALL_STATUS); .append(JobDBAdaptor.QueryParams.STUDY_UID.key(), resource.getStudy().getUid()) .append(JobDBAdaptor.QueryParams.OUTPUT_UID.key(), resourceList) .append(JobDBAdaptor.QueryParams.STATUS_NAME.key(), Constants.ALL_STATUS); .append(JobDBAdaptor.QueryParams.STUDY_UID.key(), resource.getStudy().getUid()) .append(JobDBAdaptor.QueryParams.OUT_DIR_UID.key(), resourceList) .append(JobDBAdaptor.QueryParams.STATUS_NAME.key(), Constants.ALL_STATUS); .append(FileDBAdaptor.QueryParams.STUDY_UID.key(), resource.getStudy().getUid()) .append(FileDBAdaptor.QueryParams.STATUS_NAME.key(), GET_NON_DELETED_FILES); QueryResult<File> fileQueryResult = fileDBAdaptor.get(query, QueryOptions.empty());
Query query = new Query(FileDBAdaptor.QueryParams.UID.key(), resource.getResourceList().stream().map(File::getUid) .collect(Collectors.toList())); QueryOptions options = new QueryOptions(QueryOptions.INCLUDE, FileDBAdaptor.QueryParams.SAMPLES.key()); authorizationManager.checkCanAssignOrSeePermissions(resource.getStudy().getUid(), resource.getUser()); checkMembers(resource.getStudy().getUid(), members); .map(String::valueOf) .collect(Collectors.toList()); queryResults = authorizationManager.setAcls(resource.getStudy().getUid(), resource.getResourceList().stream() .map(Sample::getUid).collect(Collectors.toList()), members, permissions, allSamplePermissions, Entity.SAMPLE); try { Individual.IndividualAclParams aclParams = new Individual.IndividualAclParams(sampleAclParams.getPermissions(), AclParams.Action.SET, StringUtils.join(resource.getResourceList().stream().map(Sample::getId) .collect(Collectors.toList()), ","), false); queryResults = authorizationManager.addAcls(resource.getStudy().getUid(), resource.getResourceList().stream() .map(Sample::getUid).collect(Collectors.toList()), members, permissions, Entity.SAMPLE); if (sampleAclParams.isPropagate()) { try { Individual.IndividualAclParams aclParams = new Individual.IndividualAclParams(sampleAclParams.getPermissions(), AclParams.Action.ADD, StringUtils.join(resource.getResourceList().stream().map(Sample::getId) .collect(Collectors.toList()), ","), false); catalogManager.getIndividualManager().updateAcl(studyStr, null, memberIds, aclParams, sessionId); queryResults = authorizationManager.removeAcls(resource.getResourceList().stream().map(Sample::getUid)
MyResources<Sample> sampleResource = catalogManager.getSampleManager().getUids(samples, studyStr, sessionId); Map<Long, Integer> existingSamplesInIndividual = checkSamplesNotInUseInOtherIndividual( sampleResource.getResourceList().stream().map(Sample::getUid).collect(Collectors.toSet()), studyId, individualId); Iterator<Sample> iterator = sampleResource.getResourceList().iterator(); while (iterator.hasNext()) { Sample sample = iterator.next(); updatedSamples.addAll(sampleResource.getResourceList()); updatedSamples.addAll(sampleResource.getResourceList());
params = ParamUtils.defaultObject(params, HashMap::new); MyResources<File> resource = getUids(fileList, studyStr, sessionId); List<File> fileFolderIdList = resource.getResourceList(); long studyId = resource.getStudy().getUid(); String userId = resource.getUser(); outDir = smartResolutor(resource.getStudy().getUid(), outDirPath, resource.getUser()); } catch (CatalogException e) { logger.warn("'{}' does not exist. Trying to create the output directory.", outDirPath); attributes.put(IndexDaemon.INDEX_TYPE, indexDaemonType); attributes.putIfNotNull(Job.OPENCGA_OUTPUT_DIR, outDirPath); attributes.putIfNotNull(Job.OPENCGA_STUDY, resource.getStudy().getFqn());
MyResources<File> resourceIds = new MyResources<>(userId, study, fileList); try { removeJobReferences(resourceIds);
authorizationManager.checkCanAssignOrSeePermissions(resource.getStudy().getUid(), resource.getUser()); checkMembers(resource.getStudy().getUid(), members); .map(String::valueOf) .collect(Collectors.toList()); queryResults = authorizationManager.setAcls(resource.getStudy().getUid(), resource.getResourceList().stream() .map(Individual::getUid).collect(Collectors.toList()), members, permissions, allIndividualPermissions, Entity.INDIVIDUAL); queryResults = authorizationManager.addAcls(resource.getStudy().getUid(), resource.getResourceList().stream() .map(Individual::getUid).collect(Collectors.toList()), members, permissions, Entity.INDIVIDUAL); if (aclParams.isPropagate()) { queryResults = authorizationManager.removeAcls(resource.getResourceList().stream().map(Individual::getUid) .collect(Collectors.toList()), members, permissions, Entity.INDIVIDUAL); if (aclParams.isPropagate()) { queryResults = authorizationManager.removeAcls(resource.getResourceList().stream().map(Individual::getUid) .collect(Collectors.toList()), members, null, Entity.INDIVIDUAL); if (aclParams.isPropagate()) {
Set<Long> sampleIdsSet = sampleResource.getResourceList().stream().map(Sample::getUid).collect(Collectors.toSet());
authorizationManager.checkCanAssignOrSeePermissions(resource.getStudy().getUid(), resource.getUser()); checkMembers(resource.getStudy().getUid(), members); .map(String::valueOf) .collect(Collectors.toList()); return authorizationManager.setAcls(resource.getStudy().getUid(), resource.getResourceList().stream() .map(ClinicalAnalysis::getUid) .collect(Collectors.toList()), members, permissions, allClinicalPermissions, Entity.CLINICAL_ANALYSIS); case ADD: return authorizationManager.addAcls(resource.getStudy().getUid(), resource.getResourceList().stream() .map(ClinicalAnalysis::getUid) .collect(Collectors.toList()), members, permissions, Entity.CLINICAL_ANALYSIS); case REMOVE: return authorizationManager.removeAcls(resource.getResourceList().stream() .map(ClinicalAnalysis::getUid).collect(Collectors.toList()), members, permissions, Entity.CLINICAL_ANALYSIS); case RESET: return authorizationManager.removeAcls(resource.getResourceList().stream() .map(ClinicalAnalysis::getUid).collect(Collectors.toList()), members, null, Entity.CLINICAL_ANALYSIS);
} else { AbstractManager.MyResources<File> resource = catalogManager.getFileManager().getUids(fileIdStrs, studyIdStr, sessionId); files = resource.getResourceList(); study = resource.getStudy();
MyResources<File> fileResource = new MyResources<>(userId, resource.getStudy(), fileList); try { removeJobReferences(fileResource);
authorizationManager.checkCanAssignOrSeePermissions(resource.getStudy().getUid(), resource.getUser()); members = Collections.emptyList(); checkMembers(resource.getStudy().getUid(), members); authorizationManager.checkNotAssigningPermissionsToAdminsGroup(members); .map(String::valueOf) .collect(Collectors.toList()); return authorizationManager.setAcls(resource.getStudy().getUid(), resource.getResourceList().stream().map(Cohort::getUid) .collect(Collectors.toList()), members, permissions, allCohortPermissions, Entity.COHORT); case ADD: return authorizationManager.addAcls(resource.getStudy().getUid(), resource.getResourceList().stream().map(Cohort::getUid) .collect(Collectors.toList()), members, permissions, Entity.COHORT); case REMOVE: return authorizationManager.removeAcls(resource.getResourceList().stream().map(Cohort::getUid).collect(Collectors.toList()), members, permissions, Entity.COHORT); case RESET: return authorizationManager.removeAcls(resource.getResourceList().stream().map(Cohort::getUid).collect(Collectors.toList()), members, null, Entity.COHORT); default:
authorizationManager.checkCanAssignOrSeePermissions(resource.getStudy().getUid(), resource.getUser()); checkMembers(resource.getStudy().getUid(), members); .map(String::valueOf) .collect(Collectors.toList()); return authorizationManager.setAcls(resource.getStudy().getUid(), resource.getResourceList().stream().map(Job::getUid) .collect(Collectors.toList()), members, permissions, allJobPermissions, Entity.JOB); case ADD: return authorizationManager.addAcls(resource.getStudy().getUid(), resource.getResourceList().stream().map(Job::getUid) .collect(Collectors.toList()), members, permissions, Entity.JOB); case REMOVE: return authorizationManager.removeAcls(resource.getResourceList().stream().map(Job::getUid).collect(Collectors.toList()), members, permissions, Entity.JOB); case RESET: return authorizationManager.removeAcls(resource.getResourceList().stream().map(Job::getUid).collect(Collectors.toList()), members, null, Entity.JOB); default:
authorizationManager.checkCanAssignOrSeePermissions(resource.getStudy().getUid(), resource.getUser()); checkMembers(resource.getStudy().getUid(), members); .map(String::valueOf) .collect(Collectors.toList()); return authorizationManager.setAcls(resource.getStudy().getUid(), resource.getResourceList().stream().map(Family::getUid) .collect(Collectors.toList()), members, permissions, allFamilyPermissions, Entity.FAMILY); case ADD: return authorizationManager.addAcls(resource.getStudy().getUid(), resource.getResourceList().stream().map(Family::getUid) .collect(Collectors.toList()), members, permissions, Entity.FAMILY); case REMOVE: return authorizationManager.removeAcls(resource.getResourceList().stream().map(Family::getUid).collect(Collectors.toList()), members, permissions, Entity.FAMILY); case RESET: return authorizationManager.removeAcls(resource.getResourceList().stream().map(Family::getUid).collect(Collectors.toList()), members, null, Entity.FAMILY); default:
authorizationManager.checkCanAssignOrSeePermissions(resource.getStudy().getUid(), resource.getUser()); checkMembers(resource.getStudy().getUid(), members); .map(String::valueOf) .collect(Collectors.toList()); return authorizationManager.setAcls(resource.getStudy().getUid(), resource.getResourceList().stream() .map(Panel::getUid) .collect(Collectors.toList()), members, permissions, allPanelPermissions, Entity.PANEL); case ADD: return authorizationManager.addAcls(resource.getStudy().getUid(), resource.getResourceList().stream() .map(Panel::getUid) .collect(Collectors.toList()), members, permissions, Entity.PANEL); case REMOVE: return authorizationManager.removeAcls(resource.getResourceList().stream().map(Panel::getUid) .collect(Collectors.toList()), members, permissions, Entity.PANEL); case RESET: return authorizationManager.removeAcls(resource.getResourceList().stream().map(Panel::getUid) .collect(Collectors.toList()), members, null, Entity.PANEL); default:
MyResources<Individual> resource = catalogManager.getIndividualManager().getUids( query.getAsStringList(FamilyDBAdaptor.QueryParams.MEMBERS.key()), study.getFqn(), sessionId); query.put(FamilyDBAdaptor.QueryParams.MEMBER_UID.key(), resource.getResourceList().stream().map(Individual::getUid) .collect(Collectors.toList())); } catch (CatalogException e) {
/** * Fetch all the R objects matching the query. * * @param studyStr Study id in string format. Could be one of [id|user@aliasProject:aliasStudy|aliasProject:aliasStudy|aliasStudy]. * @param entryList Comma separated list of entries to be fetched. * @param query Query object. * @param options QueryOptions object, like "include", "exclude", "limit" and "skip". * @param sessionId sessionId * @return All matching elements. * @throws CatalogException CatalogException. */ public List<QueryResult<R>> get(String studyStr, List<String> entryList, Query query, QueryOptions options, String sessionId) throws CatalogException { List<QueryResult<R>> resultList = new ArrayList<>(entryList.size()); query = ParamUtils.defaultObject(query, Query::new); MyResources<R> resource = getUids(entryList, studyStr, sessionId); List<Long> resourceIds = resource.getResourceList().stream().map(R::getUid).collect(Collectors.toList()); for (int i = 0; i < resourceIds.size(); i++) { Long entityId = resourceIds.get(i); Query queryCopy = new Query(query); queryCopy.put("uid", entityId); QueryResult<R> rQueryResult = get(studyStr, queryCopy, options, sessionId); rQueryResult.setId(entryList.get(i)); resultList.add(rQueryResult); } return resultList; }
@Override protected List<String> validate(String defaultStudyStr, List<String> values, Integer release, VariantQueryParam param, String sessionId) throws CatalogException { if (release == null) { AbstractManager.MyResources<File> uids = catalogManager.getFileManager().getUids(values, defaultStudyStr, sessionId); return uids.getResourceList().stream().map(File::getName).collect(Collectors.toList()); } else { return validate(defaultStudyStr, values, release, param, catalogManager.getFileManager(), File::getName, file -> ((int) file.getIndex().getRelease()), file -> { if (file.getIndex() == null || file.getIndex().getStatus() == null || file.getIndex().getStatus().getName() == null || !file.getIndex().getStatus().getName().equals(Status.READY)) { throw new VariantQueryException("File '" + file.getName() + "' is not indexed"); } }, sessionId); } } }
/** * Obtains the resource java beans containing the requested entries. * * @param entryList List of entry ids in string format. * @param studyStr Study id in string format. Could be one of [id|user@aliasProject:aliasStudy|aliasProject:aliasStudy|aliasStudy]. * @param sessionId Session id of the user logged. * @return the resource java beans containing the requested entries. * @throws CatalogException when more than one entry is found. */ public AbstractManager.MyResources<R> getUids(List<String> entryList, @Nullable String studyStr, String sessionId) throws CatalogException { String userId = catalogManager.getUserManager().getUserId(sessionId); Study study = catalogManager.getStudyManager().resolveId(studyStr, userId); List<R> finalEntryList = new ArrayList<>(entryList.size()); for (String entryStr : entryList) { R entry = smartResolutor(study.getUid(), entryStr, userId); finalEntryList.add(entry); } return new MyResources<>(userId, study, finalEntryList); }