RED-8339: fixed misbehaving when adding an override in old endpoint
This commit is contained in:
parent
26d03e6b6f
commit
abccf8ca82
@ -3,6 +3,7 @@ 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.GET_RSS;
|
||||||
import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.READ_REDACTION_LOG;
|
import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.READ_REDACTION_LOG;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -14,7 +15,6 @@ import org.springframework.web.bind.annotation.GetMapping;
|
|||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
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.exception.BadRequestException;
|
||||||
@ -54,9 +54,7 @@ public class ComponentLogController implements ComponentLogResource {
|
|||||||
@Deprecated(forRemoval = true)
|
@Deprecated(forRemoval = true)
|
||||||
@PostMapping(value = COMPONENT_LOG_PATH + OVERRIDE_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE)
|
@PostMapping(value = COMPONENT_LOG_PATH + OVERRIDE_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||||
@PreAuthorize("hasAuthority('" + GET_RSS + "')")
|
@PreAuthorize("hasAuthority('" + GET_RSS + "')")
|
||||||
public void addOverride(@PathVariable(DOSSIER_ID) String dossierId,
|
public void addOverride(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestBody ComponentsOverrides componentsOverrides) {
|
||||||
@PathVariable(FILE_ID) String fileId,
|
|
||||||
@RequestBody ComponentsOverrides componentsOverrides) {
|
|
||||||
|
|
||||||
accessControlService.checkDossierExistenceAndAccessPermissionsToDossier(dossierId);
|
accessControlService.checkDossierExistenceAndAccessPermissionsToDossier(dossierId);
|
||||||
accessControlService.validateFileResourceExistence(fileId);
|
accessControlService.validateFileResourceExistence(fileId);
|
||||||
@ -65,10 +63,29 @@ public class ComponentLogController implements ComponentLogResource {
|
|||||||
throw new BadRequestException("Request body cannot be empty!");
|
throw new BadRequestException("Request body cannot be empty!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var componentLog = componentLogService.getComponentLog(dossierId, fileId);
|
||||||
|
|
||||||
componentsOverrides.getComponentOverrides()
|
componentsOverrides.getComponentOverrides()
|
||||||
.forEach((k, v) -> {
|
.forEach((k, v) -> {
|
||||||
ComponentLogEntryValue overrideValue = ComponentLogEntryValue.builder().value(v).build();
|
ComponentLogEntry override;
|
||||||
ComponentLogEntry override = ComponentLogEntry.builder().name(k).componentValues(List.of(overrideValue)).build();
|
var entryOptional = componentLog.getComponentLogEntries()
|
||||||
|
.stream()
|
||||||
|
.filter(componentLogEntry -> componentLogEntry.getName().equals(k))
|
||||||
|
.findFirst();
|
||||||
|
if (entryOptional.isPresent()) {
|
||||||
|
override = entryOptional.get();
|
||||||
|
override.getComponentValues()
|
||||||
|
.forEach(componentLogEntryValue -> componentLogEntryValue.setValue(v));
|
||||||
|
} else {
|
||||||
|
ComponentLogEntryValue overrideValue = ComponentLogEntryValue.builder()
|
||||||
|
.value(v)
|
||||||
|
.originalValue(v)
|
||||||
|
.valueDescription("")
|
||||||
|
.componentRuleId("")
|
||||||
|
.componentLogEntityReferences(new ArrayList<>())
|
||||||
|
.build();
|
||||||
|
override = ComponentLogEntry.builder().name(k).componentValues(List.of(overrideValue)).build();
|
||||||
|
}
|
||||||
componentLogService.addOverride(dossierId, fileId, override);
|
componentLogService.addOverride(dossierId, fileId, override);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -78,8 +95,7 @@ public class ComponentLogController implements ComponentLogResource {
|
|||||||
@Deprecated(forRemoval = true)
|
@Deprecated(forRemoval = true)
|
||||||
@GetMapping(value = COMPONENT_LOG_PATH + OVERRIDE_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
|
@GetMapping(value = COMPONENT_LOG_PATH + OVERRIDE_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
@PreAuthorize("hasAuthority('" + GET_RSS + "')")
|
@PreAuthorize("hasAuthority('" + GET_RSS + "')")
|
||||||
public ComponentsOverrides getOverrides(@PathVariable(DOSSIER_ID) String dossierId,
|
public ComponentsOverrides getOverrides(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId) {
|
||||||
@PathVariable(FILE_ID) String fileId) {
|
|
||||||
|
|
||||||
accessControlService.checkDossierExistenceAndViewPermissionsToDossier(dossierId);
|
accessControlService.checkDossierExistenceAndViewPermissionsToDossier(dossierId);
|
||||||
accessControlService.validateFileResourceExistence(fileId);
|
accessControlService.validateFileResourceExistence(fileId);
|
||||||
@ -100,9 +116,7 @@ public class ComponentLogController implements ComponentLogResource {
|
|||||||
@Deprecated(forRemoval = true)
|
@Deprecated(forRemoval = true)
|
||||||
@PostMapping(value = COMPONENT_LOG_PATH + OVERRIDE_PATH + "/revert" + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE)
|
@PostMapping(value = COMPONENT_LOG_PATH + OVERRIDE_PATH + "/revert" + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||||
@PreAuthorize("hasAuthority('" + GET_RSS + "')")
|
@PreAuthorize("hasAuthority('" + GET_RSS + "')")
|
||||||
public void revertOverrides(@PathVariable(DOSSIER_ID) String dossierId,
|
public void revertOverrides(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestBody RevertOverrideRequest revertOverrideRequest) {
|
||||||
@PathVariable(FILE_ID) String fileId,
|
|
||||||
@RequestBody RevertOverrideRequest revertOverrideRequest) {
|
|
||||||
|
|
||||||
accessControlService.checkDossierExistenceAndAccessPermissionsToDossier(dossierId);
|
accessControlService.checkDossierExistenceAndAccessPermissionsToDossier(dossierId);
|
||||||
accessControlService.validateFileResourceExistence(fileId);
|
accessControlService.validateFileResourceExistence(fileId);
|
||||||
|
|||||||
@ -21,6 +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.DossierTesterAndProvider;
|
||||||
import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider;
|
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.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
|
||||||
|
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.ComponentsOverrides;
|
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.component.RevertOverrideRequest;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType;
|
||||||
@ -186,16 +187,19 @@ public class ComponentOverrideTest extends AbstractPersistenceServerServiceTest
|
|||||||
.get().isOverridden());
|
.get().isOverridden());
|
||||||
|
|
||||||
Map<String, String> componentOverrides = new HashMap<>();
|
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");
|
String value = "BBBB Strange Chemical Name And the rest of a title – With a dash and some more text";
|
||||||
|
componentOverrides.put("Study_Title", value);
|
||||||
ComponentsOverrides componentOverrideModel4 = ComponentsOverrides.builder().componentOverrides(componentOverrides).build();
|
ComponentsOverrides componentOverrideModel4 = ComponentsOverrides.builder().componentOverrides(componentOverrides).build();
|
||||||
componentLogClient.addOverride(dossier.getId(), file.getId(), componentOverrideModel4);
|
componentLogClient.addOverride(dossier.getId(), file.getId(), componentOverrideModel4);
|
||||||
|
|
||||||
overridesFromOldEndpoint = componentLogClient.getComponentLog(dossier.getId(), file.getId(), true);
|
overridesFromOldEndpoint = componentLogClient.getComponentLog(dossier.getId(), file.getId(), true);
|
||||||
assertTrue(overridesFromOldEndpoint.getComponentLogEntries()
|
ComponentLogEntry studyTitle = overridesFromOldEndpoint.getComponentLogEntries()
|
||||||
.stream()
|
.stream()
|
||||||
.filter(component -> component.getName().equals("Study_Title"))
|
.filter(component -> component.getName().equals("Study_Title"))
|
||||||
.findAny()
|
.findAny()
|
||||||
.get().isOverridden());
|
.get();
|
||||||
|
assertTrue(studyTitle.isOverridden());
|
||||||
|
assertTrue(studyTitle.getComponentValues().stream().anyMatch(componentLogEntryValue -> componentLogEntryValue.getValue().equals(value)));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user