public List<QueryResult<ClinicalAnalysisAclEntry>> getAcls(String studyStr, List<String> clinicalList, String member, boolean silent, String sessionId) throws CatalogException { List<QueryResult<ClinicalAnalysisAclEntry>> clinicalAclList = new ArrayList<>(clinicalList.size()); for (String clinicalAnalysis : clinicalList) { try { MyResource<ClinicalAnalysis> resource = getUid(clinicalAnalysis, studyStr, sessionId); QueryResult<ClinicalAnalysisAclEntry> allClinicalAcls; if (StringUtils.isNotEmpty(member)) { allClinicalAcls = authorizationManager.getClinicalAnalysisAcl(resource.getStudy().getUid(), resource.getResource().getUid(), resource.getUser(), member); } else { allClinicalAcls = authorizationManager.getAllClinicalAnalysisAcls(resource.getStudy().getUid(), resource.getResource().getUid(), resource.getUser()); } allClinicalAcls.setId(clinicalAnalysis); clinicalAclList.add(allClinicalAcls); } catch (CatalogException e) { if (silent) { clinicalAclList.add(new QueryResult<>(clinicalAnalysis, 0, 0, 0, "", e.toString(), new ArrayList<>(0))); } else { throw e; } } } return clinicalAclList; }
@Override public Document convertToStorageType(ClinicalAnalysis clinicalAnalysis) { Document document = super.convertToStorageType(clinicalAnalysis); document.put("uid", clinicalAnalysis.getUid()); document.put("studyUid", clinicalAnalysis.getStudyUid()); document.put("interpretations", convertInterpretations(clinicalAnalysis.getInterpretations())); validateDocumentToUpdate(document); return document; }
String sessionId) throws CatalogException { MyResource<ClinicalAnalysis> resource = getUid(entryStr, studyStr, sessionId); authorizationManager.checkClinicalAnalysisPermission(resource.getStudy().getUid(), resource.getResource().getUid(), resource.getUser(), ClinicalAnalysisAclEntry.ClinicalAnalysisPermissions.UPDATE); Query query = new Query(ClinicalAnalysisDBAdaptor.QueryParams.UID.key(), resource.getResource().getUid()); QueryResult<ClinicalAnalysis> clinicalAnalysisQueryResult = get(studyStr, query, new QueryOptions(), sessionId); ClinicalAnalysis clinicalAnalysis = clinicalAnalysisQueryResult.first(); return clinicalDBAdaptor.update(resource.getResource().getUid(), parameters, QueryOptions.empty());
public QueryResult<Interpretation> create(String studyStr, String clinicalAnalysisStr, Interpretation interpretation, QueryOptions options, String sessionId) throws CatalogException { // We check if the user can create interpretations in the clinical analysis MyResource<ClinicalAnalysis> resource = catalogManager.getClinicalAnalysisManager() .getUid(clinicalAnalysisStr, studyStr, sessionId); authorizationManager.checkClinicalAnalysisPermission(resource.getStudy().getUid(), resource.getResource().getUid(), resource.getUser(), ClinicalAnalysisAclEntry.ClinicalAnalysisPermissions.UPDATE); options = ParamUtils.defaultObject(options, QueryOptions::new); ParamUtils.checkObj(interpretation, "clinicalAnalysis"); ParamUtils.checkAlias(interpretation.getInterpretation().getId(), "id"); interpretation.getInterpretation().setCreationDate(TimeUtils.getTime()); interpretation.getInterpretation().setDescription( ParamUtils.defaultString(interpretation.getInterpretation().getDescription(), "")); interpretation.getInterpretation().setStatus(Status.READY); interpretation.getInterpretation().setAttributes( ParamUtils.defaultObject(interpretation.getInterpretation().getAttributes(), Collections.emptyMap())); interpretation.setUuid(UUIDUtils.generateOpenCGAUUID(UUIDUtils.Entity.INTERPRETATION)); QueryResult<Interpretation> queryResult = interpretationDBAdaptor.insert(resource.getStudy().getUid(), interpretation, options); // Now, we add the interpretation to the clinical analysis ObjectMap parameters = new ObjectMap(); parameters.put(ClinicalAnalysisDBAdaptor.QueryParams.INTERPRETATIONS.key(), Arrays.asList(interpretation)); Map<String, Object> actionMap = new HashMap<>(); actionMap.put(ClinicalAnalysisDBAdaptor.QueryParams.INTERPRETATIONS.key(), ParamUtils.UpdateAction.ADD.name()); parameters.put(Constants.ACTIONS, actionMap); catalogManager.getClinicalAnalysisManager().update(resource.getStudy().getFqn(), clinicalAnalysisStr, parameters, null, sessionId); return queryResult; }
long studyId = getStudyId(clinicalAnalysisQueryResult.first().getUid());
authorizationManager.checkClinicalAnalysisPermission(resource.getStudy().getUid(), clinicalAnalysisResource.getResource().getUid(), resource.getUser(), ClinicalAnalysisAclEntry.ClinicalAnalysisPermissions.UPDATE);