break cyclic service injection

This commit is contained in:
Kilian Schuettler 2024-07-26 14:18:39 +02:00
parent d0b15e045b
commit e7ae4e3ed6
2 changed files with 11 additions and 7 deletions

View File

@ -65,7 +65,7 @@ public class DossierPersistenceService {
if (createOrUpdateDossierRequest.getDossierStatusId() != null) { if (createOrUpdateDossierRequest.getDossierStatusId() != null) {
var dossierStatus = dossierStatusPersistenceService.getDossierStatus(createOrUpdateDossierRequest.getDossierStatusId()); var dossierStatus = dossierStatusPersistenceService.getDossierStatus(createOrUpdateDossierRequest.getDossierStatusId());
if (dossierStatus.getDossierTemplateId().equals(createOrUpdateDossierRequest.getDossierTemplateId())) { if (dossierStatus.getDossierTemplate().getId().equals(createOrUpdateDossierRequest.getDossierTemplateId())) {
dossier.setDossierStatus(dossierStatus); dossier.setDossierStatus(dossierStatus);
} else { } else {
throw new BadRequestException("Invalid Dossier Status"); throw new BadRequestException("Invalid Dossier Status");

View File

@ -15,6 +15,7 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.BadRe
import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException; import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException;
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierStatusRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierStatusRepository;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository;
import com.iqser.red.service.persistence.management.v1.processor.utils.DossierStatusFilteringMapper; import com.iqser.red.service.persistence.management.v1.processor.utils.DossierStatusFilteringMapper;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.DossierStatusInfo; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.DossierStatusInfo;
@ -30,7 +31,7 @@ public class DossierStatusPersistenceService {
public static final String DOSSIER_STATUS_NOT_FOUND_MESSAGE = "Dossier Status with Id %s not found."; public static final String DOSSIER_STATUS_NOT_FOUND_MESSAGE = "Dossier Status with Id %s not found.";
private final DossierStatusRepository dossierStatusRepository; private final DossierStatusRepository dossierStatusRepository;
private final DossierTemplatePersistenceService dossierTemplatePersistenceService; private final DossierTemplateRepository dossierTemplateRepository;
private final DossierStatusFilteringMapper dossierStatusFilteringMapper; private final DossierStatusFilteringMapper dossierStatusFilteringMapper;
private final static int MAX_STATUS_NAME_LENGTH = 255; private final static int MAX_STATUS_NAME_LENGTH = 255;
@ -63,16 +64,19 @@ public class DossierStatusPersistenceService {
validateDossierStatusForTemplate(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId(), null); validateDossierStatusForTemplate(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);
var dossierTemplate = dossierTemplatePersistenceService.getDossierTemplate(createOrUpdateDossierStatusRequest.getDossierTemplateId());
// in case of duplicate ranks, increase the ranks // in case of duplicate ranks, increase the ranks
if (dossierStatusRepository.getDuplicateRanks(createOrUpdateDossierStatusRequest.getDossierTemplateId(), createOrUpdateDossierStatusRequest.getRank()) > 0) { if (dossierStatusRepository.getDuplicateRanks(createOrUpdateDossierStatusRequest.getDossierTemplateId(), createOrUpdateDossierStatusRequest.getRank()) > 0) {
dossierStatusRepository.adjustRanksForDossierTemplate(createOrUpdateDossierStatusRequest.getDossierTemplateId(), createOrUpdateDossierStatusRequest.getRank()); dossierStatusRepository.adjustRanksForDossierTemplate(createOrUpdateDossierStatusRequest.getDossierTemplateId(), createOrUpdateDossierStatusRequest.getRank());
} }
var loadedDossierStatus = dossierStatusRepository.save(dossierStatus); BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus);
loadedDossierStatus.setDossierTemplate(dossierTemplate); if (createOrUpdateDossierStatusRequest.getDossierTemplateId() != null) {
var dossierTemplate = dossierTemplateRepository.findById(createOrUpdateDossierStatusRequest.getDossierTemplateId())
.orElseThrow(() -> new NotFoundException("DossierTemplate with id" + createOrUpdateDossierStatusRequest.getDossierTemplateId()));
return loadedDossierStatus; dossierStatus.setDossierTemplate(dossierTemplate);
}
return dossierStatusRepository.save(dossierStatus);
} }
} }