Pull request #73: enumerated type -> int to string in db

Merge in RED/persistence-service from 3.0-efsa-readiness to master

* commit '693a92bf10960a0e4664964a0e1e696792a0df7d':
  unique constraint fix
  unique constraint fix
  enumerated type -> int to string in db
This commit is contained in:
Timo Bejan 2021-10-17 16:58:54 +02:00
commit 6dea6e1c18
18 changed files with 47 additions and 10 deletions

View File

@ -23,6 +23,7 @@ public class IdRemovalEntity {
@Column(name = "user_id")
private String user;
@Column
@Enumerated(EnumType.STRING)
private AnnotationStatus status;
@Column
private boolean removeFromDictionary;

View File

@ -23,6 +23,7 @@ public class ManualForceRedactionEntity {
@Column(name = "user_id")
private String user;
@Column
@Enumerated(EnumType.STRING)
private AnnotationStatus status;
@Column(length = 4000)
private String legalBasis;

View File

@ -23,6 +23,7 @@ public class ManualImageRecategorizationEntity {
@Column(name = "user_id")
private String user;
@Column
@Enumerated(EnumType.STRING)
private AnnotationStatus status;
@Column
private String typeId;

View File

@ -24,6 +24,7 @@ public class ManualLegalBasisChangeEntity {
@Column(name = "user_id")
private String user;
@Column
@Enumerated(EnumType.STRING)
private AnnotationStatus status;
@Column
private String legalBasis;

View File

@ -33,6 +33,7 @@ public class ManualRedactionEntryEntity {
@Column
private String legalBasis;
@Column
@Enumerated(EnumType.STRING)
private AnnotationStatus status;
@Column
private boolean addToDictionary;

View File

@ -32,6 +32,7 @@ public class WatermarkEntity {
@Column
private String fontType;
@Column
@Enumerated(EnumType.STRING)
private WatermarkOrientation orientation;
@JsonIgnore

View File

@ -27,6 +27,7 @@ public class DossierAttributeConfigEntity {
private String placeholder;
@Column
@Enumerated(EnumType.STRING)
private DossierAttributeType type = DossierAttributeType.TEXT;

View File

@ -52,6 +52,7 @@ public class DossierEntity {
@Builder.Default
@ElementCollection
@Enumerated(EnumType.STRING)
private Set<DownloadFileType> downloadFileTypes = new HashSet<>();
@Column

View File

@ -27,7 +27,7 @@ public class DossierTemplateEntity {
@Id
private String id;
@Column
@Column(unique = true)
private String name;
@Column(length = 4000)
@ -55,6 +55,7 @@ public class DossierTemplateEntity {
private boolean deleted;
@ElementCollection
@Enumerated(EnumType.STRING)
private Set<DownloadFileType> downloadFileTypes = new HashSet<>();
@JsonIgnore

View File

@ -34,6 +34,7 @@ public class FileAttributeConfigEntity {
@Column
private String placeholder;
@Column
@Enumerated(EnumType.STRING)
private FileAttributeType type = FileAttributeType.TEXT;
@ManyToOne

View File

@ -29,9 +29,11 @@ public class FileEntity {
private String filename;
@Column
@Enumerated(EnumType.STRING)
private FileStatus status;
@Column
@Enumerated(EnumType.STRING)
private FileStatus lastSuccessfulStatus;
@Column

View File

@ -31,6 +31,7 @@ public class DownloadStatusEntity {
@Column
private String mimeType;
@Column
@Enumerated(EnumType.STRING)
private DownloadStatusValue status;
@Column
private OffsetDateTime creationDate;
@ -46,6 +47,7 @@ public class DownloadStatusEntity {
private List<FileEntity> files = new ArrayList<>();
@ElementCollection
@Enumerated(EnumType.STRING)
private List<DownloadFileType> downloadFileTypes = new ArrayList<>();

View File

@ -6,7 +6,9 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.BadRe
import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException;
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
import lombok.extern.slf4j.Slf4j;
import org.postgresql.util.PSQLException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
@ -55,4 +57,15 @@ public class ControllerAdvice {
public ErrorMessage handleIBadRequestException(BadRequestException e) {
return new ErrorMessage(OffsetDateTime.now(), e.getMessage());
}
@ResponseBody
@ExceptionHandler(value = PSQLException.class)
public ResponseEntity<ErrorMessage> handleSQLException(PSQLException e) {
if (e.getMessage().contains("violates unique constraint")) {
return new ResponseEntity<>(new ErrorMessage(OffsetDateTime.now(), "Unique constraint violation"), HttpStatus.CONFLICT);
} else {
log.error("PLSQL Exception occurred: {}", e.getMessage(), e);
return new ResponseEntity<>(new ErrorMessage(OffsetDateTime.now(), "SQL Exception"), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}

View File

@ -29,11 +29,11 @@ public class DossierTesterAndProvider {
return provideTestDossier(testTemplate, "Dossier1");
}
public Dossier provideTestDossier(DossierTemplate testTemplate, String filename) {
public Dossier provideTestDossier(DossierTemplate testTemplate, String dossierName) {
CreateOrUpdateDossierRequest cru = new CreateOrUpdateDossierRequest();
cru.setDownloadFileTypes(Sets.newHashSet(DownloadFileType.ORIGINAL));
cru.setDossierName(filename);
cru.setDescription(filename);
cru.setDossierName(dossierName);
cru.setDescription(dossierName);
cru.setWatermarkEnabled(true);
cru.setMemberIds(Sets.newHashSet("1"));
cru.setOwnerId("1");
@ -45,7 +45,7 @@ public class DossierTesterAndProvider {
Dossier result = dossierClient.addDossier(cru);
assertThat(result.getDossierName()).isEqualTo(filename);
assertThat(result.getDossierName()).isEqualTo(dossierName);
Dossier loadedDossier = dossierClient.getDossierById(result.getId(),false);

View File

@ -2,6 +2,7 @@ package com.iqser.red.service.peristence.v1.server.integration.tests;
import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatsClient;
import com.iqser.red.service.peristence.v1.server.integration.client.FileClient;
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider;
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;
@ -22,6 +23,9 @@ import static org.assertj.core.api.Assertions.assertThat;
public class DossierStatsTest extends AbstractPersistenceServerServiceTest {
private static final int NUMBER_PAGES_ANALYZED = 5;
@Autowired
private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider;
@Autowired
private DossierTesterAndProvider dossierTesterAndProvider;
@ -40,7 +44,8 @@ public class DossierStatsTest extends AbstractPersistenceServerServiceTest {
@Before
public void setupData() {
dossier1 = dossierTesterAndProvider.provideTestDossier();
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
dossier1 = dossierTesterAndProvider.provideTestDossier(dossierTemplate);
//provides 2 files
var file1 = fileTesterAndProvider.testAndProvideFile(dossier1, "file1");
var file2 = fileTesterAndProvider.testAndProvideFile(dossier1, "file2");
@ -66,7 +71,7 @@ public class DossierStatsTest extends AbstractPersistenceServerServiceTest {
});
// second dossier
dossier2 = dossierTesterAndProvider.provideTestDossier("Dossier2");
dossier2 = dossierTesterAndProvider.provideTestDossier(dossierTemplate,"Dossier2");
var file3 = fileTesterAndProvider.testAndProvideFile(dossier2, "file3");
var file4 = fileTesterAndProvider.testAndProvideFile(dossier2, "file4");

View File

@ -4,6 +4,7 @@ import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemp
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider;
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest;
import feign.FeignException;
import org.junit.Test;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -21,9 +22,13 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
@Test
public void testDossierTemplate() {
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
try {
dossierTemplateTesterAndProvider.provideTestTemplate();
} catch (FeignException e) {
assertThat(e.status()).isEqualTo(409);
}
var allTemplates = dossierTemplateClient.getAllDossierTemplates();
assertThat(allTemplates.size()).isEqualTo(1);

View File

@ -69,7 +69,7 @@ public class DownloadPreparationTest extends AbstractPersistenceServerServiceTes
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
var dossier = dossierTesterAndProvider.provideTestDossier();
var dossier = dossierTesterAndProvider.provideTestDossier(dossierTemplate);
var file = fileTesterAndProvider.testAndProvideFile(dossier);

View File

@ -78,7 +78,7 @@ public class TypeTest extends AbstractPersistenceServerServiceTest {
assertThat(typesForTemplate).isEmpty();
var dossier = dossierTesterAndProvider.provideTestDossier();
var dossier = dossierTesterAndProvider.provideTestDossier(dossierTemplate);
var dossierType = typeProvider.testAndProvideType(dossierTemplate, dossier, "dossier-dict");
var typesForDossier = dictionaryClient.getAllTypesForDossier(dossierType.getDossierId());