Merge branch 'RED-7517' into 'master'

Resolve RED-7517

Closes RED-7517

See merge request redactmanager/persistence-service!203
This commit is contained in:
Dominique Eifländer 2023-11-02 08:56:13 +01:00
commit 284d0bff50
4 changed files with 54 additions and 34 deletions

View File

@ -18,6 +18,7 @@ import java.util.Set;
import java.util.TreeSet;
import java.util.stream.Collectors;
import com.iqser.red.service.persistence.management.v1.processor.service.DossierCreatorService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
@ -73,6 +74,7 @@ public class DossierController implements DossierResource {
private final NotificationPersistenceService notificationPersistenceService;
private final AccessControlService accessControlService;
private final DossierACLService dossierACLService;
private final DossierCreatorService dossierCreatorService;
@Override
@ -308,7 +310,7 @@ public class DossierController implements DossierResource {
private Dossier createNewDossier(DossierRequest dossier, String ownerId, Set<String> members, Set<String> approvers) {
Dossier newDossier = dossierManagementService.addDossier(CreateOrUpdateDossierRequest.builder()
Dossier newDossier = dossierCreatorService.addDossier(CreateOrUpdateDossierRequest.builder()
.dossierName(dossier.getDossierName())
.description(dossier.getDescription())
.dossierTemplateId(dossier.getDossierTemplateId())
@ -318,9 +320,8 @@ public class DossierController implements DossierResource {
.watermarkId(dossier.getWatermarkId())
.previewWatermarkId(dossier.getPreviewWatermarkId())
.dossierStatusId(dossier.getDossierStatusId())
.build());
.build(), members, approvers, ownerId);
dossierACLService.updateDossierACL(members, approvers, ownerId, newDossier.getId());
dossierACLService.enhanceDossierWithACLData(newDossier);
return newDossier;

View File

@ -0,0 +1,34 @@
package com.iqser.red.service.persistence.management.v1.processor.service;
import com.iqser.red.service.persistence.management.v1.processor.acl.custom.dossier.DossierACLService;
import com.iqser.red.service.persistence.management.v1.processor.utils.DossierMapper;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier;
import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter;
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Set;
@Slf4j
@Service
@RequiredArgsConstructor
public class DossierCreatorService {
private final DossierService dossierService;
private final DossierACLService dossierACLService;
@Transactional
public Dossier addDossier(CreateOrUpdateDossierRequest dossierRequest, Set<String> members, Set<String> approvers, String ownerId) {
var dossier = dossierService.addDossier(dossierRequest);
dossierACLService.updateDossierACL(members, approvers, ownerId, dossier.getId());
return MagicConverter.convert(dossier, Dossier.class, new DossierMapper());
}
}

View File

@ -1,18 +1,7 @@
package com.iqser.red.service.persistence.management.v1.processor.service;
import static com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException.DOSSIER_NOT_FOUND_MESSAGE;
import java.time.OffsetDateTime;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import org.springframework.stereotype.Service;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity;
import com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException;
import com.iqser.red.service.persistence.management.v1.processor.settings.FileManagementServiceSettings;
import com.iqser.red.service.persistence.management.v1.processor.utils.DossierMapper;
import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierInformation;
import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive;
@ -22,10 +11,18 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileModel;
import com.iqser.red.service.search.v1.model.IndexMessageType;
import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter;
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.time.OffsetDateTime;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import static com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException.DOSSIER_NOT_FOUND_MESSAGE;
@Slf4j
@Service
@ -36,8 +33,6 @@ public class DossierManagementService {
private final FileStatusService fileStatusService;
private final FileService fileService;
private final IndexingService indexingService;
private final DictionaryManagementService dictionaryManagementService;
private final FileManagementServiceSettings fileManagementServiceSettings;
public Set<DossierChange> changesSince(JSONPrimitive<OffsetDateTime> since) {
@ -46,15 +41,6 @@ public class DossierManagementService {
}
@Transactional
public Dossier addDossier(CreateOrUpdateDossierRequest dossierRequest) {
var dossier = dossierService.addDossier(dossierRequest);
return MagicConverter.convert(dossier, Dossier.class, new DossierMapper());
}
@Transactional
public Dossier updateDossier(CreateOrUpdateDossierRequest dossierRequest, String dossierId) {

View File

@ -1,12 +1,5 @@
package com.iqser.red.service.persistence.management.v1.processor.service;
import java.time.OffsetDateTime;
import java.util.List;
import java.util.Set;
import org.springframework.stereotype.Service;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity;
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException;
@ -18,10 +11,15 @@ import com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUti
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplateStatus;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.DossierChange;
import jakarta.transaction.Transactional;
import jakarta.validation.ConstraintViolationException;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.time.OffsetDateTime;
import java.util.List;
import java.util.Set;
/**
* Provides the internal interface between dossier request and the actual persistence.
@ -40,6 +38,7 @@ public class DossierService {
private final DictionaryPersistenceService dictionaryPersistenceService;
@Transactional
public DossierEntity addDossier(CreateOrUpdateDossierRequest createOrUpdateDossierRequest) {
if (dossierPersistenceService.findAllDossiers()