Pull request #52: 3.0 efsa readiness
Merge in RED/persistence-service from 3.0-efsa-readiness to master * commit '62cbda7214c7dee1233c683ae906ad989c20f833': legal basis api reviewer to null allow set null for reviewer/approver allow set null for reviewer/approver
This commit is contained in:
commit
1df38e430f
@ -11,7 +11,6 @@ import lombok.NoArgsConstructor;
|
||||
@Builder
|
||||
public class LegalBasis {
|
||||
|
||||
private long id;
|
||||
private String name;
|
||||
private String description;
|
||||
private String reason;
|
||||
|
||||
@ -10,16 +10,22 @@ import java.util.List;
|
||||
public interface LegalBasisMappingResource {
|
||||
|
||||
String LEGAL_BASIS_PATH = "/legalBasis";
|
||||
String DELETE_PATH = "/delete";
|
||||
String VERSION_PATH = "/version";
|
||||
String DOSSIER_TEMPLATE_PARAMETER_NAME = "dossierTemplateId";
|
||||
String DOSSIER_TEMPLATE_PATH_VARIABLE = "/{" + DOSSIER_TEMPLATE_PARAMETER_NAME + "}";
|
||||
|
||||
|
||||
@PostMapping(value = LEGAL_BASIS_PATH + DOSSIER_TEMPLATE_PATH_VARIABLE + DELETE_PATH, consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
void deleteLegalBasis(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @RequestBody List<String> legalBasisNames);
|
||||
|
||||
@PutMapping(value = LEGAL_BASIS_PATH + DOSSIER_TEMPLATE_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
void addOrUpdateLegalBasis(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @RequestBody LegalBasis legalBasis);
|
||||
|
||||
@ResponseStatus(HttpStatus.NO_CONTENT)
|
||||
@PostMapping(value = LEGAL_BASIS_PATH + DOSSIER_TEMPLATE_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
void setLegalBasisMapping(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @RequestBody List<LegalBasis> legalBasisMapping);
|
||||
|
||||
|
||||
@ResponseBody
|
||||
@ResponseStatus(value = HttpStatus.OK)
|
||||
@GetMapping(value = LEGAL_BASIS_PATH + DOSSIER_TEMPLATE_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
|
||||
@ -22,6 +22,7 @@ public interface StatusResource {
|
||||
String EXCLUDED_STATUS_PARAM = "excluded";
|
||||
|
||||
String APPROVER_ID_REQUEST_PARAM = "approverId";
|
||||
String REVIEWER_ID_REQUEST_PARAM = "reviewerId";
|
||||
|
||||
@ResponseBody
|
||||
@ResponseStatus(value = HttpStatus.OK)
|
||||
@ -47,7 +48,7 @@ public interface StatusResource {
|
||||
|
||||
@PostMapping(value = STATUS_PATH + "/reviewer" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
void setCurrentFileReviewer(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId,
|
||||
@RequestBody JSONPrimitive<String> currentReviewer);
|
||||
@RequestParam(value = REVIEWER_ID_REQUEST_PARAM, required =false) String reviewerId);
|
||||
|
||||
|
||||
@PostMapping(value = STATUS_PATH + "/underreview" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE)
|
||||
|
||||
@ -24,7 +24,7 @@ public class ManualRedactionEntryEntity {
|
||||
private AnnotationEntityId id;
|
||||
@Column(name = "user_id")
|
||||
private String user;
|
||||
@Column
|
||||
@Column(length = 4000)
|
||||
private String typeId;
|
||||
@Column(length = 4000)
|
||||
private String value;
|
||||
|
||||
@ -8,17 +8,12 @@ import lombok.NoArgsConstructor;
|
||||
import javax.persistence.*;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@Entity
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
@Table(name = "legal_basis")
|
||||
@Embeddable
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class LegalBasisEntity {
|
||||
|
||||
@Id
|
||||
@GeneratedValue
|
||||
private long id;
|
||||
@Column
|
||||
private String name;
|
||||
@Column(length = 4000)
|
||||
private String description;
|
||||
|
||||
@ -18,7 +18,7 @@ public class LegalBasisMappingEntity {
|
||||
@Column
|
||||
private long version;
|
||||
|
||||
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
|
||||
@ElementCollection
|
||||
private List<LegalBasisEntity> legalBasis = new ArrayList<>();
|
||||
|
||||
}
|
||||
|
||||
@ -276,7 +276,7 @@ public class FileStatusPersistenceService {
|
||||
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
|
||||
file.setCurrentReviewer(currentReviewer);
|
||||
file.setLastReviewer(lastReviewer);
|
||||
file.setStatus(FileStatus.UNDER_REVIEW);
|
||||
file.setStatus(currentReviewer == null ? FileStatus.UNASSIGNED :FileStatus.UNDER_REVIEW);
|
||||
}, () -> {
|
||||
throw new NotFoundException("Unknown file=" + fileId);
|
||||
});
|
||||
|
||||
@ -2,14 +2,15 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.LegalBasisEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.LegalBasisMappingEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.LegalBasisMappingRepository;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.legalbasis.LegalBasis;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert;
|
||||
|
||||
@ -22,6 +23,36 @@ public class LegalBasisMappingPersistenceService {
|
||||
private final LegalBasisMappingRepository legalBasisMappingRepository;
|
||||
|
||||
|
||||
@Transactional
|
||||
public void deleteLegalBasis(String dossierTemplateId, List<String> legalBasisNames) {
|
||||
var mapping = getLegalBasisMappingOrCreate(dossierTemplateId);
|
||||
var filteredLegalBasis = mapping.getLegalBasis().stream().filter(l -> !legalBasisNames.contains(l.getName())).collect(Collectors.toList());
|
||||
|
||||
mapping.setLegalBasis(filteredLegalBasis);
|
||||
mapping.setVersion(mapping.getVersion() + 1);
|
||||
legalBasisMappingRepository.save(mapping);
|
||||
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void addOrUpdateLegalBasis(String dossierTemplateId, LegalBasis legalBasis) {
|
||||
var mapping = getLegalBasisMappingOrCreate(dossierTemplateId);
|
||||
|
||||
mapping.getLegalBasis().stream().filter(l -> l.getName().equals(legalBasis.getName())).findAny().ifPresentOrElse(existingBasis -> {
|
||||
existingBasis.setReason(legalBasis.getReason());
|
||||
existingBasis.setDescription(legalBasis.getDescription());
|
||||
}, () -> mapping.getLegalBasis().add(LegalBasisEntity.builder()
|
||||
.name(legalBasis.getName())
|
||||
.description(legalBasis.getDescription())
|
||||
.reason(legalBasis.getReason()).build()));
|
||||
|
||||
|
||||
mapping.setVersion(mapping.getVersion() + 1);
|
||||
legalBasisMappingRepository.save(mapping);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void setLegalBasisMapping(String dossierTemplateId, List<LegalBasis> legalBasisMapping) {
|
||||
|
||||
@ -40,9 +71,21 @@ public class LegalBasisMappingPersistenceService {
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public List<LegalBasisEntity> getLegalBasisMapping(String dossierTemplateId) {
|
||||
return legalBasisMappingRepository.findById(dossierTemplateId).map(LegalBasisMappingEntity::getLegalBasis)
|
||||
.orElseThrow(() -> new NotFoundException("Legal Basis Not configured!"));
|
||||
return getLegalBasisMappingOrCreate(dossierTemplateId).getLegalBasis();
|
||||
}
|
||||
|
||||
private LegalBasisMappingEntity getLegalBasisMappingOrCreate(String dossierTemplateId) {
|
||||
return legalBasisMappingRepository.findById(dossierTemplateId).orElseGet(() -> {
|
||||
// create on get if not present
|
||||
var lbm = new LegalBasisMappingEntity();
|
||||
lbm.setDossierTemplateId(dossierTemplateId);
|
||||
lbm.setLegalBasis(new ArrayList<>());
|
||||
lbm.setVersion(1);
|
||||
return legalBasisMappingRepository.save(lbm);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
public long getVersion(String dossierTemplateId) {
|
||||
|
||||
@ -3,7 +3,6 @@ package com.iqser.red.service.peristence.v1.server.controller;
|
||||
import com.iqser.red.service.peristence.v1.server.service.*;
|
||||
import com.iqser.red.service.peristence.v1.server.utils.FileModelMapper;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileStatus;
|
||||
import com.iqser.red.service.persistence.service.v1.api.resources.StatusResource;
|
||||
@ -70,10 +69,10 @@ public class FileStatusController implements StatusResource {
|
||||
@Override
|
||||
public void setCurrentFileReviewer(@PathVariable(DOSSIER_ID_PARAM) String dossierId,
|
||||
@PathVariable(FILE_ID) String fileId,
|
||||
@RequestBody JSONPrimitive<String> currentFileReviewerRequest) {
|
||||
@RequestParam(value = REVIEWER_ID_REQUEST_PARAM, required = false) String reviewerId) {
|
||||
|
||||
fileStatusService.setCurrentReviewer(dossierId, fileId, currentFileReviewerRequest.getValue());
|
||||
fileStatusService.setStatusSuccessful(fileId, FileStatus.UNDER_REVIEW);
|
||||
fileStatusService.setCurrentReviewer(dossierId, fileId, reviewerId);
|
||||
fileStatusService.setStatusSuccessful(fileId, reviewerId != null ? FileStatus.UNDER_REVIEW : FileStatus.UNASSIGNED);
|
||||
analysisFlagsCalculationService.calculateFlags(dossierId, fileId);
|
||||
}
|
||||
|
||||
@ -85,7 +84,7 @@ public class FileStatusController implements StatusResource {
|
||||
FileEntity fileStatus = fileStatusService.getStatus(fileId);
|
||||
String lastReviewer = fileStatus.getLastReviewer();
|
||||
fileStatusService.setCurrentReviewer(dossierId, fileId, lastReviewer);
|
||||
fileStatusService.setStatusSuccessful(fileId, FileStatus.UNDER_REVIEW);
|
||||
fileStatusService.setStatusSuccessful(fileId, lastReviewer != null ? FileStatus.UNDER_REVIEW : FileStatus.UNASSIGNED);
|
||||
analysisFlagsCalculationService.calculateFlags(dossierId, fileId);
|
||||
}
|
||||
|
||||
@ -94,13 +93,8 @@ public class FileStatusController implements StatusResource {
|
||||
@PathVariable(FILE_ID) String fileId,
|
||||
@RequestParam(value = APPROVER_ID_REQUEST_PARAM, required = false) String approverId) {
|
||||
|
||||
|
||||
var dossier = dossierService.getDossierById(dossierId);
|
||||
|
||||
String dossierOwner = dossier.getOwnerId();
|
||||
|
||||
fileStatusService.setCurrentReviewer(dossierId, fileId, approverId != null ? approverId : dossierOwner);
|
||||
fileStatusService.setStatusSuccessful(fileId, FileStatus.UNDER_APPROVAL);
|
||||
fileStatusService.setCurrentReviewer(dossierId, fileId, approverId);
|
||||
fileStatusService.setStatusSuccessful(fileId, approverId != null ? FileStatus.UNDER_APPROVAL : FileStatus.UNASSIGNED);
|
||||
analysisFlagsCalculationService.calculateFlags(dossierId, fileId);
|
||||
}
|
||||
|
||||
|
||||
@ -21,6 +21,15 @@ public class LegalBasisMappingController implements LegalBasisMappingResource {
|
||||
|
||||
private final LegalBasisMappingPersistenceService legalBasisMappingPersistenceService;
|
||||
|
||||
@Override
|
||||
public void deleteLegalBasis(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @RequestBody List<String> legalBasisNames) {
|
||||
legalBasisMappingPersistenceService.deleteLegalBasis(dossierTemplateId, legalBasisNames);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addOrUpdateLegalBasis(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @RequestBody LegalBasis legalBasis) {
|
||||
legalBasisMappingPersistenceService.addOrUpdateLegalBasis(dossierTemplateId, legalBasis);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package com.iqser.red.service.peristence.v1.server.controller;
|
||||
|
||||
import com.iqser.red.service.peristence.v1.server.service.AnalysisFlagsCalculationService;
|
||||
import com.iqser.red.service.peristence.v1.server.service.FileStatusService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ViewedPagesPersistenceService;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.annotations.ViewedPage;
|
||||
import com.iqser.red.service.persistence.service.v1.api.resources.ViewedPagesResource;
|
||||
@ -17,12 +19,16 @@ import static com.iqser.red.service.persistence.management.v1.processor.utils.Ma
|
||||
public class ViewedPagesController implements ViewedPagesResource {
|
||||
|
||||
private final ViewedPagesPersistenceService viewedPagesPersistenceService;
|
||||
private final FileStatusService fileStatusService;
|
||||
private final AnalysisFlagsCalculationService analysisFlagsCalculationService;
|
||||
|
||||
|
||||
public void addPage(@PathVariable(FILE_ID) String fileId, @PathVariable(ROLE) String role,
|
||||
@RequestBody Integer page) {
|
||||
|
||||
viewedPagesPersistenceService.insertPage(fileId, role, page);
|
||||
var file = fileStatusService.getStatus(fileId);
|
||||
analysisFlagsCalculationService.calculateFlags(file.getDossierId(), fileId);
|
||||
}
|
||||
|
||||
|
||||
@ -30,6 +36,8 @@ public class ViewedPagesController implements ViewedPagesResource {
|
||||
@RequestBody Integer page) {
|
||||
|
||||
viewedPagesPersistenceService.removePage(fileId, role, page);
|
||||
var file = fileStatusService.getStatus(fileId);
|
||||
analysisFlagsCalculationService.calculateFlags(file.getDossierId(), fileId);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -54,7 +54,7 @@ public class FileTest extends AbstractPersistenceServerServiceTest {
|
||||
var loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
|
||||
|
||||
fileClient.setCurrentFileReviewer(dossier.getId(), file.getId(), JSONPrimitive.of("1"));
|
||||
fileClient.setCurrentFileReviewer(dossier.getId(), file.getId(),"1");
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getCurrentReviewer()).isEqualTo("1");
|
||||
assertThat(loadedFile.getStatus()).isEqualTo(FileStatus.UNDER_REVIEW);
|
||||
@ -70,7 +70,7 @@ public class FileTest extends AbstractPersistenceServerServiceTest {
|
||||
assertThat(loadedFile.getExcludedPages()).isEmpty();
|
||||
|
||||
|
||||
fileClient.setCurrentFileReviewer(dossier.getId(), file.getId(), JSONPrimitive.of("1"));
|
||||
fileClient.setCurrentFileReviewer(dossier.getId(), file.getId(), "1");
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getCurrentReviewer()).isEqualTo("1");
|
||||
assertThat(loadedFile.getStatus()).isEqualTo(FileStatus.UNDER_REVIEW);
|
||||
|
||||
@ -40,7 +40,7 @@ public class LegalBasisTest extends AbstractPersistenceServerServiceTest {
|
||||
mappings.add(LegalBasis.builder().name("test 1").description("test 1").reason("test 1").build());
|
||||
mappings.add(LegalBasis.builder().name("test 2").description("test 2").reason("test 2").build());
|
||||
legalBasisClient.setLegalBasisMapping(dossierTemplate.getId(), mappings);
|
||||
assertThat(legalBasisClient.getVersion(dossierTemplate.getId())).isEqualTo(1);
|
||||
assertThat(legalBasisClient.getVersion(dossierTemplate.getId())).isEqualTo(2);
|
||||
|
||||
|
||||
var mapping = legalBasisClient.getLegalBasisMapping(dossierTemplate.getId());
|
||||
@ -48,9 +48,31 @@ public class LegalBasisTest extends AbstractPersistenceServerServiceTest {
|
||||
assertThat(mapping.stream().map(LegalBasis::getName).collect(Collectors.toList())).containsExactlyInAnyOrder("test 1", "test 2");
|
||||
|
||||
|
||||
var legalBasis = LegalBasis.builder().name("test 3").description("test 3").reason("test 3").build();
|
||||
legalBasisClient.addOrUpdateLegalBasis(dossierTemplate.getId(), legalBasis);
|
||||
|
||||
|
||||
mapping = legalBasisClient.getLegalBasisMapping(dossierTemplate.getId());
|
||||
assertThat(mapping.size()).isEqualTo(3);
|
||||
assertThat(mapping.stream().map(LegalBasis::getName).collect(Collectors.toList())).containsExactlyInAnyOrder("test 1", "test 2", "test 3");
|
||||
|
||||
|
||||
legalBasis = LegalBasis.builder().name("test 3").reason("test 3").description("test 3 - updated").build();
|
||||
legalBasisClient.addOrUpdateLegalBasis(dossierTemplate.getId(), legalBasis);
|
||||
|
||||
mapping = legalBasisClient.getLegalBasisMapping(dossierTemplate.getId());
|
||||
assertThat(mapping.size()).isEqualTo(3);
|
||||
assertThat(mapping.stream().map(LegalBasis::getDescription).collect(Collectors.toList())).containsExactlyInAnyOrder("test 1", "test 2", "test 3 - updated");
|
||||
|
||||
|
||||
legalBasisClient.deleteLegalBasis(dossierTemplate.getId(),Lists.newArrayList("test 1"));
|
||||
mapping = legalBasisClient.getLegalBasisMapping(dossierTemplate.getId());
|
||||
assertThat(mapping.size()).isEqualTo(2);
|
||||
|
||||
|
||||
legalBasisClient.setLegalBasisMapping(dossierTemplate.getId(), Lists.newArrayList());
|
||||
assertThat(legalBasisClient.getLegalBasisMapping(dossierTemplate.getId())).isEmpty();
|
||||
assertThat(legalBasisClient.getVersion(dossierTemplate.getId())).isEqualTo(2);
|
||||
assertThat(legalBasisClient.getVersion(dossierTemplate.getId())).isEqualTo(6);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user