legal basis api reviewer to null

This commit is contained in:
Timo Bejan 2021-10-11 17:02:37 +03:00
parent 5000127952
commit 62cbda7214
10 changed files with 101 additions and 19 deletions

View File

@ -11,7 +11,6 @@ import lombok.NoArgsConstructor;
@Builder
public class LegalBasis {
private long id;
private String name;
private String description;
private String reason;

View File

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

View File

@ -48,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,
@RequestParam(value = APPROVER_ID_REQUEST_PARAM, required =false) String reviewerId);
@RequestParam(value = REVIEWER_ID_REQUEST_PARAM, required =false) String reviewerId);
@PostMapping(value = STATUS_PATH + "/underreview" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE)

View File

@ -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(columnDefinition = "text")
private String description;

View File

@ -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<>();
}

View File

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

View File

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

View File

@ -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);
}

View File

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

View File

@ -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);
}
}