public List<QueryResult<IndividualAclEntry>> getAcls(String studyStr, List<String> individualList, String member, boolean silent, String sessionId) throws CatalogException { List<QueryResult<IndividualAclEntry>> individualAclList = new ArrayList<>(individualList.size()); for (String individual : individualList) { try { MyResource<Individual> resource = getUid(individual, studyStr, sessionId); QueryResult<IndividualAclEntry> allIndividualAcls; if (StringUtils.isNotEmpty(member)) { allIndividualAcls = authorizationManager.getIndividualAcl(resource.getStudy().getUid(), resource.getResource().getUid(), resource.getUser(), member); } else { allIndividualAcls = authorizationManager.getAllIndividualAcls(resource.getStudy().getUid(), resource.getResource().getUid(), resource.getUser()); } allIndividualAcls.setId(individual); individualAclList.add(allIndividualAcls); } catch (CatalogException e) { if (silent) { individualAclList.add(new QueryResult<>(individual, 0, 0, 0, "", e.toString(), new ArrayList<>(0))); } else { throw e; } } } return individualAclList; }
private void fixQuery(Study study, Query query, String sessionId) throws CatalogException { if (StringUtils.isNotEmpty(query.getString(IndividualDBAdaptor.QueryParams.FATHER.key()))) { MyResource resource = getUid(query.getString(IndividualDBAdaptor.QueryParams.FATHER.key()), study.getFqn(), sessionId); query.remove(IndividualDBAdaptor.QueryParams.FATHER.key()); query.append(IndividualDBAdaptor.QueryParams.FATHER_UID.key(), resource.getResource().getUid()); } if (StringUtils.isNotEmpty(query.getString(IndividualDBAdaptor.QueryParams.MOTHER.key()))) { MyResource resource = getUid(query.getString(IndividualDBAdaptor.QueryParams.MOTHER.key()), study.getFqn(), sessionId); query.remove(IndividualDBAdaptor.QueryParams.MOTHER.key()); query.append(IndividualDBAdaptor.QueryParams.MOTHER_UID.key(), resource.getResource().getUid()); } if (StringUtils.isNotEmpty(query.getString(IndividualDBAdaptor.QueryParams.SAMPLES.key()))) { MyResources<Sample> resource = catalogManager.getSampleManager().getUids( query.getString(IndividualDBAdaptor.QueryParams.SAMPLES.key()), study.getFqn(), sessionId); query.remove(IndividualDBAdaptor.QueryParams.SAMPLES.key()); query.append(IndividualDBAdaptor.QueryParams.SAMPLE_UIDS.key(), resource.getResourceList().stream().map(Sample::getUid) .collect(Collectors.toList())); } }
MyResource<Individual> resource = catalogManager.getIndividualManager().getUid(proband.getId(), study.getFqn(), sessionId); proband.setUid(resource.getResource().getUid());
@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); if (fields == null || fields.size() == 0) { throw new CatalogException("Empty fields parameter."); } String userId = userManager.getUserId(sessionId); Study study = catalogManager.getStudyManager().resolveId(studyStr, userId); // Fix query if it contains any annotation AnnotationUtils.fixQueryAnnotationSearch(study, userId, query, authorizationManager); AnnotationUtils.fixQueryOptionAnnotation(options); // Add study id to the query query.put(SampleDBAdaptor.QueryParams.STUDY_UID.key(), study.getUid()); if (StringUtils.isNotEmpty(query.getString(SampleDBAdaptor.QueryParams.INDIVIDUAL.key()))) { String individualStr = query.getString(SampleDBAdaptor.QueryParams.INDIVIDUAL.key()); if (NumberUtils.isCreatable(individualStr) && Long.parseLong(individualStr) <= 0) { query.put(SampleDBAdaptor.QueryParams.INDIVIDUAL_UID.key(), -1); } else { MyResource resource = catalogManager.getIndividualManager().getUid(individualStr, studyStr, sessionId); query.put(SampleDBAdaptor.QueryParams.INDIVIDUAL_UID.key(), resource.getResource().getUid()); } query.remove(SampleDBAdaptor.QueryParams.INDIVIDUAL.key()); } QueryResult queryResult = sampleDBAdaptor.groupBy(query, fields, options, userId); return ParamUtils.defaultObject(queryResult, QueryResult::new); }
options = ParamUtils.defaultObject(options, QueryOptions::new); MyResource<Individual> resource = getUid(entryStr, studyStr, sessionId); String userId = resource.getUser(); long studyId = resource.getStudy().getUid(); Map<String, Object> map = parameters.getMap(IndividualDBAdaptor.QueryParams.FATHER.key()); if (map != null && StringUtils.isNotEmpty((String) map.get(IndividualDBAdaptor.QueryParams.ID.key()))) { MyResource tmpResource = getUid((String) map.get(IndividualDBAdaptor.QueryParams.ID.key()), studyStr, sessionId); parameters.remove(IndividualDBAdaptor.QueryParams.FATHER.key()); parameters.put(IndividualDBAdaptor.QueryParams.FATHER_UID.key(), tmpResource.getResource().getUid()); Map<String, Object> map = parameters.getMap(IndividualDBAdaptor.QueryParams.MOTHER.key()); if (map != null && StringUtils.isNotEmpty((String) map.get(IndividualDBAdaptor.QueryParams.ID.key()))) { MyResource tmpResource = getUid((String) map.get(IndividualDBAdaptor.QueryParams.ID.key()), studyStr, sessionId); parameters.remove(IndividualDBAdaptor.QueryParams.MOTHER.key()); parameters.put(IndividualDBAdaptor.QueryParams.MOTHER_UID.key(), tmpResource.getResource().getUid());
MyResource<Individual> fatherResource = getUid(individual.getFather().getId(), study.getFqn(), sessionId); individual.setFather(fatherResource.getResource()); MyResource<Individual> motherResource = getUid(individual.getMother().getId(), study.getFqn(), sessionId); individual.setMother(motherResource.getResource());
@Test public void createClinicalAnalysisNoFamilyTest() throws CatalogException { QueryResult<ClinicalAnalysis> dummyEnvironment = createDummyEnvironment(false); assertEquals(1, dummyEnvironment.getNumResults()); assertEquals(0, dummyEnvironment.first().getInterpretations().size()); assertEquals(catalogManager.getIndividualManager().getUid("child1", STUDY, sessionIdUser).getResource().getUid(), dummyEnvironment.first().getProband().getUid()); assertEquals(1, dummyEnvironment.first().getProband().getSamples().size()); assertEquals(catalogManager.getSampleManager().getUid("sample2", STUDY, sessionIdUser).getResource().getUid(), dummyEnvironment.first().getProband().getSamples().get(0).getUid()); }
@Test public void updateSubjectsNoFamilyTest() throws CatalogException { createDummyEnvironment(false); ObjectMap params = new ObjectMap(ClinicalAnalysisDBAdaptor.QueryParams.PROBAND.key(), new Individual().setId("child1").setSamples(Arrays.asList(new Sample().setId("sample2")))); QueryResult<ClinicalAnalysis> updateResult = catalogManager.getClinicalAnalysisManager().update(STUDY, "analysis", params, QueryOptions.empty(), sessionIdUser); assertEquals(1, updateResult.getNumResults()); assertEquals(0, updateResult.first().getInterpretations().size()); assertEquals(catalogManager.getIndividualManager().getUid("child1", STUDY, sessionIdUser).getResource().getUid(), updateResult.first().getProband().getUid()); assertEquals(1, updateResult.first().getProband().getSamples().size()); assertEquals(catalogManager.getSampleManager().getUid("sample2", STUDY, sessionIdUser).getResource().getUid(), updateResult.first().getProband().getSamples().get(0).getUid()); }
@Test public void updateSubjectsAndFamilyTest() throws CatalogException { createDummyEnvironment(false); ObjectMap params = new ObjectMap() .append(ClinicalAnalysisDBAdaptor.QueryParams.PROBAND.key(), new Individual().setId("child1").setSamples(Arrays.asList(new Sample().setId("sample2")))) .append(ClinicalAnalysisDBAdaptor.QueryParams.FAMILY.key(), new Family().setId("family")); QueryResult<ClinicalAnalysis> updateResult = catalogManager.getClinicalAnalysisManager().update(STUDY, "analysis", params, QueryOptions.empty(), sessionIdUser); assertEquals(1, updateResult.getNumResults()); assertEquals(0, updateResult.first().getInterpretations().size()); assertEquals(catalogManager.getFamilyManager().getUid("family", STUDY, sessionIdUser).getResource().getUid(), updateResult.first().getFamily().getUid()); assertEquals(catalogManager.getIndividualManager().getUid("child1", STUDY, sessionIdUser).getResource().getUid(), updateResult.first().getProband().getUid()); assertEquals(1, updateResult.first().getProband().getSamples().size()); assertEquals(catalogManager.getSampleManager().getUid("sample2", STUDY, sessionIdUser).getResource().getUid(), updateResult.first().getProband().getSamples().get(0).getUid()); }
.getUid(query.getString(ClinicalAnalysisDBAdaptor.QueryParams.PROBAND.key()), study.getFqn(), sessionId); query.put(ClinicalAnalysisDBAdaptor.QueryParams.PROBAND_UID.key(), probandResource.getResource().getUid()); query.remove(ClinicalAnalysisDBAdaptor.QueryParams.PROBAND.key());