RED-6467: Changed unique name check to not use Exceptions to prevent transaction rollbacks
This commit is contained in:
parent
30cf937c6b
commit
ffecae23b3
@ -709,22 +709,16 @@ public class DossierTemplateImportService {
|
||||
|
||||
private void validateDossierTemplateName(DossierTemplate dossierTemplateMeta) {
|
||||
|
||||
boolean cond = true;
|
||||
int index = 0;
|
||||
int nameSuffix = 0;
|
||||
String dossierTemplateName = dossierTemplateMeta.getName();
|
||||
do {
|
||||
try {
|
||||
dossierTemplatePersistenceService.validateDossierTemplateNameIsUnique(dossierTemplateMeta.getName());
|
||||
cond = false;
|
||||
} catch (ConflictException e) {
|
||||
if (index == 0) {
|
||||
dossierTemplateMeta.setName("Copy of " + dossierTemplateName);
|
||||
} else {
|
||||
dossierTemplateMeta.setName("Copy of " + dossierTemplateName + " - " + index);
|
||||
}
|
||||
index++;
|
||||
while (!dossierTemplatePersistenceService.isDossierTemplateNameUnique(dossierTemplateMeta.getName())) {
|
||||
if (nameSuffix == 0) {
|
||||
dossierTemplateMeta.setName("Copy of " + dossierTemplateName);
|
||||
} else {
|
||||
dossierTemplateMeta.setName("Copy of " + dossierTemplateName + " - " + nameSuffix);
|
||||
}
|
||||
} while (cond);
|
||||
nameSuffix++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -73,14 +73,20 @@ public class DossierTemplatePersistenceService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void validateDossierTemplateNameIsUnique(String templateName) {
|
||||
|
||||
getAllDossierTemplates().forEach(existing -> {
|
||||
if (existing.getName().equals(templateName)) {
|
||||
throw new ConflictException("DossierTemplate name must be unique");
|
||||
}
|
||||
});
|
||||
if (!isDossierTemplateNameUnique(templateName)) {
|
||||
throw new ConflictException("DossierTemplate name must be unique");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public boolean isDossierTemplateNameUnique(String templateName) {
|
||||
|
||||
return dossierTemplateRepository.existsByName(templateName);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -17,4 +17,7 @@ public interface DossierTemplateRepository extends JpaRepository<DossierTemplate
|
||||
@Query("select d from DossierTemplateEntity d where d.id = :dossierTemplateId and d.softDeleteTime is null")
|
||||
Optional<DossierTemplateEntity> findByIdAndNotDeleted(String dossierTemplateId);
|
||||
|
||||
|
||||
boolean existsByName(String name);
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user