RED-9958:Several problems after technical_name refactoring
changed it so name and technical name are unique, rest is optional
This commit is contained in:
parent
dd0096a04c
commit
e5271c928e
@ -5,6 +5,7 @@ import static com.knecon.fforesight.databasetenantcommons.providers.utils.MagicC
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -58,7 +59,6 @@ public class LegalBasisMappingPersistenceService {
|
||||
|
||||
return legalBasisMappingRepository.findById(dossierTemplateId)
|
||||
.orElseGet(() -> {
|
||||
// create on get if not present
|
||||
var lbm = new LegalBasisMappingEntity();
|
||||
lbm.setDossierTemplateId(dossierTemplateId);
|
||||
lbm.setLegalBasis(new ArrayList<>());
|
||||
@ -72,27 +72,42 @@ public class LegalBasisMappingPersistenceService {
|
||||
@Transactional
|
||||
public void addOrUpdateLegalBasis(String dossierTemplateId, LegalBasis legalBasis) {
|
||||
|
||||
validateLegalBasis(legalBasis);
|
||||
var mapping = getLegalBasisMappingOrCreate(dossierTemplateId);
|
||||
|
||||
mapping.getLegalBasis()
|
||||
Optional<LegalBasisEntity> existingBasisByTechnicalName = mapping.getLegalBasis()
|
||||
.stream()
|
||||
.filter(l -> l.getTechnicalName().equals(legalBasis.getTechnicalName()))
|
||||
.findAny().ifPresentOrElse(existingBasis -> {
|
||||
existingBasis.setReason(legalBasis.getReason());
|
||||
existingBasis.setDescription(legalBasis.getDescription());
|
||||
existingBasis.setName(legalBasis.getName());
|
||||
},
|
||||
() -> mapping.getLegalBasis()
|
||||
.add(LegalBasisEntity.builder()
|
||||
.name(legalBasis.getName())
|
||||
.description(legalBasis.getDescription())
|
||||
.reason(legalBasis.getReason())
|
||||
.technicalName(legalBasis.getTechnicalName())
|
||||
.build()));
|
||||
.findAny();
|
||||
|
||||
Optional<LegalBasisEntity> existingBasisByName = mapping.getLegalBasis()
|
||||
.stream()
|
||||
.filter(l -> l.getName().equals(legalBasis.getName()))
|
||||
.findAny();
|
||||
|
||||
if (existingBasisByTechnicalName.isPresent() && existingBasisByName.isPresent()) {
|
||||
LegalBasisEntity existingBasis = existingBasisByTechnicalName.get();
|
||||
existingBasis.setDescription(legalBasis.getDescription());
|
||||
existingBasis.setReason(legalBasis.getReason());
|
||||
} else if (existingBasisByTechnicalName.isPresent()) {
|
||||
LegalBasisEntity existingBasis = existingBasisByTechnicalName.get();
|
||||
existingBasis.setName(legalBasis.getName());
|
||||
existingBasis.setDescription(legalBasis.getDescription());
|
||||
existingBasis.setReason(legalBasis.getReason());
|
||||
} else if (existingBasisByName.isPresent()) {
|
||||
LegalBasisEntity existingBasis = existingBasisByName.get();
|
||||
existingBasis.setTechnicalName(legalBasis.getTechnicalName());
|
||||
existingBasis.setDescription(legalBasis.getDescription());
|
||||
existingBasis.setReason(legalBasis.getReason());
|
||||
} else {
|
||||
mapping.getLegalBasis()
|
||||
.add(LegalBasisEntity.builder()
|
||||
.name(legalBasis.getName())
|
||||
.description(legalBasis.getDescription())
|
||||
.reason(legalBasis.getReason())
|
||||
.technicalName(legalBasis.getTechnicalName())
|
||||
.build());
|
||||
}
|
||||
mapping.setVersion(mapping.getVersion() + 1);
|
||||
legalBasisMappingRepository.save(mapping);
|
||||
|
||||
}
|
||||
|
||||
@ -103,6 +118,10 @@ public class LegalBasisMappingPersistenceService {
|
||||
throw new BadRequestException("The technical name cannot be empty!");
|
||||
}
|
||||
|
||||
if (legalBasis.getName() == null || legalBasis.getName().isEmpty()) {
|
||||
throw new BadRequestException("The name cannot be empty!");
|
||||
}
|
||||
|
||||
if (legalBasis.getName().length() > MAX_NAME_LENGTH) {
|
||||
throw new BadRequestException(String.format("The name is too long (%s), max length %s", legalBasis.getName().length(), MAX_NAME_LENGTH));
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user