diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/LegalBasisMappingController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/LegalBasisMappingController.java index b935643db..110315d29 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/LegalBasisMappingController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/LegalBasisMappingController.java @@ -5,22 +5,21 @@ import static com.iqser.red.service.persistence.management.v1.processor.roles.Ac import java.util.List; -import jakarta.transaction.Transactional; - import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; -import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.LegalBasisMappingPersistenceService; -import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.service.v1.api.external.resource.LegalBasisMappingResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory; import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.legalbasis.LegalBasis; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; +import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; +import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; @RestController @@ -33,9 +32,9 @@ public class LegalBasisMappingController implements LegalBasisMappingResource { @Override @PreAuthorize("hasAuthority('" + WRITE_LEGAL_BASIS + "')") - public void deleteLegalBasis(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @RequestBody List legalBasisNames) { + public void deleteLegalBasis(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @RequestBody List legalBasisTechnicalNames) { - legalBasisMappingPersistenceService.deleteLegalBasis(dossierTemplateId, legalBasisNames); + legalBasisMappingPersistenceService.deleteLegalBasis(dossierTemplateId, legalBasisTechnicalNames); auditPersistenceService.audit(AuditRequest.builder() .userId(KeycloakSecurity.getUserId()) .objectId(dossierTemplateId) diff --git a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/LegalBasisMappingResource.java b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/LegalBasisMappingResource.java index cd5227e94..1066fc41c 100644 --- a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/LegalBasisMappingResource.java +++ b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/LegalBasisMappingResource.java @@ -28,15 +28,15 @@ public interface LegalBasisMappingResource { @ResponseStatus(HttpStatus.NO_CONTENT) @PostMapping(value = LEGAL_BASIS_PATH + DOSSIER_TEMPLATE_PATH_VARIABLE + DELETE_PATH, consumes = MediaType.APPLICATION_JSON_VALUE) - @Operation(summary = "delete some legal basis by their names.", description = "None") + @Operation(summary = "delete some legal basis by their technical names.", description = "None") @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK")}) - void deleteLegalBasis(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @RequestBody List legalBasisNames); + void deleteLegalBasis(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @RequestBody List legalBasisTechnicalNames); @ResponseStatus(HttpStatus.NO_CONTENT) @PutMapping(value = LEGAL_BASIS_PATH + DOSSIER_TEMPLATE_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "Add or update one legalBasis.", description = "None") - @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK")}) + @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK"), @ApiResponse(responseCode = "400", description = "Missing required parameter")}) void addOrUpdateLegalBasis(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @RequestBody LegalBasis legalBasis); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java index 7bfbe9b3a..b96649cee 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java @@ -29,12 +29,12 @@ public class LegalBasisMappingPersistenceService { @Transactional - public void deleteLegalBasis(String dossierTemplateId, List legalBasisNames) { + public void deleteLegalBasis(String dossierTemplateId, List legalBasisTechnicalNames) { var mapping = getLegalBasisMappingOrCreate(dossierTemplateId); var filteredLegalBasis = mapping.getLegalBasis() .stream() - .filter(l -> !legalBasisNames.contains(l.getName())) + .filter(l -> !legalBasisTechnicalNames.contains(l.getTechnicalName())) .collect(Collectors.toList()); mapping.setLegalBasis(filteredLegalBasis); @@ -77,11 +77,11 @@ public class LegalBasisMappingPersistenceService { mapping.getLegalBasis() .stream() - .filter(l -> l.getName().equals(legalBasis.getName())) + .filter(l -> l.getTechnicalName().equals(legalBasis.getTechnicalName())) .findAny().ifPresentOrElse(existingBasis -> { existingBasis.setReason(legalBasis.getReason()); existingBasis.setDescription(legalBasis.getDescription()); - existingBasis.setTechnicalName(legalBasis.getTechnicalName()); + existingBasis.setName(legalBasis.getName()); }, () -> mapping.getLegalBasis() .add(LegalBasisEntity.builder() @@ -99,6 +99,10 @@ public class LegalBasisMappingPersistenceService { private void validateLegalBasis(LegalBasis legalBasis) { + if (legalBasis.getTechnicalName() == null || legalBasis.getTechnicalName().isEmpty()) { + throw new BadRequestException("The technical name cannot be empty!"); + } + if (legalBasis.getName().length() > MAX_NAME_LENGTH) { throw new BadRequestException(String.format("The name is too long (%s), max length %s", legalBasis.getName().length(), MAX_NAME_LENGTH)); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java index e09efdbc3..996739ca8 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java @@ -49,10 +49,10 @@ import com.iqser.red.service.peristence.v1.server.integration.client.WatermarkCl import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; -import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.dataexchange.ExportDownloadMessage; -import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; import com.iqser.red.service.persistence.management.v1.processor.dataexchange.ExportDownloadMessageReceiver; +import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; +import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; import com.iqser.red.service.persistence.service.v1.api.shared.model.CreateTypeValue; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierAttributesConfig; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierStatusRequest; @@ -571,7 +571,7 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { // delete justifications for export legalBasisClient.deleteLegalBasis(dossierTemplate.getId(), existingLegalBasis.stream() - .map(LegalBasis::getName) + .map(LegalBasis::getTechnicalName) .collect(Collectors.toList())); existingLegalBasis = legalBasisClient.getLegalBasisMapping(dossierTemplate.getId()); assertThat(existingLegalBasis.isEmpty()).isTrue(); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LegalBasisTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LegalBasisTest.java index 9dfbb772b..704a81455 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LegalBasisTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LegalBasisTest.java @@ -57,7 +57,7 @@ public class LegalBasisTest extends AbstractPersistenceServerServiceTest { mapping = legalBasisClient.getLegalBasisMapping(dossierTemplate.getId()); assertThat(mapping.size()).isEqualTo(3); assertThat(mapping.stream() - .map(LegalBasis::getName) + .map(LegalBasis::getTechnicalName) .collect(Collectors.toList())).containsExactlyInAnyOrder("test 1", "test 2", "test 3"); legalBasis = LegalBasis.builder().name("test 3").reason("test 3").description("test 3 - updated").technicalName("test 3").build();