private String generateIdentityAlias(SampleIdentity identity) throws IOException { if (identity.getProject().getShortName() == null) { throw new NullPointerException("Project shortname required to generate Identity alias"); } String internalName = identity.getProject().getShortName() + "_"; String number = sampleNumberPerProjectService.nextNumber(identity.getProject(), internalName); internalName += number; return internalName; }
/** * Returns true if another sample with same external name and project exists in database * * @param sample * @return boolean * @throws IOException */ private boolean isExternalNameDuplicatedInProject(Sample sample) throws IOException { SampleIdentity identity = (SampleIdentity) sample; return getIdentitiesByExternalNameOrAliasAndProject(identity.getExternalName(), identity.getProject().getId(), true).size() > 0; }
/** * 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); } }