private SampleIdentity buildIdentity() { if (externalName == null) { throw new NullPointerException("Missing externalName"); } SampleIdentity identity = new SampleIdentityImpl(); identity.setExternalName(externalName); identity.setDonorSex(donorSex); return identity; }
/** * Adds any external names in the sample's attached identity to the identity stored in the database * * @param sample * @throws IOException */ private void addExternalNames(DetailedSample sample, SampleIdentity identityCopy) throws IOException { if (identityCopy == null || identityCopy.getExternalName() == null) return; SampleIdentity identity = (SampleIdentity) get(getIdentity(sample).getId()); Set<String> identityExternalNames = SampleIdentityImpl.getSetFromString(identity.getExternalName()); Set<String> tempExternalNames = SampleIdentityImpl.getSetFromString(identityCopy.getExternalName()); Set<String> lowerCaseIdentityExternalNames = identityExternalNames.stream().map(String::toLowerCase).collect(Collectors.toSet()); for (String name : tempExternalNames) { if (!lowerCaseIdentityExternalNames.contains(name.toLowerCase()) && !(isUniqueExternalNameWithinProjectRequired() && (identity.getProject() == null || getIdentitiesByExternalNameOrAliasAndProject(name, identity.getProject().getId(), true).size() > 0))) { identityExternalNames.add(name); } } if (identityExternalNames.size() > lowerCaseIdentityExternalNames.size()) { identity.setExternalName(String.join(",", identityExternalNames)); identity.setChangeDetails(authorizationManager.getCurrentUser()); sampleStore.update(identity); } }
private void applyIdentityChanges(SampleIdentity target, SampleIdentity source) throws IOException { if (!source.getExternalName().equals(target.getExternalName())) { confirmExternalNameUniqueForProjectIfRequired(source.getExternalName(), target); Set<String> sourceExternalNames = SampleIdentityImpl.getSetFromString(source.getExternalName()); Set<String> targetExternalNames = SampleIdentityImpl.getSetFromString(target.getExternalName()); if (!sourceExternalNames.containsAll(targetExternalNames) || !targetExternalNames.containsAll(sourceExternalNames)) { target.setExternalName(source.getExternalName()); } } target.setDonorSex(source.getDonorSex()); target.setConsentLevel(source.getConsentLevel()); }
private static SampleIdentity toIdentitySample(@Nonnull SampleIdentityDto from) { SampleIdentity to = new SampleIdentityImpl(); to.setExternalName(from.getExternalName()); if (from.getDonorSex() != null) { to.setDonorSex(from.getDonorSex()); } if (from.getConsentLevel() != null) { to.setConsentLevel(ConsentLevel.getByLabel(from.getConsentLevel())); } return to; }
throw new IllegalStateException("Missing Identity at root of hierarchy"); identity.setExternalName(from.getExternalNames());