Phenotype phenotype2 = new Phenotype("dis2", "Phenotype 2", "HPO"); Individual father = new Individual().setId("father").setPhenotypes(Arrays.asList(new Phenotype("dis1", "dis1", "OT"))); Individual mother = new Individual().setId("mother").setPhenotypes(Arrays.asList(new Phenotype("dis2", "dis2", "OT"))); Individual relFather = new Individual().setId("father").setPhenotypes(Arrays.asList(new Phenotype("dis1", "dis1", "OT"))); Individual relMother = new Individual().setId("mother").setPhenotypes(Arrays.asList(new Phenotype("dis2", "dis2", "OT"))); Individual relChild1 = new Individual().setId("child1") .setPhenotypes(Arrays.asList(new Phenotype("dis1", "dis1", "OT"), new Phenotype("dis2", "dis2", "OT"))) .setFather(father) .setMother(mother) .setMultiples(new Multiples("multiples", Arrays.asList("child2", "child3"))) .setParentalConsanguinity(true); Individual relChild2 = new Individual().setId("child2") .setPhenotypes(Arrays.asList(new Phenotype("dis1", "dis1", "OT"))) .setFather(father) .setMother(mother) .setMultiples(new Multiples("multiples", Arrays.asList("child1", "child3"))) .setParentalConsanguinity(true); Individual relChild3 = new Individual().setId("child3") .setPhenotypes(Arrays.asList(new Phenotype("dis1", "dis1", "OT"))) .setFather(father) .setMother(mother) .setMultiples(new Multiples("multiples", Arrays.asList("child1", "child2"))) .setParentalConsanguinity(true);
ParamUtils.checkAlias(individual.getId(), "id"); individual.setName(StringUtils.isEmpty(individual.getName()) ? individual.getId() : individual.getName()); individual.setLocation(ParamUtils.defaultObject(individual.getLocation(), Location::new)); individual.setEthnicity(ParamUtils.defaultObject(individual.getEthnicity(), "")); individual.setPopulation(ParamUtils.defaultObject(individual.getPopulation(), Individual.Population::new)); individual.setLifeStatus(ParamUtils.defaultObject(individual.getLifeStatus(), IndividualProperty.LifeStatus.UNKNOWN)); individual.setKaryotypicSex(ParamUtils.defaultObject(individual.getKaryotypicSex(), IndividualProperty.KaryotypicSex.UNKNOWN)); individual.setSex(ParamUtils.defaultObject(individual.getSex(), IndividualProperty.Sex.UNKNOWN)); individual.setAffectationStatus(ParamUtils.defaultObject(individual.getAffectationStatus(), IndividualProperty.AffectationStatus.UNKNOWN)); individual.setPhenotypes(ParamUtils.defaultObject(individual.getPhenotypes(), Collections.emptyList())); individual.setAnnotationSets(ParamUtils.defaultObject(individual.getAnnotationSets(), Collections.emptyList())); individual.setAttributes(ParamUtils.defaultObject(individual.getAttributes(), Collections.emptyMap())); individual.setSamples(ParamUtils.defaultObject(individual.getSamples(), Collections.emptyList())); individual.setStatus(new Status()); individual.setCreationDate(TimeUtils.getTime()); List<VariableSet> variableSetList = validateNewAnnotationSetsAndExtractVariableSets(studyUid, individual.getAnnotationSets()); individual.setRelease(studyManager.getCurrentRelease(study, userId)); if (individual.getSamples().size() > 0) { for (Sample sample : individual.getSamples()) { try { MyResource<Sample> resource = catalogManager.getSampleManager().getUid(sample.getId(), studyStr, sessionId); individual.setSamples(sampleList); if (individual.getFather() != null && StringUtils.isNotEmpty(individual.getFather().getId())) {
private void createMissingIndividual(Individual individual, Map<String, Individual> individualMap, Study study, String sessionId) throws CatalogException { if (individual == null || individual.getUid() > 0) { return; } if (individual.getFather() != null && StringUtils.isNotEmpty(individual.getFather().getId())) { createMissingIndividual(individual.getFather(), individualMap, study, sessionId); individual.setFather(individualMap.get(individual.getFather().getId())); } if (individual.getMother() != null && StringUtils.isNotEmpty(individual.getMother().getId())) { createMissingIndividual(individual.getMother(), individualMap, study, sessionId); individual.setMother(individualMap.get(individual.getMother().getId())); } QueryResult<Individual> individualQueryResult = catalogManager.getIndividualManager().create(study.getFqn(), individual, QueryOptions.empty(), sessionId); if (individualQueryResult.getNumResults() == 0) { throw new CatalogException("Unexpected error when trying to create individual " + individual.getId()); } individualMap.put(individual.getId(), individualQueryResult.first()); }
public static Pedigree getPedigreeFromFamily(Family family) { List<Individual> members = family.getMembers(); Map<String, Member> individualMap = new HashMap<>(); // Parse all the individuals for (Individual member : members) { Member individual = new Member( member.getId(), member.getName(), null, null, member.getMultiples(), Member.Sex.getEnum(member.getSex().toString()), member.getLifeStatus(), Member.AffectionStatus.getEnum(member.getAffectationStatus().toString()), member.getPhenotypes(), member.getAttributes()); individualMap.put(individual.getId(), individual); } // Fill parent information for (Individual member : members) { if (member.getFather() != null && StringUtils.isNotEmpty(member.getFather().getId())) { individualMap.get(member.getId()).setFather(individualMap.get(member.getFather().getId())); } if (member.getMother() != null && StringUtils.isNotEmpty(member.getMother().getId())) { individualMap.get(member.getId()).setMother(individualMap.get(member.getMother().getId())); } } List<Member> individuals = new ArrayList<>(individualMap.values()); return new Pedigree(family.getId(), individuals, family.getPhenotypes(), family.getAttributes()); }
private void fillIndividuals(String studyId, List<org.opencb.biodata.models.metadata.Individual> individuals) throws CatalogException { Map<String, org.opencb.biodata.models.metadata.Individual> individualMap = individuals .stream() .collect(Collectors.toMap(org.opencb.biodata.models.metadata.Individual::getId, i -> i)); Query query = new Query(IndividualDBAdaptor.QueryParams.ID.key(), new ArrayList<>(individualMap.keySet())); List<Individual> catalogIndividuals = catalogManager.getIndividualManager().get(studyId, query, INDIVIDUAL_QUERY_OPTIONS, sessionId) .getResult(); for (Individual catalogIndividual : catalogIndividuals) { org.opencb.biodata.models.metadata.Individual individual = individualMap.get(catalogIndividual.getName()); individual.setSex(catalogIndividual.getSex().name()); // individual.setFamily(catalogIndividual.getFamily()); individual.setPhenotype(catalogIndividual.getAffectationStatus().toString()); if (catalogIndividual.getMother() != null) { individual.setMother(catalogIndividual.getMother().getId()); } if (catalogIndividual.getFather() != null) { individual.setFather(catalogIndividual.getFather().getId()); } } }
individualSolrModel.setUid(individual.getUid()); individualSolrModel.setStudyId(study.getFqn().replace(":", "__")); individualSolrModel.setHasFather(individual.getFather() != null && individual.getFather().getUid() > 0); individualSolrModel.setHasMother(individual.getMother() != null && individual.getMother().getUid() > 0); if (individual.getMultiples() != null && individual.getMultiples().getSiblings() != null && !individual.getMultiples().getSiblings().isEmpty()) { individualSolrModel.setNumMultiples(individual.getMultiples().getSiblings().size()); individualSolrModel.setMultiplesType(individual.getMultiples().getType()); } else { individualSolrModel.setNumMultiples(0); if (individual.getSex() != null) { individualSolrModel.setSex(individual.getSex().name()); if (individual.getKaryotypicSex() != null) { individualSolrModel.setKaryotypicSex(individual.getKaryotypicSex().name()); individualSolrModel.setEthnicity(individual.getEthnicity()); if (individual.getPopulation() != null) { individualSolrModel.setPopulation(individual.getPopulation().getName()); individualSolrModel.setRelease(individual.getRelease()); individualSolrModel.setVersion(individual.getVersion()); Date date = TimeUtils.toDate(individual.getCreationDate()); LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
@Test public void IndividualToSolrTest() { Study study = new Study().setFqn("user@project:study").setAttributes(new HashMap<>()); Individual individual = new Individual("Id", "individual", IndividualProperty.Sex.MALE, "Spanish", new Individual.Population("valencian", "", ""), 2, AnnotationHelper.createAnnotation(), null); individual.setUid(300).setMultiples(new Multiples("twin", Arrays.asList("Pedro"))) .setKaryotypicSex(IndividualProperty.KaryotypicSex.XX).setVersion(4).setStatus(new Status("READY")). setLifeStatus(IndividualProperty.LifeStatus.ABORTED).setAffectationStatus(IndividualProperty.AffectationStatus.AFFECTED). setSamples(Arrays.asList(new Sample().setId("1"), new Sample().setId("2"))).setParentalConsanguinity(true); assertEquals(individualSolrModel.getUid(), individual.getUid()); assertEquals(individualSolrModel.getMultiplesType(), individual.getMultiples().getType()); assertEquals(individualSolrModel.getSex(), individual.getSex().name()); assertEquals(individualSolrModel.getKaryotypicSex(), individual.getKaryotypicSex().name()); assertEquals(individualSolrModel.getEthnicity(), individual.getEthnicity()); assertEquals(individualSolrModel.getPopulation(), individual.getPopulation().getName()); assertEquals(individualSolrModel.getRelease(), individual.getRelease()); Date date = TimeUtils.toDate(individual.getCreationDate()); LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); assertEquals(individualSolrModel.getVersion(), individual.getVersion()); assertEquals(individualSolrModel.getStatus(), individual.getStatus().getName()); assertEquals(individualSolrModel.getLifeStatus(), individual.getLifeStatus().name()); assertEquals(individualSolrModel.getAffectationStatus(), individual.getAffectationStatus().name()); assertEquals(individualSolrModel.getPhenotypes().size(), 0); assertEquals(individualSolrModel.isParentalConsanguinity(), individual.isParentalConsanguinity());
if (!get(new Query(QueryParams.ID.key(), individual.getName()) .append(QueryParams.STUDY_UID.key(), studyId), new QueryOptions()).getResult().isEmpty()) { throw CatalogDBException.alreadyExists("Individual", "name", individual.getName()); if (individual.getFather() != null && individual.getFather().getUid() > 0 && !exists(individual.getFather().getUid())) { throw CatalogDBException.idNotFound("Individual", individual.getFather().getId()); if (individual.getMother() != null && individual.getMother().getUid() > 0 && !exists(individual.getMother().getUid())) { throw CatalogDBException.idNotFound("Individual", individual.getMother().getId()); individual.setUid(individualId); individual.setStudyUid(studyId); individual.setVersion(1); if (StringUtils.isEmpty(individual.getUuid())) { individual.setUuid(UUIDUtils.generateOpenCGAUUID(UUIDUtils.Entity.INDIVIDUAL)); individualDocument.put(RELEASE_FROM_VERSION, Arrays.asList(individual.getRelease())); individualDocument.put(LAST_OF_VERSION, true); individualDocument.put(LAST_OF_RELEASE, true); if (StringUtils.isNotEmpty(individual.getCreationDate())) { individualDocument.put(PRIVATE_CREATION_DATE, TimeUtils.toDate(individual.getCreationDate())); } else { individualDocument.put(PRIVATE_CREATION_DATE, TimeUtils.getDate());
membersMap.put(individual.getId(), individual); if (individual.getUid() > 0) { membersMap.put(String.valueOf(individual.getUid()), individual); if (individual.getMother() != null) { if (individual.getMother().getUid() > 0) { individual.getMother().setId(String.valueOf(individual.getMother().getUid())); if (!StringUtils.isEmpty(individual.getMother().getId())) { parentsKey = individual.getMother().getId() + "||F"; if (individual.getFather() != null) { if (parentsKey != null) { parentsKey += "---"; if (individual.getFather().getUid() > 0) { individual.getFather().setId(String.valueOf(individual.getFather().getUid())); if (!StringUtils.isEmpty(individual.getFather().getId())) { if (parentsKey != null) { parentsKey += individual.getFather().getId() + "||M"; } else { parentsKey = individual.getFather().getId() + "||M"; IndividualProperty.Sex sex1 = membersMap.get(name).getSex(); if (sex1 != null && sex1 != sex && sex1 != IndividualProperty.Sex.UNKNOWN) { throw new CatalogException("Sex of parent " + name + " is incorrect or the relationship is incorrect. In " + "principle, it should be " + sex);
@Test public void testGetIndividualWithSamples() throws CatalogException { IndividualManager individualManager = catalogManager.getIndividualManager(); individualManager.create(studyFqn, new Individual().setId("individual1") .setSamples(Arrays.asList(new Sample().setId("sample1"), new Sample().setId("sample2"), new Sample().setId("sample3"))), QueryOptions.empty(), sessionIdUser); individualManager.create(studyFqn, new Individual().setId("individual2") .setSamples(Arrays.asList(new Sample().setId("sample4"), new Sample().setId("sample5"), new Sample().setId("sample6"))), QueryOptions.empty(), sessionIdUser); assertEquals(2, search.getNumResults()); search.getResult().forEach(i -> { assertEquals(3, i.getSamples().size()); assertTrue(org.apache.commons.lang3.StringUtils.isNotEmpty(i.getSamples().get(0).getCreationDate())); if (i.getId().equals("individual1")) { assertTrue(Arrays.asList("sample1", "sample2", "sample3").containsAll( i.getSamples().stream().map(Sample::getId).collect(Collectors.toList()) )); } else { assertTrue(Arrays.asList("sample4", "sample5", "sample6").containsAll( i.getSamples().stream().map(Sample::getId).collect(Collectors.toList()) )); assertEquals(2, search.getNumResults()); search.getResult().forEach(i -> { assertEquals(3, i.getSamples().size()); assertTrue(org.apache.commons.lang3.StringUtils.isEmpty(i.getSamples().get(0).getCreationDate())); if (i.getId().equals("individual1")) { assertTrue(Arrays.asList("sample1", "sample2", "sample3").containsAll( i.getSamples().stream().map(Sample::getId).collect(Collectors.toList())
@Test public void testUpdateIndividuaParents() throws CatalogException { IndividualManager individualManager = catalogManager.getIndividualManager(); individualManager.create(studyFqn, new Individual().setId("child"), QueryOptions.empty(), sessionIdUser); individualManager.create(studyFqn, new Individual().setId("father"), QueryOptions.empty(), sessionIdUser); individualManager.create(studyFqn, new Individual().setId("mother"), QueryOptions.empty(), sessionIdUser); QueryResult<Individual> individualQueryResult = individualManager.update(studyFqn, "child", new ObjectMap() .append(IndividualDBAdaptor.QueryParams.FATHER.key(), new ObjectMap(IndividualDBAdaptor.QueryParams.ID.key(), "father")) .append(IndividualDBAdaptor.QueryParams.MOTHER.key(), new ObjectMap(IndividualDBAdaptor.QueryParams.ID.key(), "mother")), QueryOptions.empty(), sessionIdUser); assertEquals("mother", individualQueryResult.first().getMother().getId()); assertEquals(1, individualQueryResult.first().getMother().getVersion()); assertEquals("father", individualQueryResult.first().getFather().getId()); assertEquals(1, individualQueryResult.first().getFather().getVersion()); }
@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()); }
if (member.getId().equals(clinicalAnalysis.getProband().getId())) { proband = member; Set<Long> familyProbandSamples = proband.getSamples().stream().map(Sample::getUid).collect(Collectors.toSet()); List<Long> probandSample = clinicalAnalysis.getProband().getSamples().stream().map(Sample::getUid).collect(Collectors.toList()); if (clinicalAnalysis.getFamily() != null && clinicalAnalysis.getFamily().getMembers() != null) { for (Individual member : clinicalAnalysis.getFamily().getMembers()) { if (member.getSamples() != null) { for (Sample sample : member.getSamples()) { sampleMap.put(sample.getId(), sample.getUid()); } else if (clinicalAnalysis.getProband() != null && clinicalAnalysis.getProband().getSamples() != null) { for (Sample sample : clinicalAnalysis.getProband().getSamples()) { sampleMap.put(sample.getId(), sample.getUid());
@Test public void testAvoidDuplicatedSamples() throws CatalogDBException { long studyId = user3.getProjects().get(0).getStudies().get(0).getUid(); Sample sample1 = catalogDBAdaptor.getCatalogSampleDBAdaptor().insert(studyId, new Sample().setId("sample1").setStatus(new Status()), QueryOptions.empty()).first(); Sample sample2 = catalogDBAdaptor.getCatalogSampleDBAdaptor().insert(studyId, new Sample().setId("sample2").setStatus(new Status()), QueryOptions.empty()).first(); Individual individual = new Individual() .setName("in2") .setStatus(new Status()) .setSamples(Arrays.asList(sample1, sample1, sample2, new Sample().setUid(-1).setStatus(new Status()))); Individual individualStored = catalogIndividualDBAdaptor.insert(studyId, individual, null).first(); assertEquals(2, individualStored.getSamples().size()); assertTrue(individualStored.getSamples().stream().map(Sample::getUid).collect(Collectors.toSet()).containsAll(Arrays.asList( sample1.getUid(), sample2.getUid()))); // Update samples ObjectMap params = new ObjectMap(IndividualDBAdaptor.QueryParams.SAMPLES.key(), individual.getSamples()); Individual update = catalogIndividualDBAdaptor.update(individualStored.getUid(), params, QueryOptions.empty()).first(); assertEquals(2, update.getSamples().size()); assertTrue(update.getSamples().stream().map(Sample::getUid).collect(Collectors.toSet()).containsAll(Arrays.asList(sample1.getUid(), sample2.getUid()))); }
VariableSet variableSet = study.getVariableSets().get(0); String individualId1 = catalogManager.getIndividualManager().create(studyFqn, new Individual().setId("INDIVIDUAL_1") .setKaryotypicSex(IndividualProperty.KaryotypicSex.UNKNOWN).setLifeStatus(IndividualProperty.LifeStatus.UNKNOWN) .setAffectationStatus(IndividualProperty.AffectationStatus.UNKNOWN), new QueryOptions(), sessionIdUser) .first().getId(); String individualId2 = catalogManager.getIndividualManager().create(studyFqn, new Individual().setId("INDIVIDUAL_2") .setKaryotypicSex(IndividualProperty.KaryotypicSex.UNKNOWN).setLifeStatus(IndividualProperty.LifeStatus.UNKNOWN) .setAffectationStatus(IndividualProperty.AffectationStatus.UNKNOWN), new QueryOptions(), sessionIdUser) .first().getId(); String individualId3 = catalogManager.getIndividualManager().create(studyFqn, new Individual().setId("INDIVIDUAL_3") .setKaryotypicSex(IndividualProperty.KaryotypicSex.UNKNOWN).setLifeStatus(IndividualProperty.LifeStatus.UNKNOWN) .setAffectationStatus(IndividualProperty.AffectationStatus.UNKNOWN), new QueryOptions(), sessionIdUser) .first().getId();
if (StringUtils.isEmpty(member.getId())) { throw new CatalogException("Missing member id"); List<Sample> samples = member.getSamples(); if (member.getUid() <= 0) { QueryResult<Individual> individualQueryResult = catalogManager.getIndividualManager().get(study.getFqn(), member.getId(), new QueryOptions(), sessionId); if (individualQueryResult.getNumResults() == 0) { throw new CatalogException("Member " + member.getId() + " not found"); finalMember.getId(), new QueryOptions(QueryOptions.INCLUDE, IndividualDBAdaptor.QueryParams.SAMPLES.key()), sessionId); if (individualQueryResult.getNumResults() == 0) { throw new CatalogException("Member " + finalMember.getId() + " not found"); finalMember.setSamples(individualQueryResult.first().getSamples()); if (ListUtils.isNotEmpty(finalMember.getSamples())) { Map<String, Sample> sampleMap = new HashMap<>(); for (Sample sample : finalMember.getSamples()) { sampleMap.put(sample.getId(), sample); finalMember.setSamples(finalSampleList);
Individual ind = new Individual() .setId("INDIVIDUAL_1") .setSex(IndividualProperty.Sex.UNKNOWN); ind.setAnnotationSets(Collections.singletonList(annotationSet)); ind = catalogManager.getIndividualManager().create(studyFqn, ind, QueryOptions.empty(), sessionIdUser).first(); catalogManager.getIndividualManager().updateAnnotations(studyFqn, ind.getId(), annotationSet.getId(), annotationSet.getAnnotations(), ParamUtils.CompleteUpdateAction.SET, new QueryOptions(Constants.INCREMENT_VERSION, true), sessionIdUser); ind = catalogManager.getIndividualManager().get(studyFqn, ind.getId(), null, sessionIdUser).first(); check.accept(sample.getAnnotationSets().get(0)); check.accept(ind.getAnnotationSets().get(0)); catalogManager.getIndividualManager().updateAnnotations(studyFqn, ind.getId(), annotationSet.getId(), annotationSet.getAnnotations(), ParamUtils.CompleteUpdateAction.SET, new QueryOptions(Constants.INCREMENT_VERSION, true), sessionIdUser); check.accept(ind.getAnnotationSets().get(0)); catalogManager.getIndividualManager().updateAnnotations(studyFqn, ind.getId(), annotationSet.getId(), annotationSet.getAnnotations(), ParamUtils.CompleteUpdateAction.SET, new QueryOptions(Constants.INCREMENT_VERSION, true), sessionIdUser); ind = catalogManager.getIndividualManager().get(studyFqn, ind.getId(), null, sessionIdUser).first(); check.accept(sample.getAnnotationSets().get(0)); check.accept(ind.getAnnotationSets().get(0)); catalogManager.getIndividualManager().updateAnnotations(studyFqn, ind.getId(), annotationSet.getId(), annotationSet.getAnnotations(), ParamUtils.CompleteUpdateAction.SET, new QueryOptions(Constants.INCREMENT_VERSION, true),
public Individual(String id, String name, Sex sex, String ethnicity, Population population, int release, List<AnnotationSet> annotationSets, Map<String, Object> attributes) { this(id, name, new Individual(), new Individual(), new Multiples(), new Location(), sex, null, ethnicity, population, "", release, 1, TimeUtils.getTime(), new Status(), LifeStatus.UNKNOWN, AffectationStatus.UNKNOWN, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), false, annotationSets, attributes); }
@Test public void testCreateSampleWithIndividual() throws CatalogException { String individualId = catalogManager.getIndividualManager().create(studyFqn, new Individual().setId("Individual1"), new QueryOptions(), sessionIdUser).first().getId(); String sampleId1 = catalogManager.getSampleManager().create(studyFqn, new Sample() .setId("SAMPLE_1") .setIndividual(new Individual().setId(individualId)), new QueryOptions(), sessionIdUser).first().getId(); QueryResult<Individual> individualQueryResult = catalogManager.getIndividualManager().get(studyFqn, individualId, QueryOptions.empty(), sessionIdUser); assertEquals(sampleId1, individualQueryResult.first().getSamples().get(0).getId()); // Create sample linking to individual based on the individual name String sampleId2 = catalogManager.getSampleManager().create(studyFqn, new Sample() .setId("SAMPLE_2") .setIndividual(new Individual().setId("Individual1")), new QueryOptions(), sessionIdUser).first().getId(); individualQueryResult = catalogManager.getIndividualManager().get(studyFqn, individualId, QueryOptions.empty(), sessionIdUser); assertEquals(2, individualQueryResult.first().getSamples().size()); assertTrue(individualQueryResult.first().getSamples().stream().map(Sample::getId).collect(Collectors.toSet()).containsAll( Arrays.asList(sampleId1, sampleId2) )); }
@Test public void testUpdateIndividualInfo() throws CatalogException { IndividualManager individualManager = catalogManager.getIndividualManager(); QueryResult<Individual> individualQueryResult = individualManager.create(studyFqn, new Individual().setId("Test") .setDateOfBirth("19870214"), QueryOptions.empty(), sessionIdUser); assertEquals(1, individualQueryResult.getNumResults()); assertEquals("Test", individualQueryResult.first().getId()); assertEquals("19870214", individualQueryResult.first().getDateOfBirth()); QueryResult<Individual> update = individualManager.update(studyFqn, individualQueryResult.first().getId(), new ObjectMap(IndividualDBAdaptor.QueryParams.DATE_OF_BIRTH.key() , null), QueryOptions.empty(), sessionIdUser); assertEquals("", update.first().getDateOfBirth()); update = individualManager.update(studyFqn, individualQueryResult.first().getId(), new ObjectMap(IndividualDBAdaptor.QueryParams.DATE_OF_BIRTH.key(), "19870214"), QueryOptions.empty(), sessionIdUser); assertEquals("19870214", update.first().getDateOfBirth()); update = individualManager.update(studyFqn, String.valueOf(individualQueryResult.first().getId()), new ObjectMap(IndividualDBAdaptor.QueryParams.ATTRIBUTES.key(), Collections.singletonMap("key", "value")), QueryOptions.empty(), sessionIdUser); assertEquals("value", update.first().getAttributes().get("key")); update = individualManager.update(studyFqn, String.valueOf(individualQueryResult.first().getId()), new ObjectMap(IndividualDBAdaptor.QueryParams.ATTRIBUTES.key(), Collections.singletonMap("key2", "value2")), QueryOptions.empty(), sessionIdUser); assertEquals("value", update.first().getAttributes().get("key")); // Keep "key" assertEquals("value2", update.first().getAttributes().get("key2")); // add new "key2" // Wrong date of birth format thrown.expect(CatalogException.class); thrown.expectMessage("Invalid date of birth format"); individualManager.update(studyFqn, individualQueryResult.first().getId(), new ObjectMap(IndividualDBAdaptor.QueryParams.DATE_OF_BIRTH.key(), "198421"), QueryOptions.empty(), sessionIdUser); }