From 6a4047effb2c87b1b31ec15c0879d11203f0016d Mon Sep 17 00:00:00 2001 From: Ali Oezyetimoglu Date: Tue, 4 Jun 2024 17:13:58 +0200 Subject: [PATCH] RED-8339: rolled back signature changes in old component log endpoints --- .../controller/ComponentLogController.java | 41 +++++++++++++++---- .../resource/ComponentLogResource.java | 10 ++--- .../tests/ComponentOverrideTest.java | 24 +++-------- ...rideList.java => ComponentsOverrides.java} | 6 ++- 4 files changed, 49 insertions(+), 32 deletions(-) rename persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/component/{ComponentOverrideList.java => ComponentsOverrides.java} (73%) 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/ComponentLogController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ComponentLogController.java index d41475261..1ea2686bf 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ComponentLogController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ComponentLogController.java @@ -3,6 +3,11 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.GET_RSS; import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.READ_REDACTION_LOG; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + import org.springframework.http.MediaType; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.GetMapping; @@ -12,12 +17,14 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.service.AccessControlService; import com.iqser.red.service.persistence.management.v1.processor.service.ComponentLogService; import com.iqser.red.service.persistence.service.v1.api.external.resource.ComponentLogResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLog; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLogEntry; -import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentOverrideList; +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLogEntryValue; +import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentsOverrides; import com.iqser.red.service.persistence.service.v1.api.shared.model.component.RevertOverrideRequest; import lombok.AccessLevel; @@ -51,28 +58,44 @@ public class ComponentLogController implements ComponentLogResource { public void addOverride(@RequestParam(name = "dossierTemplateId") String dossierTemplateId, @PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, - @RequestBody ComponentLogEntry override) { + @RequestBody ComponentsOverrides componentsOverrides) { accessControlService.checkDossierExistenceAndAccessPermissionsToDossier(dossierId); accessControlService.validateFileResourceExistence(fileId); - componentLogService.addOverride(dossierId, fileId, override); + if (componentsOverrides.getComponentOverrides() == null || componentsOverrides.getComponentOverrides().isEmpty()) { + throw new BadRequestException("Request body cannot be empty!"); + } + + componentsOverrides.getComponentOverrides() + .forEach((k, v) -> { + ComponentLogEntryValue overrideValue = ComponentLogEntryValue.builder().value(v).build(); + ComponentLogEntry override = ComponentLogEntry.builder().name(k).componentValues(List.of(overrideValue)).build(); + componentLogService.addOverride(dossierId, fileId, override); + }); } @GetMapping(value = COMPONENT_LOG_PATH + OVERRIDE_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) @PreAuthorize("hasAuthority('" + GET_RSS + "')") - public ComponentOverrideList getOverrides(@RequestParam(name = "dossierTemplateId") String dossierTemplateId, - @PathVariable(DOSSIER_ID) String dossierId, - @PathVariable(FILE_ID) String fileId) { + public ComponentsOverrides getOverrides(@RequestParam(name = "dossierTemplateId") String dossierTemplateId, + @PathVariable(DOSSIER_ID) String dossierId, + @PathVariable(FILE_ID) String fileId) { accessControlService.checkDossierExistenceAndViewPermissionsToDossier(dossierId); accessControlService.validateFileResourceExistence(fileId); var overrides = componentLogService.getOverrides(dossierId, fileId); - return ComponentOverrideList.builder().componentOverrides(overrides).build(); + Map overridesMap = new HashMap<>(); + overrides.forEach(componentLogEntry -> { + Optional value = componentLogEntry.getComponentValues() + .stream() + .findAny(); + value.ifPresent(componentLogEntryValue -> overridesMap.put(componentLogEntry.getName(), componentLogEntryValue.getValue())); + }); + return ComponentsOverrides.builder().componentOverrides(overridesMap).build(); } @@ -86,6 +109,10 @@ public class ComponentLogController implements ComponentLogResource { accessControlService.checkDossierExistenceAndAccessPermissionsToDossier(dossierId); accessControlService.validateFileResourceExistence(fileId); + if (revertOverrideRequest.getComponents() == null || revertOverrideRequest.getComponents().isEmpty()) { + throw new BadRequestException("Request body cannot be empty!"); + } + componentLogService.revertOverrides(dossierId, fileId, revertOverrideRequest); } diff --git a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/ComponentLogResource.java b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/ComponentLogResource.java index d7382d956..d4c4d2b05 100644 --- a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/ComponentLogResource.java +++ b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/ComponentLogResource.java @@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.ResponseStatus; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLog; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLogEntry; -import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentOverrideList; +import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentsOverrides; import com.iqser.red.service.persistence.service.v1.api.shared.model.component.RevertOverrideRequest; import io.swagger.v3.oas.annotations.Operation; @@ -52,7 +52,7 @@ public interface ComponentLogResource { void addOverride(@RequestParam(name = "dossierTemplateId") String dossierTemplateId, @PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, - @RequestBody ComponentLogEntry override); + @RequestBody ComponentsOverrides componentsOverrides); @ResponseBody @@ -60,9 +60,9 @@ public interface ComponentLogResource { @GetMapping(value = COMPONENT_LOG_PATH + OVERRIDE_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "Gets overrides for components", description = "None") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "404", description = "Not found")}) - ComponentOverrideList getOverrides(@RequestParam(name = "dossierTemplateId") String dossierTemplateId, - @PathVariable(DOSSIER_ID) String dossierId, - @PathVariable(FILE_ID) String fileId); + ComponentsOverrides getOverrides(@RequestParam(name = "dossierTemplateId") String dossierTemplateId, + @PathVariable(DOSSIER_ID) String dossierId, + @PathVariable(FILE_ID) String fileId); @ResponseBody diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentOverrideTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentOverrideTest.java index 757a69208..a31ad29cd 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentOverrideTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentOverrideTest.java @@ -5,7 +5,9 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.IOException; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Set; import org.junit.jupiter.api.Test; @@ -19,9 +21,7 @@ import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemp import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLogEntityReference; -import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLogEntry; -import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLogEntryValue; +import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentsOverrides; import com.iqser.red.service.persistence.service.v1.api.shared.model.component.RevertOverrideRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType; import com.iqser.red.service.persistence.service.v2.api.external.model.Component; @@ -185,21 +185,9 @@ public class ComponentOverrideTest extends AbstractPersistenceServerServiceTest .findAny() .get().isOverridden()); - ComponentLogEntry componentOverrideModel4 = ComponentLogEntry.builder() - .name("Study_Title") - .componentValues(List.of(ComponentLogEntryValue.builder() - .value("BBBB Strange Chemical Name And the rest of a title – With a dash and some more text") - .valueDescription("First found value of type title or else ''") - .componentRuleId("StudyTitle.0.0") - .componentLogEntityReferences(List.of(ComponentLogEntityReference.builder() - .id("cf7f0d0c4c07918ce7d67b204f5fdb7d") - .type("title") - .entityRuleId("DOC.6.1") - .page(1) - .build())) - .build())) - .build(); - + Map componentOverrides = new HashMap<>(); + componentOverrides.put("Study_Title", "BBBB Strange Chemical Name And the rest of a title – With a dash and some more text"); + ComponentsOverrides componentOverrideModel4 = ComponentsOverrides.builder().componentOverrides(componentOverrides).build(); componentLogClient.addOverride(dossierTemplate.getId(), dossier.getId(), file.getId(), componentOverrideModel4); overridesFromOldEndpoint = componentLogClient.getComponentLog(dossier.getId(), file.getId(), true); diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/component/ComponentOverrideList.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/component/ComponentsOverrides.java similarity index 73% rename from persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/component/ComponentOverrideList.java rename to persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/component/ComponentsOverrides.java index dd3486eb2..5829c8234 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/component/ComponentOverrideList.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/component/ComponentsOverrides.java @@ -1,7 +1,9 @@ package com.iqser.red.service.persistence.service.v1.api.shared.model.component; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLogEntry; @@ -14,8 +16,8 @@ import lombok.NoArgsConstructor; @Builder @NoArgsConstructor @AllArgsConstructor -public class ComponentOverrideList { +public class ComponentsOverrides { - List componentOverrides = new ArrayList<>(); + private Map componentOverrides = new HashMap<>(); } -- 2.47.2