RED-8339: rolled back signature changes in old component log endpoints #519

Merged
ali.oezyetimoglu1 merged 1 commits from RED-8339-5 into master 2024-06-04 17:29:22 +02:00
4 changed files with 49 additions and 32 deletions

View File

@ -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<String, String> overridesMap = new HashMap<>();
overrides.forEach(componentLogEntry -> {
Optional<ComponentLogEntryValue> 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);
}

View File

@ -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

View File

@ -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<String, String> 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);

View File

@ -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<ComponentLogEntry> componentOverrides = new ArrayList<>();
private Map<String, String> componentOverrides = new HashMap<>();
}