Pull request #221: fixed corner cases

Merge in RED/persistence-service from RED-3240-2 to master

* commit 'b47bb61ac697c0e70cbfadda8cdfe573fa70c309':
  fixed corner cases
This commit is contained in:
Timo Bejan 2022-02-09 10:44:09 +01:00
commit 552d2a78f7

View File

@ -8,6 +8,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -27,6 +28,10 @@ public class DossierStatusPersistenceService {
@Transactional @Transactional
public DossierStatusEntity createOrUpdateDossierStatus(CreateOrUpdateDossierStatusRequest createOrUpdateDossierStatusRequest) { public DossierStatusEntity createOrUpdateDossierStatus(CreateOrUpdateDossierStatusRequest createOrUpdateDossierStatusRequest) {
if (StringUtils.isBlank(createOrUpdateDossierStatusRequest.getName())) {
throw new BadRequestException("Dossier Status Name cannot be empty");
}
if (createOrUpdateDossierStatusRequest.getDossierStatusId() != null) { //update if (createOrUpdateDossierStatusRequest.getDossierStatusId() != null) { //update
Optional<DossierStatusEntity> dossierStatus = dossierStatusRepository.findById(createOrUpdateDossierStatusRequest.getDossierStatusId()); Optional<DossierStatusEntity> dossierStatus = dossierStatusRepository.findById(createOrUpdateDossierStatusRequest.getDossierStatusId());
if (dossierStatus.isPresent()) { if (dossierStatus.isPresent()) {
@ -38,7 +43,7 @@ public class DossierStatusPersistenceService {
throw new NotFoundException(String.format(DOSSIER_STATUS_NOT_FOUND_MESSAGE, createOrUpdateDossierStatusRequest.getDossierStatusId())); throw new NotFoundException(String.format(DOSSIER_STATUS_NOT_FOUND_MESSAGE, createOrUpdateDossierStatusRequest.getDossierStatusId()));
} }
} else { } else {
validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId(),null); validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId(), null);
DossierStatusEntity dossierStatus = new DossierStatusEntity(); DossierStatusEntity dossierStatus = new DossierStatusEntity();
dossierStatus.setId(UUID.randomUUID().toString()); dossierStatus.setId(UUID.randomUUID().toString());
BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus); BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus);
@ -69,7 +74,7 @@ public class DossierStatusPersistenceService {
throw new BadRequestException("Cannot replace with self"); throw new BadRequestException("Cannot replace with self");
} }
dossierStatusRepository.findById(dossierStatusId).ifPresent(toDeleteDossierStatus -> { dossierStatusRepository.findById(dossierStatusId).ifPresentOrElse(toDeleteDossierStatus -> {
DossierStatusEntity replaceDossierStatusEntity = null; DossierStatusEntity replaceDossierStatusEntity = null;
if (replaceDossierStatusId != null) { if (replaceDossierStatusId != null) {
@ -83,8 +88,12 @@ public class DossierStatusPersistenceService {
for (var dossier : toDeleteDossierStatus.getDossiers()) { for (var dossier : toDeleteDossierStatus.getDossiers()) {
dossier.setDossierStatus(replaceDossierStatusEntity); dossier.setDossierStatus(replaceDossierStatusEntity);
} }
});
dossierStatusRepository.deleteById(dossierStatusId); dossierStatusRepository.deleteById(dossierStatusId);
}, () -> {
throw new NotFoundException("Dossier Status not found");
});
} }
private void validateDossierTemplateNameIsUnique(String dossierStatusName, String dossierTemplateId, String dossierStatusId) { private void validateDossierTemplateNameIsUnique(String dossierStatusName, String dossierTemplateId, String dossierStatusId) {