deletion of dossier template on failed import

This commit is contained in:
Kilian Schuettler 2024-08-09 18:40:29 +02:00
parent 8d70c557b1
commit 6342b1b4f6
15 changed files with 80 additions and 24 deletions

View File

@ -109,7 +109,9 @@ public class DossierTemplateImportService {
ImportTemplateResult archiveResult = readDossierTemplateImportArchive(request);
return importDossierTemplate(archiveResult).getDossierTemplateId();
TemplateImportInfo templateImportInfo = importDossierTemplate(archiveResult);
return templateImportInfo.getDossierTemplateId();
}
@ -165,7 +167,6 @@ public class DossierTemplateImportService {
}
throw e;
}
return templateImportInfo;
}

View File

@ -17,6 +17,7 @@ import java.util.List;
import java.util.UUID;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.iqser.red.service.persistence.management.v1.processor.entity.ComponentMappingEntity;
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
@ -229,7 +230,7 @@ public class ComponentMappingService {
return dossierTemplateId + "/" + id + "_" + name + "_" + fileName;
}
@Transactional
public void deleteByDossierTemplateId(String dossierTemplateId) {
componentMappingPersistenceService.getByDossierTemplateId(dossierTemplateId)

View File

@ -405,6 +405,7 @@ public class DictionaryManagementService {
}
@Transactional
public void hardDeleteByDossierTemplateId(String dossierTemplateId) {
dictionaryPersistenceService.hardDeleteTypesByDossierTemplateId(dossierTemplateId);

View File

@ -5,6 +5,10 @@ import java.util.List;
import org.springframework.stereotype.Service;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributePersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierAttributeConfigRepository;
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
@ -15,6 +19,9 @@ public class DossierDeletionService {
private final FileDeletionService fileDeletionService;
private final DossierService dossierService;
private final DictionaryManagementService dictionaryManagementService;
private final DossierAttributePersistenceService dossierAttributePersistenceService;
private final DossierAttributeConfigRepository dossierAttributeConfigRepository;
private final DossierAttributeConfigPersistenceService dossierAttributeConfigPersistenceService;
@Transactional
@ -45,12 +52,16 @@ public class DossierDeletionService {
}
@Transactional
public void deleteAllDossiersInTemplate(String dossierId) {
public void deleteAllDossiersInTemplate(String dossierTemplateId) {
for (String dossierId : dossierService.getAllDossierIdsForDossierTemplateId(dossierTemplateId)) {
fileDeletionService.hardDeleteFilesAndDataByDossierId(dossierId);
dictionaryManagementService.hardDeleteByDossierId(dossierId);
dossierAttributePersistenceService.deleteDossierAttribute(dossierId);
dossierService.hardDeleteDossier(dossierId);
}
fileDeletionService.hardDeleteFilesAndDataByDossierId(dossierId);
dictionaryManagementService.hardDeleteByDossierId(dossierId);
dossierService.hardDeleteDossier(dossierId);
}

View File

@ -119,6 +119,7 @@ public class DossierService {
}
@Transactional
public void hardDeleteDossier(String dossierId) {
dossierPersistenceService.hardDelete(dossierId);

View File

@ -8,8 +8,11 @@ import java.util.stream.Collectors;
import org.springframework.stereotype.Service;
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributePersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.CloneDossierTemplateRequest;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplate;
@ -28,6 +31,10 @@ public class DossierTemplateManagementService {
private final DictionaryManagementService dictionaryManagementService;
private final ComponentMappingService componentMappingService;
private final FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService;
private final DossierAttributePersistenceService dossierAttributePersistenceService;
private final DossierAttributeConfigPersistenceService dossierAttributeConfigPersistenceService;
private final ReportTemplatePersistenceService reportTemplatePersistenceService;
private final WatermarkService watermarkService;
public DossierTemplate createOrUpdateDossierTemplate(CreateOrUpdateDossierTemplateRequest dossierTemplate) {
@ -50,10 +57,13 @@ public class DossierTemplateManagementService {
public void deleteDossierTemplateCompletely(String dossierTemplateId) {
watermarkService.deleteByDossierTemplateId(dossierTemplateId);
reportTemplatePersistenceService.deleteAllByDossierTemplateId(dossierTemplateId);
fileAttributeConfigPersistenceService.deleteByDossierTemplateId(dossierTemplateId);
dictionaryManagementService.hardDeleteByDossierTemplateId(dossierTemplateId);
componentMappingService.deleteByDossierTemplateId(dossierTemplateId);
dossierDeletionService.deleteAllDossiersInTemplate(dossierTemplateId);
dossierAttributeConfigPersistenceService.deleteAllDossierAttributeConfigsInTemplate(dossierTemplateId);
dossierTemplatePersistenceService.deleteDossierTemplate(dossierTemplateId);
}

View File

@ -70,7 +70,8 @@ public class WatermarkService {
validateWatermarkNameIsUnique(watermark.getName(), loadedWatermark.get().getDossierTemplateId(), loadedWatermark.get().getId());
BeanUtils.copyProperties(watermark, loadedWatermark.get(), "dossierTemplateId", "createdBy", "dateAdded", "dateModified");
loadedWatermark.get().setDateModified(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
var dossierTemplate = dossierTemplateRepository.findById(watermark.getDossierTemplateId()).orElseThrow(() -> new NotFoundException("Dossier Template not found"));
var dossierTemplate = dossierTemplateRepository.findById(watermark.getDossierTemplateId())
.orElseThrow(() -> new NotFoundException("Dossier Template not found"));
loadedWatermark.get().setDossierTemplate(dossierTemplate);
return loadedWatermark.get();
} else { // if not found by id -> add it as a new watermark
@ -79,7 +80,8 @@ public class WatermarkService {
WatermarkEntity watermarkEntity = new WatermarkEntity();
BeanUtils.copyProperties(watermark, watermarkEntity, "id", "dateAdded", "dateModified");
watermarkEntity.setDateAdded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
var dossierTemplate = dossierTemplateRepository.findById(watermark.getDossierTemplateId()).orElseThrow(() -> new NotFoundException("Dossier Template not found"));
var dossierTemplate = dossierTemplateRepository.findById(watermark.getDossierTemplateId())
.orElseThrow(() -> new NotFoundException("Dossier Template not found"));
watermarkEntity.setDossierTemplate(dossierTemplate);
return watermarkRepository.save(watermarkEntity);
}
@ -89,7 +91,8 @@ public class WatermarkService {
WatermarkEntity watermarkEntity = new WatermarkEntity();
BeanUtils.copyProperties(watermark, watermarkEntity, "id", "dateAdded", "dateModified");
watermarkEntity.setDateAdded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
var dossierTemplate = dossierTemplateRepository.findById(watermark.getDossierTemplateId()).orElseThrow(() -> new NotFoundException("Dossier Template not found"));
var dossierTemplate = dossierTemplateRepository.findById(watermark.getDossierTemplateId())
.orElseThrow(() -> new NotFoundException("Dossier Template not found"));
watermarkEntity.setDossierTemplate(dossierTemplate);
return watermarkRepository.save(watermarkEntity);
}
@ -168,4 +171,11 @@ public class WatermarkService {
return count != 0;
}
@Transactional
public void deleteByDossierTemplateId(String dossierTemplateId) {
watermarkRepository.deleteByDossierTemplateId(dossierTemplateId);
}
}

View File

@ -341,20 +341,21 @@ public class DictionaryPersistenceService {
public void hardDeleteTypesByDossierTemplateId(String dossierTemplateId) {
for (TypeEntity typeEntity : typeRepository.findAllByDossierTemplateId(dossierTemplateId)) {
entryRepository.deleteAllByTypeId(typeEntity.getType());
falsePositiveEntryRepository.deleteAllByTypeId(typeEntity.getType());
falseRecommendationEntryRepository.deleteAllByTypeId(typeEntity.getType());
entryRepository.deleteAllByTypeId(typeEntity.getId());
falsePositiveEntryRepository.deleteAllByTypeId(typeEntity.getId());
falseRecommendationEntryRepository.deleteAllByTypeId(typeEntity.getId());
typeRepository.deleteById(typeEntity.getId());
}
}
@Transactional
public void hardDeleteTypesByDossierId(String dossierId) {
for (TypeEntity typeEntity : typeRepository.findByDossierId(dossierId)) {
entryRepository.deleteAllByTypeId(typeEntity.getType());
falsePositiveEntryRepository.deleteAllByTypeId(typeEntity.getType());
falseRecommendationEntryRepository.deleteAllByTypeId(typeEntity.getType());
entryRepository.deleteAllByTypeId(typeEntity.getId());
falsePositiveEntryRepository.deleteAllByTypeId(typeEntity.getId());
falseRecommendationEntryRepository.deleteAllByTypeId(typeEntity.getId());
typeRepository.deleteById(typeEntity.getId());
}
}

View File

@ -135,4 +135,11 @@ public class DossierAttributeConfigPersistenceService {
return result.isPresent() ? result.get().getId() : null;
}
@Transactional
public void deleteAllDossierAttributeConfigsInTemplate(String dossierTemplateId) {
dossierAttributeConfigRepository.deleteAllByDossierTemplateId(dossierTemplateId);
}
}

View File

@ -5,7 +5,6 @@ import java.time.temporal.ChronoUnit;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
@ -17,8 +16,6 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
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.service.ComponentMappingService;
import com.iqser.red.service.persistence.management.v1.processor.service.DictionaryManagementService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.TypeRepository;
import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType;
@ -29,7 +26,9 @@ import jakarta.transaction.Transactional;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service
@RequiredArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
@ -167,7 +166,6 @@ public class DossierTemplatePersistenceService {
}
@Transactional
public List<DossierTemplateEntity> getAllDossierTemplates() {
var allDossierTemplates = dossierTemplateRepository.findAllWhereDeletedIsFalse();
@ -177,7 +175,6 @@ public class DossierTemplatePersistenceService {
}
@Transactional
public DossierTemplateEntity getDossierTemplate(String dossierTemplateId) {
var dossierTemplate = dossierTemplateRepository.findByIdAndNotDeleted(dossierTemplateId)
@ -242,6 +239,4 @@ public class DossierTemplatePersistenceService {
dossierTemplateRepository.saveAndFlush(dossierTemplate);
}
}

View File

@ -180,6 +180,7 @@ public class FileAttributeConfigPersistenceService {
for (FileAttributeConfigEntity fileAttribute : getFileAttributes(dossierTemplateId)) {
deleteFileAttribute(fileAttribute.getId());
}
fileAttributesGeneralConfigurationRepository.deleteByDossierTemplateId(dossierTemplateId);
}

View File

@ -77,4 +77,14 @@ public class ReportTemplatePersistenceService {
}
}
@Transactional
public void deleteAllByDossierTemplateId(String dossierTemplateId) {
for (ReportTemplateEntity reportTemplateEntity : findByDossierTemplateId(dossierTemplateId)) {
delete(reportTemplateEntity.getTemplateId());
}
}
}

View File

@ -19,4 +19,6 @@ public interface DossierAttributeConfigRepository extends JpaRepository<DossierA
@Param("dossierAttributeId") String dossierAttributeId,
@Param("label") String label);
void deleteAllByDossierTemplateId(String dossierTemplateId);
}

View File

@ -6,4 +6,6 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.configur
public interface FileAttributesGeneralConfigurationRepository extends JpaRepository<FileAttributesGeneralConfigurationEntity, String> {
void deleteByDossierTemplateId(String dossierTemplateId);
}

View File

@ -10,4 +10,7 @@ public interface WatermarkRepository extends JpaRepository<WatermarkEntity, Long
List<WatermarkEntity> findByDossierTemplateId(String dossierTemplateId);
void deleteByDossierTemplateId(String dossierTemplateId);
}