RED-6467: Added more debugging output

This commit is contained in:
Viktor Seifert 2023-04-19 18:10:51 +02:00
parent f4c53c722e
commit fc642e82d2
3 changed files with 53 additions and 9 deletions

View File

@ -58,6 +58,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository;
import com.iqser.red.service.persistence.management.v1.processor.settings.FileManagementServiceSettings;
import com.iqser.red.service.persistence.management.v1.processor.utils.FileUtils;
import com.iqser.red.service.persistence.management.v1.processor.utils.TransactionDebugPrinter;
import com.iqser.red.service.persistence.management.v1.processor.utils.multitenancy.TenantContext;
import com.iqser.red.service.persistence.service.v1.api.shared.model.WatermarkModel;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierAttributeConfig;
@ -111,7 +112,12 @@ public class DossierTemplateImportService {
@Transactional
public String importDossierTemplate(ImportDossierTemplateRequest request) {
TransactionDebugPrinter.printTransactionRollbackStatus(log, "Starting dossier template import");
ImportTemplateResult archiveResult = this.handleArchive(request);
TransactionDebugPrinter.printTransactionRollbackStatus(log, "Extracted dossier template archive");
return this.importDossierTemplate(archiveResult);
}
@ -288,12 +294,15 @@ public class DossierTemplateImportService {
long start = System.currentTimeMillis();
String dossierTemplateId;
var dossierTemplateMeta = request.getDossierTemplate();
DossierTemplateEntity existingDossierTemplate = null;
if (request.getDossierTemplateId() != null && request.isUpdateExistingTemplate()) {
var dossierTemplateOptional = dossierTemplateRepository.findByIdAndNotDeleted(request.getDossierTemplateId());
existingDossierTemplate = dossierTemplateOptional.orElse(null);
}
if (existingDossierTemplate != null) {
TransactionDebugPrinter.printTransactionRollbackStatus(log, "Existing dossier found, importing into it");
dossierTemplateId = existingDossierTemplate.getId();
// override the existing dossier template
updateDossierTemplateMeta(existingDossierTemplate, dossierTemplateMeta, request.getUserId());
@ -303,9 +312,13 @@ public class DossierTemplateImportService {
existingDossierTemplate.setDossierTemplateStatus(DossierTemplateStatus.valueOf(dossierTemplatePersistenceService.computeDossierTemplateStatus(existingDossierTemplate)
.name()));
TransactionDebugPrinter.printTransactionRollbackStatus(log, "Importing colors");
// set colors
this.setColors(dossierTemplateId, request.getColors());
TransactionDebugPrinter.printTransactionRollbackStatus(log, "Importing watermarks");
// set watermarks
if (CollectionUtils.isNotEmpty(request.getWatermarks())) {
Set<String> toSetWatermarks = request.getWatermarks().stream().map(WatermarkModel::getName).filter(Objects::nonNull).collect(Collectors.toSet());
@ -327,6 +340,8 @@ public class DossierTemplateImportService {
configsToRemove.forEach(watermark -> watermarkService.deleteWatermark(watermark.getId()));
}
TransactionDebugPrinter.printTransactionRollbackStatus(log, "Importing dossier status");
// dossier status
if (CollectionUtils.isNotEmpty(request.getDossierStatusInfos())) {
this.updateDossierStates(request, dossierTemplateId);
@ -335,6 +350,8 @@ public class DossierTemplateImportService {
currentStates.forEach(state -> dossierStatusPersistenceService.deleteDossierStatus(state.getId(), null));
}
TransactionDebugPrinter.printTransactionRollbackStatus(log, "Importing dossier attributes");
// update dossier attributes
if (CollectionUtils.isNotEmpty(request.getDossierAttributesConfigs())) {
this.updateDossierAttributes(request, dossierTemplateId);
@ -343,6 +360,8 @@ public class DossierTemplateImportService {
currentConfigs.forEach(da -> dossierAttributeConfigPersistenceService.deleteDossierAttribute(da.getId()));
}
TransactionDebugPrinter.printTransactionRollbackStatus(log, "Importing file attributes");
//update file attributes
if (CollectionUtils.isNotEmpty(request.getFileAttributesConfigs())) {
this.updateFileAttributes(request, dossierTemplateId);
@ -351,6 +370,8 @@ public class DossierTemplateImportService {
currentConfigs.forEach(fa -> fileAttributeConfigPersistenceService.deleteFileAttribute(fa.getId()));
}
TransactionDebugPrinter.printTransactionRollbackStatus(log, "Importing types");
// update the types
if (CollectionUtils.isNotEmpty(request.getTypes())) {
this.updateTypes(request, dossierTemplateId);
@ -363,6 +384,8 @@ public class DossierTemplateImportService {
this.deleteTypes(currentTypes, new HashSet<>());
}
TransactionDebugPrinter.printTransactionRollbackStatus(log, "Importing report templates");
//set report templates
var existingReports = reportTemplatePersistenceService.findByDossierTemplateId(dossierTemplateId);
@ -374,15 +397,20 @@ public class DossierTemplateImportService {
reportsUpdated.add(report.getTemplateId());
});
}
TransactionDebugPrinter.printTransactionRollbackStatus(log, "Delete reports");
// delete the reports that were not in the import
existingReports.forEach(r -> {
String storageId = r.getStorageId();
if (!reportsUpdated.contains(r.getTemplateId())) {
storageService.deleteObject(TenantContext.getTenantId(),storageId);
storageService.deleteObject(TenantContext.getTenantId(), storageId);
reportTemplatePersistenceService.delete(r.getTemplateId());
}
});
TransactionDebugPrinter.printTransactionRollbackStatus(log, "Importing legal basis");
// set legal basis
if (CollectionUtils.isNotEmpty(request.getLegalBases())) {
legalBasisMappingPersistenceService.setLegalBasisMapping(dossierTemplateId, request.getLegalBases());
@ -395,6 +423,7 @@ public class DossierTemplateImportService {
}
} else {
TransactionDebugPrinter.printTransactionRollbackStatus(log, "No existing dossier found, importing into new dossier");
// creates new dossier template
if (StringUtils.isEmpty(dossierTemplateMeta.getName())) {
throw new ConflictException("DossierTemplate name must be set");

View File

@ -8,9 +8,6 @@ import javax.persistence.EntityManager;
import javax.transaction.Transactional;
import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.BaseDictionaryEntry;
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DictionaryEntryEntity;
@ -20,6 +17,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.EntryRepository;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.FalsePositiveEntryRepository;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.FalseRecommendationEntryRepository;
import com.iqser.red.service.persistence.management.v1.processor.utils.TransactionDebugPrinter;
import com.iqser.red.service.persistence.management.v1.processor.utils.jdbc.JDBCWriteUtils;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType;
@ -109,11 +107,7 @@ public class EntryPersistenceService {
var type = typeRepository.getById(typeId);
if (TransactionSynchronizationManager.isActualTransactionActive()) {
TransactionStatus status = TransactionAspectSupport.currentTransactionStatus();
log.info("Importing entries for typeEntity: {} type: {} -- transaction has rollback {}", type, dictionaryEntryType, status.isRollbackOnly());
}
TransactionDebugPrinter.printTransactionRollbackStatus(log, String.format("Importing entries for typeEntity: %s type: %s", typeId, dictionaryEntryType));
switch (dictionaryEntryType) {
case ENTRY -> {

View File

@ -0,0 +1,21 @@
package com.iqser.red.service.persistence.management.v1.processor.utils;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import lombok.experimental.UtilityClass;
@UtilityClass
public class TransactionDebugPrinter {
public void printTransactionRollbackStatus(org.slf4j.Logger log, String message) {
if (TransactionSynchronizationManager.isActualTransactionActive()) {
TransactionStatus status = TransactionAspectSupport.currentTransactionStatus();
log.info(message + " -- transaction isRollbackOnly {}", status.isRollbackOnly());
}
}
}