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)); }