RED-8480: integrated legal basis endpoint in recategorize endpoint

This commit is contained in:
Ali Oezyetimoglu 2024-03-13 15:45:44 +01:00
parent 857f2383d2
commit 3fde378ade
13 changed files with 50 additions and 4 deletions

View File

@ -253,6 +253,7 @@ public class ManualRedactionController implements ManualRedactionResource {
}
@Deprecated(forRemoval = true)
@PreAuthorize("hasAuthority('" + DO_MANUAL_REDACTION + "')")
public List<ManualAddResponse> legalBasisChangeBulk(@PathVariable(DOSSIER_ID) String dossierId,
@PathVariable(FILE_ID) String fileId,

View File

@ -120,6 +120,7 @@ public interface ManualRedactionResource {
@RequestBody Set<ForceRedactionRequestModel> forceRedactionRequests);
@Deprecated(forRemoval = true)
@ResponseStatus(value = HttpStatus.OK)
@PostMapping(value = MANUAL_REDACTION_REST_PATH
+ "/bulk/redaction/legalBasisChange"

View File

@ -49,6 +49,8 @@ public class ManualRecategorizationEntity implements IBaseAnnotation {
private boolean addToAllDossiers;
@Column(length = 4000)
private String legalBasis;
@Column(length = 1024)
private String section;
@ManyToOne
private FileEntity fileStatus;

View File

@ -120,6 +120,7 @@ public class ManualRedactionMapper {
}
@Deprecated(forRemoval = true)
public List<LegalBasisChangeRequest> toLegalBasisChangeRequestList(Set<LegalBasisChangeRequestModel> legalBasisChangeRequests) {
return legalBasisChangeRequests.stream()
@ -159,6 +160,7 @@ public class ManualRedactionMapper {
.dossierTemplateTypeId(toTypeId(recategorizationRequest.getType(), dossierTemplateId))
.legalBasis(Optional.ofNullable(recategorizationRequest.getLegalBasis())
.orElse(""))
.section(recategorizationRequest.getSection())
.build();
requests.add(build);
}

View File

@ -197,6 +197,7 @@ public class ManualRedactionService {
}
@Deprecated(forRemoval = true)
@Transactional
public List<ManualAddResponse> addLegalBasisChange(String dossierId, String fileId, List<LegalBasisChangeRequest> legalBasisChangeRequests) {
@ -224,6 +225,8 @@ public class ManualRedactionService {
public List<ManualAddResponse> addRecategorization(String dossierId, String fileId, List<RecategorizationRequest> recategorizationRequests) {
var response = new ArrayList<ManualAddResponse>();
dossierPersistenceService.getAndValidateDossier(dossierId);
for (var recategorizationRequest : recategorizationRequests) {
manualRedactionDictionaryUpdateHandler.validateDictionariesForAdd(recategorizationRequest, recategorizationRequest.getValue());
manualRedactionDictionaryUpdateHandler.validateDictionariesForDelete(recategorizationRequest,

View File

@ -5,12 +5,14 @@ import java.time.temporal.ChronoUnit;
import java.util.List;
import java.util.Set;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualRecategorizationEntity;
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
import com.iqser.red.service.persistence.management.v1.processor.model.ManualChangesQueryOptions;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.RecategorizationRepository;
@ -24,6 +26,8 @@ import lombok.extern.slf4j.Slf4j;
@RequiredArgsConstructor
public class RecategorizationPersistenceService {
private final int SECTION_MAX_LENGTH = 1024;
private final RecategorizationRepository recategorizationRepository;
@ -31,6 +35,7 @@ public class RecategorizationPersistenceService {
ManualRecategorizationEntity manualRecategorization = new ManualRecategorizationEntity();
manualRecategorization.setId(new AnnotationEntityId(recategorizationRequest.getAnnotationId(), fileId));
checkSection(recategorizationRequest.getSection());
BeanUtils.copyProperties(recategorizationRequest, manualRecategorization);
manualRecategorization.setRequestDate(OffsetDateTime.now());
manualRecategorization.setTypeId(recategorizationRequest.getDossierTemplateTypeId());
@ -39,6 +44,14 @@ public class RecategorizationPersistenceService {
}
private void checkSection(String section) {
if (!StringUtils.isEmpty(section) && section.length() > SECTION_MAX_LENGTH) {
throw new BadRequestException(String.format("The section is too long (%s), max length %s", section.length(), SECTION_MAX_LENGTH));
}
}
@Transactional
public void updateModifiedDictionaries(String fileId, String annotationId, Set<String> typeIdsOfDictionaryWithAdd, Set<String> typeIdsOfDictionaryWithDelete) {

View File

@ -189,3 +189,5 @@ databaseChangeLog:
file: db/changelog/tenant/121-set-dictionary-entry-type-for-dictionary-adds-where-null.yaml
- include:
file: db/changelog/tenant/sql/206-remove-manual-redactions-on-non-existing-pages.sql
- include:
file: db/changelog/tenant/122-add-legal-basis-variables-to-recategorize.yaml

View File

@ -0,0 +1,11 @@
databaseChangeLog:
- changeSet:
id: add-legal-basis-variables-to-recategorize
author: ali
changes:
- addColumn:
tableName: manual_recategorization
columns:
- column:
name: section
type: VARCHAR(1024)

View File

@ -415,7 +415,7 @@ public class FileTest extends AbstractPersistenceServerServiceTest {
.build()));
manualRedactionClient.recategorizeBulk(dossierId,
fileId,
Set.of(RecategorizationRequestModel.builder().annotationId(annotationId).comment("comment").type("new-type").legalBasis("").build()),
Set.of(RecategorizationRequestModel.builder().annotationId(annotationId).comment("comment").type("new-type").legalBasis("").section("section").build()),
false);
var loadedFile = fileClient.getFileStatus(dossierId, fileId);

View File

@ -1198,6 +1198,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
.addToDictionary(true)
.addToAllDossiers(true)
.legalBasis("")
.section("section")
.value("some value")
.build()),
false);
@ -1282,6 +1284,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
.addToDictionary(true)
.addToAllDossiers(false)
.legalBasis("")
.section("section")
.value("some value")
.build()),
false);
@ -1652,7 +1656,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog);
manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(RecategorizationRequestModel.builder().annotationId("dv").legalBasis("").build()), false);
manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(RecategorizationRequestModel.builder().annotationId("dv").legalBasis("").section("section").value("").build()), false);
var allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true);
assertEquals(allManualRedactions.getRecategorizations().size(), 1);
@ -1676,7 +1680,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
.dossierId(dossier.getId())
.build());
manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(RecategorizationRequestModel.builder().annotationId("dv2").legalBasis("").build()), false);
manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(RecategorizationRequestModel.builder().annotationId("dv2").legalBasis("").section("section").value("value").build()), false);
allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true);
assertEquals(allManualRedactions.getRecategorizations().size(), 2);
@ -1958,6 +1962,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
.addToDictionary(true)
.addToAllDossiers(true)
.legalBasis("")
.section("section")
.value("value")
.build();
var recatModelLongLegalBasis = RecategorizationRequestModel.builder()
.type(type.getType())
@ -1966,7 +1972,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
.addToAllDossiers(true)
.legalBasis(RandomStringUtils.randomAlphanumeric(4001))
.build();
var recatModelNoLegalBasis = RecategorizationRequestModel.builder().type(type.getType()).annotationId("annotationId3").addToDictionary(true).addToAllDossiers(true).build();
var recatModelNoLegalBasis = RecategorizationRequestModel.builder().type(type.getType()).annotationId("annotationId3").addToDictionary(true).section("section").value("some value").addToAllDossiers(true).build();
manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recatModel, recatModelNoLegalBasis), false);

View File

@ -29,6 +29,7 @@ public class RecategorizationRequest implements ManualRequestWithAddToDictionary
boolean addToAllDossiers;
private DictionaryEntryType dictionaryEntryType;
String legalBasis;
String section;
@Override

View File

@ -17,6 +17,8 @@ public class ManualRecategorization extends BaseAnnotation {
private String legalBasis;
private boolean addToDictionary;
private boolean addToAllDossiers;
private String section;
private String value;
@Override

View File

@ -20,5 +20,7 @@ public class RecategorizationRequestModel {
boolean addToDictionary;
boolean addToAllDossiers;
String legalBasis;
String section;
String value;
}