.append(IndividualDBAdaptor.QueryParams.STUDY_UID.key(), studyUid) .append(IndividualDBAdaptor.QueryParams.UID.key(), memberSet); List<Document> memberList; try { Object samples = origMember.get(IndividualDBAdaptor.QueryParams.SAMPLES.key()); if (samples != null) { Object samplesObtained = subjectCopy.get(IndividualDBAdaptor.QueryParams.SAMPLES.key()); if (samplesObtained != null) { for (Document document : ((List<Document>) samplesObtained)) { subjectCopy.put(IndividualDBAdaptor.QueryParams.SAMPLES.key(), finalSamples); subjectCopy.put(IndividualDBAdaptor.QueryParams.SAMPLES.key(), Collections.emptyList());
fixComplexQueryParam(QueryParams.ATTRIBUTES.key(), queryCopy); fixComplexQueryParam(QueryParams.BATTRIBUTES.key(), queryCopy); fixComplexQueryParam(QueryParams.NATTRIBUTES.key(), queryCopy); QueryParams queryParam = QueryParams.getParam(entry.getKey()) != null ? QueryParams.getParam(entry.getKey()) : QueryParams.getParam(key); if (queryParam == null) { if (Constants.ALL_VERSIONS.equals(entry.getKey()) || Constants.PRIVATE_ANNOTATION_PARAM_TYPES.equals(entry.getKey())) { switch (queryParam) { case UID: addAutoOrQuery(PRIVATE_UID, queryParam.key(), queryCopy, queryParam.type(), andBsonList); break; case STUDY_UID: addAutoOrQuery(PRIVATE_STUDY_ID, queryParam.key(), queryCopy, queryParam.type(), andBsonList); break; case ATTRIBUTES: addAutoOrQuery(entry.getKey(), entry.getKey(), queryCopy, queryParam.type(), andBsonList); break; case BATTRIBUTES: String mongoKey = entry.getKey().replace(QueryParams.BATTRIBUTES.key(), QueryParams.ATTRIBUTES.key()); addAutoOrQuery(mongoKey, entry.getKey(), queryCopy, queryParam.type(), andBsonList); break; case NATTRIBUTES: mongoKey = entry.getKey().replace(QueryParams.NATTRIBUTES.key(), QueryParams.ATTRIBUTES.key()); addAutoOrQuery(mongoKey, entry.getKey(), queryCopy, queryParam.type(), andBsonList); break; case PHENOTYPES: case DISORDERS:
.append(IndividualDBAdaptor.QueryParams.SAMPLE_UIDS.key(), sample.getUid()) .append(IndividualDBAdaptor.QueryParams.STUDY_UID.key(), study.getUid()); QueryResult<Individual> individualQueryResult = individualDBAdaptor.get(auxQuery, QueryOptions.empty()); if (individualQueryResult.getNumResults() > 0) { .append(IndividualDBAdaptor.QueryParams.SAMPLES.key(), remainingSampleList); catalogManager.getIndividualManager().unsafeUpdate(study, individual, individualUpdateParams, QueryOptions.empty(), userId);
Query query = new Query(IndividualDBAdaptor.QueryParams.ID.key(), sampleAclParams.getIndividual()); QueryOptions options = new QueryOptions(QueryOptions.INCLUDE, IndividualDBAdaptor.QueryParams.SAMPLES.key()); QueryResult<Individual> indQueryResult = catalogManager.getIndividualManager().get(studyStr, query, options, sessionId);
.append(IndividualDBAdaptor.QueryParams.UID.key(), individual.getUid()) .append(IndividualDBAdaptor.QueryParams.STUDY_UID.key(), study.getUid()) .append(Constants.ALL_VERSIONS, true); ObjectMap updateParams = new ObjectMap() .append(IndividualDBAdaptor.QueryParams.STATUS_NAME.key(), Status.DELETED) .append(IndividualDBAdaptor.QueryParams.ID.key(), individual.getName() + suffixName); QueryResult<Long> update = individualDBAdaptor.update(updateQuery, updateParams, QueryOptions.empty()); if (update.first() > 0) {
if (parameters.containsKey(IndividualDBAdaptor.QueryParams.ANNOTATION_SETS.key())) { authorizationManager.checkIndividualPermission(studyId, individualId, userId, IndividualAclEntry.IndividualPermissions.WRITE_ANNOTATIONS); if ((parameters.size() == 1 && !parameters.containsKey(IndividualDBAdaptor.QueryParams.ANNOTATION_SETS.key())) || parameters.size() > 1) { authorizationManager.checkIndividualPermission(studyId, individualId, userId, IndividualAclEntry.IndividualPermissions.UPDATE); String myName = parameters.getString(IndividualDBAdaptor.QueryParams.ID.key()); Query query = new Query() .append(IndividualDBAdaptor.QueryParams.STUDY_UID.key(), studyId) .append(IndividualDBAdaptor.QueryParams.ID.key(), myName); if (individualDBAdaptor.count(query).first() > 0) { throw new CatalogException("Individual name " + myName + " already in use"); List<String> siblingList = (List<String>) multiples.get("siblings"); Query query = new Query() .append(IndividualDBAdaptor.QueryParams.STUDY_UID.key(), studyId) .append(IndividualDBAdaptor.QueryParams.ID.key(), StringUtils.join(siblingList, ",")); QueryOptions queryOptions = new QueryOptions(QueryOptions.INCLUDE, IndividualDBAdaptor.QueryParams.UID.key()); QueryResult<Individual> individualQueryResult = individualDBAdaptor.get(query, queryOptions); if (individualQueryResult.getNumResults() < siblingList.size()) { parameters.put(IndividualDBAdaptor.QueryParams.SAMPLES.key(), updatedSamples); if (StringUtils.isNotEmpty(parameters.getString(IndividualDBAdaptor.QueryParams.FATHER.key()))) { 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);
Object samples = individualDocument.get(IndividualDBAdaptor.QueryParams.SAMPLES.key()); if (samples != null && !options.getBoolean(NATIVE_QUERY)) { List<Document> sampleList = (List<Document>) samples; if (!sampleList.isEmpty()) { sampleList.forEach(s -> { String uid = String.valueOf(s.get(IndividualDBAdaptor.QueryParams.UID.key())); String version = String.valueOf(s.get(IndividualDBAdaptor.QueryParams.VERSION.key())); Document father = (Document) individualDocument.get(IndividualDBAdaptor.QueryParams.FATHER.key()); addParentToMap(individualMap, father); Document mother = (Document) individualDocument.get(IndividualDBAdaptor.QueryParams.MOTHER.key()); addParentToMap(individualMap, mother); .append(NATIVE_QUERY, true) .append(QueryOptions.INCLUDE, Arrays.asList( IndividualDBAdaptor.QueryParams.ID.key(), IndividualDBAdaptor.QueryParams.VERSION.key(), IndividualDBAdaptor.QueryParams.UID.key())); List<Document> parentList = individualMap.get(individual.getLong(IndividualDBAdaptor.QueryParams.UID.key())); for (Document parentDocument : parentList) { parentDocument.put(IndividualDBAdaptor.QueryParams.ID.key(), individual.getString(IndividualDBAdaptor.QueryParams.ID.key())); parentDocument.put(IndividualDBAdaptor.QueryParams.VERSION.key(), individual.getInteger(IndividualDBAdaptor.QueryParams.VERSION.key())); sampleMap.put(String.valueOf(sample.get(IndividualDBAdaptor.QueryParams.UID.key())) + "__" + String.valueOf(sample.get(IndividualDBAdaptor.QueryParams.VERSION.key())), sample) );
Query query = new Query(IndividualDBAdaptor.QueryParams.SAMPLES.key(), aclParams.getSample()); QueryOptions options = new QueryOptions(QueryOptions.INCLUDE, IndividualDBAdaptor.QueryParams.ID.key()); QueryResult<Individual> indQueryResult = catalogManager.getIndividualManager().get(studyStr, query, options, sessionId);
.append(IndividualDBAdaptor.QueryParams.SAMPLE_UIDS.key(), resource.getResource().getUid()) .append(IndividualDBAdaptor.QueryParams.STUDY_UID.key(), resource.getStudy().getUid()); QueryOptions indOptions = new QueryOptions(QueryOptions.INCLUDE, Arrays.asList( IndividualDBAdaptor.QueryParams.UID.key(), IndividualDBAdaptor.QueryParams.SAMPLES.key())); QueryResult<Individual> individualQueryResult = individualDBAdaptor.get(query, indOptions); ObjectMap params = new ObjectMap(IndividualDBAdaptor.QueryParams.SAMPLES.key(), individual.getSamples()); try { individualDBAdaptor.update(individual.getUid(), params, QueryOptions.empty());
.append("numberList", Arrays.asList(2, 3, 4)))); catalogManager.getSampleManager().update(studyFqn, sampleId1, new ObjectMap() .append(IndividualDBAdaptor.QueryParams.ANNOTATION_SETS.key(), Collections.singletonList(new ObjectMap() .append(AnnotationSetManager.ID, "annotation1") .append(AnnotationSetManager.VARIABLE_SET_ID, vs1.getId()) .append("numberList", Arrays.asList(3, 4, 5)))); catalogManager.getSampleManager().update(studyFqn, sampleId2, new ObjectMap() .append(IndividualDBAdaptor.QueryParams.ANNOTATION_SETS.key(), Collections.singletonList(new ObjectMap() .append(AnnotationSetManager.ID, "annotation1") .append(AnnotationSetManager.VARIABLE_SET_ID, vs1.getId())
if (parameters.containsKey(QueryParams.ID.key())) { .append(QueryParams.ID.key(), parameters.get(QueryParams.ID.key())) .append(QueryParams.STUDY_UID.key(), studyId); QueryResult<Long> count = count(tmpQuery); if (count.getResult().get(0) > 0) { throw new CatalogDBException("Cannot set name for individual. A individual with { name: '" + parameters.get(QueryParams.ID.key()) + "'} already exists."); document.getSet().put(QueryParams.ID.key(), parameters.get(QueryParams.ID.key())); String[] acceptedParams = {QueryParams.NAME.key(), QueryParams.ETHNICITY.key(), QueryParams.SEX.key(), QueryParams.POPULATION_NAME.key(), QueryParams.POPULATION_SUBPOPULATION.key(), QueryParams.POPULATION_DESCRIPTION.key(), QueryParams.KARYOTYPIC_SEX.key(), QueryParams.LIFE_STATUS.key(), QueryParams.AFFECTATION_STATUS.key(), QueryParams.DATE_OF_BIRTH.key(), }; filterStringParams(parameters, document.getSet(), acceptedParams); Map<String, Class<? extends Enum>> acceptedEnums = Collections.singletonMap((QueryParams.SEX.key()), IndividualProperty.Sex.class); filterEnumParams(parameters, document.getSet(), acceptedEnums); String[] acceptedIntParams = {QueryParams.FATHER_UID.key(), QueryParams.MOTHER_UID.key()}; filterLongParams(parameters, document.getSet(), acceptedIntParams); String[] acceptedMapParams = {QueryParams.ATTRIBUTES.key()}; filterMapParams(parameters, document.getSet(), acceptedMapParams); if (parameters.containsKey(QueryParams.STATUS_NAME.key())) { document.getSet().put(QueryParams.STATUS_NAME.key(), parameters.get(QueryParams.STATUS_NAME.key())); document.getSet().put(QueryParams.STATUS_DATE.key(), TimeUtils.getTime());
sample.getIndividual().getId(), new QueryOptions(QueryOptions.INCLUDE, Arrays.asList( IndividualDBAdaptor.QueryParams.UID.key(), IndividualDBAdaptor.QueryParams.SAMPLES.key())), sessionId); sampleList.add(queryResult.first()); ObjectMap params = new ObjectMap(IndividualDBAdaptor.QueryParams.SAMPLES.key(), sampleList); try { individualDBAdaptor.update(individual.getUid(), params, QueryOptions.empty());
.append(IndividualDBAdaptor.QueryParams.SAMPLE_UIDS.key(), sample.getUid()) .append(IndividualDBAdaptor.QueryParams.STUDY_UID.key(), studyId); QueryResult<Individual> individualQueryResult = individualDBAdaptor.get(query, new QueryOptions(QueryOptions.INCLUDE, Arrays.asList(IndividualDBAdaptor.QueryParams.UID.key(), IndividualDBAdaptor.QueryParams.ID.key()))); if (individualQueryResult.getNumResults() > 0) { throw new CatalogException("Sample from individual " + individualQueryResult.first().getName() + "("
.append(IndividualDBAdaptor.QueryParams.STUDY_UID.key(), studyUid) .append(IndividualDBAdaptor.QueryParams.UID.key(), uidList) .append(IndividualDBAdaptor.QueryParams.VERSION.key(), versionList); List<Document> memberList; try { fillParentInformation(memberUidVersionMap.get(key), IndividualDBAdaptor.QueryParams.FATHER.key(), memberUidMap); fillParentInformation(memberUidVersionMap.get(key), IndividualDBAdaptor.QueryParams.MOTHER.key(), memberUidMap);
annotations.put("COOL_NAME", "LUKE"); catalogManager.getSampleManager().update(studyFqn, sampleId, new ObjectMap() .append(IndividualDBAdaptor.QueryParams.ANNOTATION_SETS.key(), Collections.singletonList(new ObjectMap() .append(AnnotationSetManager.ID, "annotation1") .append(AnnotationSetManager.VARIABLE_SET_ID, vs1.getId()) .append(IndividualDBAdaptor.QueryParams.ANNOTATION_SETS.key(), Collections.singletonList(new ObjectMap() .append(AnnotationSetManager.ID, "annotation2") .append(AnnotationSetManager.VARIABLE_SET_ID, vs1.getId()) .append(IndividualDBAdaptor.QueryParams.ANNOTATION_SETS.key(), Collections.singletonList(new ObjectMap() .append(AnnotationSetManager.ID, "annotation3") .append(AnnotationSetManager.VARIABLE_SET_ID, vs1.getId()) .append(IndividualDBAdaptor.QueryParams.ANNOTATION_SETS.key(), Collections.singletonList(new ObjectMap() .append(AnnotationSetManager.ID, "annotation4") .append(AnnotationSetManager.VARIABLE_SET_ID, vs1.getId()) thrown.expect(CatalogException.class); catalogManager.getSampleManager().update(studyFqn, sampleId, new ObjectMap() .append(IndividualDBAdaptor.QueryParams.ANNOTATION_SETS.key(), Collections.singletonList(new ObjectMap() .append(AnnotationSetManager.ID, "annotation5") .append(AnnotationSetManager.VARIABLE_SET_ID, vs1.getId())
annotations.put("RANGE_NUM", "1"); // 1:14 catalogManager.getSampleManager().update(studyFqn, sampleId, new ObjectMap() .append(IndividualDBAdaptor.QueryParams.ANNOTATION_SETS.key(), Collections.singletonList(new ObjectMap() .append(AnnotationSetManager.ID, "annotation1") .append(AnnotationSetManager.VARIABLE_SET_ID, vs1.getId()) .append(IndividualDBAdaptor.QueryParams.ANNOTATION_SETS.key(), Collections.singletonList(new ObjectMap() .append(AnnotationSetManager.ID, "annotation2") .append(AnnotationSetManager.VARIABLE_SET_ID, vs1.getId()) .append(IndividualDBAdaptor.QueryParams.ANNOTATION_SETS.key(), Collections.singletonList(new ObjectMap() .append(AnnotationSetManager.ID, "annotation3") .append(AnnotationSetManager.VARIABLE_SET_ID, vs1.getId()) .append(IndividualDBAdaptor.QueryParams.ANNOTATION_SETS.key(), Collections.singletonList(new ObjectMap() .append(AnnotationSetManager.ID, "annotation4") .append(AnnotationSetManager.VARIABLE_SET_ID, vs1.getId()) thrown.expect(CatalogException.class); catalogManager.getSampleManager().update(studyFqn, sampleId, new ObjectMap() .append(IndividualDBAdaptor.QueryParams.ANNOTATION_SETS.key(), Collections.singletonList(new ObjectMap() .append(AnnotationSetManager.ID, "annotation5") .append(AnnotationSetManager.VARIABLE_SET_ID, vs1.getId())
.append(IndividualDBAdaptor.QueryParams.ANNOTATION_SETS.key(), Collections.singletonList(new ObjectMap() .append(AnnotationSetManager.ID, "annot1") .append(AnnotationSetManager.VARIABLE_SET_ID, variableSet.getId()) .append(IndividualDBAdaptor.QueryParams.ANNOTATION_SETS.key(), Collections.singletonList(new ObjectMap() .append(AnnotationSetManager.ID, "annot1") .append(AnnotationSetManager.VARIABLE_SET_ID, variableSet.getId()) .append(IndividualDBAdaptor.QueryParams.ANNOTATION_SETS.key(), Collections.singletonList(new ObjectMap() .append(AnnotationSetManager.ID, "annot1") .append(AnnotationSetManager.VARIABLE_SET_ID, variableSet.getId()) new Query(IndividualDBAdaptor.QueryParams.ANNOTATION.key(), variableSet.getId() + ":NAME=~^INDIVIDUAL_"), null, sessionIdUser) .getResult().stream().map(Individual::getName).collect(Collectors.toList()); new Query(IndividualDBAdaptor.QueryParams.ANNOTATION.key(), variableSet.getId() + ":AGE>10"), null, sessionIdUser) .getResult().stream().map(Individual::getName).collect(Collectors.toList()); assertTrue(individuals.containsAll(Arrays.asList("INDIVIDUAL_2", "INDIVIDUAL_3"))); new Query(IndividualDBAdaptor.QueryParams.ANNOTATION.key(), variableSet.getId() + ":AGE>10;" + variableSet.getId() + ":PHEN=CASE"), null, sessionIdUser) .getResult().stream().map(Individual::getName).collect(Collectors.toList());
Query query = new Query(IndividualDBAdaptor.QueryParams.SAMPLE_UIDS.key(), sampleUidMap.keySet()); if (studyUid > 0) { query.put(IndividualDBAdaptor.QueryParams.STUDY_UID.key(), studyUid); List<Document> samples = (List<Document>) individual.get(IndividualMongoDBAdaptor.QueryParams.SAMPLES.key()); individual.remove(IndividualMongoDBAdaptor.QueryParams.SAMPLES.key()); samples.forEach(s -> { long uid = s.getLong(SampleDBAdaptor.QueryParams.UID.key());
field -> !field.equals(IndividualDBAdaptor.QueryParams.VERSION.key()) && !field.equals(IndividualDBAdaptor.QueryParams.UID.key()) ); if (includeAdditionalFields) { includeList.add(IndividualDBAdaptor.QueryParams.VERSION.key()); includeList.add(IndividualDBAdaptor.QueryParams.UID.key()); queryOptions.put(QueryOptions.INCLUDE, includeList); } else {