Skip to content
Snippets Groups Projects
Commit 8fcd2a94 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-1701 add zip-attachements and ozgContainer

parent 4314acad
No related branches found
No related tags found
No related merge requests found
......@@ -25,6 +25,14 @@ class EingangData {
class FsFormData {
private String identifier;
private List<FsPanel> panels;
private OzgContainer ozgContainer;
}
@Getter
@Builder
class OzgContainer {
private String fimId;
private List<String> leikaIds;
}
@Getter
......
......@@ -11,10 +11,12 @@ import java.util.stream.Collectors;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.NullValueCheckStrategy;
import org.springframework.http.MediaType;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
import de.itvsh.kop.eingangsadapter.common.formdata.FormHeader;
import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile;
import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup;
@Mapper(nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
interface EingangDataMapper {
......@@ -24,13 +26,15 @@ interface EingangDataMapper {
static final Predicate<FsComponent> IS_NODE_COMPONENT = component -> Objects.isNull(component.getComponents());
static final String FILE_NAME_PDF_REP = "eingang.pdf";
static final String PDF_CONTENT_TYPE = "application/pdf";
static final String PDF_CONTENT_TYPE = MediaType.APPLICATION_PDF_VALUE;
static final String FILE_NAME_ZIP_ATTACHMENT = "attachments.zip";
static final String ZIP_CONTENT_TYPE = "application/zip";
@Mapping(target = "id", ignore = true)
@Mapping(target = "antragsteller", ignore = true)
@Mapping(target = "zustaendigeStelle", ignore = true)
@Mapping(target = "attachments", ignore = true)
@Mapping(target = "numberOfAttachments", ignore = true)
@Mapping(target = "attachments", expression = "java(mapZipRepresentation(data.getZip()))")
@Mapping(target = "numberOfAttachments", constant = "1")
@Mapping(target = "representations", expression = "java(mapPdfRepresentation(data.getPdf()))")
@Mapping(target = "numberOfRepresentations", constant = "1")
@Mapping(target = "header", expression = "java(mapHeader(data))")
......@@ -70,6 +74,25 @@ interface EingangDataMapper {
.build());
}
default List<IncomingFileGroup> mapZipRepresentation(byte[] zip) {
if (Objects.isNull(zip) || zip.length == 0) {
return Collections.emptyList();
}
var files = List.of(IncomingFile.builder()
.id(UUID.randomUUID().toString()) // TODO should be set by database
.name(FILE_NAME_ZIP_ATTACHMENT)
.content(zip)
.contentType(ZIP_CONTENT_TYPE)
.size(zip.length)
.build());
return List.of(IncomingFileGroup.builder()
.name("gezippte Anhänge")
.files(files)
.build());
}
default FormHeader mapHeader(EingangData data) {
return FormHeader.builder()
.formName(data.getFormData().getIdentifier())
......
......@@ -73,6 +73,78 @@ class EingangDataMapperTest {
}
}
@Nested
class MapZipRepresentation {
@Test
void shouldReturnEmptyListForNull() {
var formData = mapper.mapToFormData(EingangDataTestFactory.createBuilder().zip(null).build());
assertThat(formData.getAttachments()).isEmpty();
}
@Test
void shouldReturnEmptyListForEmptyArray() {
var formData = mapper.mapToFormData(EingangDataTestFactory.createBuilder().zip(new byte[0]).build());
assertThat(formData.getAttachments()).isEmpty();
}
@Test
void shouldHaveAttachment() {
var formData = mapper.mapToFormData(EingangDataTestFactory.create());
assertThat(formData.getAttachments()).hasSize(1);
}
@Test
void shouldHaveId() {
var file = mapAndGetFile();
assertThat(file.getId()).isNotEmpty();
}
@Test
void shouldHaveName() {
var file = mapAndGetFile();
assertThat(file.getName()).isEqualTo(EingangDataMapper.FILE_NAME_ZIP_ATTACHMENT);
}
@Test
void shouldHaveContent() {
var file = mapAndGetFile();
assertThat(file.getContent()).isEqualTo(IncomingFileTestFactory.CONTENT);
}
@Test
void shouldHaveContentType() {
var file = mapAndGetFile();
assertThat(file.getContentType()).isEqualTo(EingangDataMapper.ZIP_CONTENT_TYPE);
}
@Test
void shouldHaveSize() {
var file = mapAndGetFile();
assertThat(file.getSize()).isEqualTo(IncomingFileTestFactory.SIZE);
}
@Test
void numberShoultBeOne() {
var formData = mapper.mapToFormData(EingangDataTestFactory.create());
assertThat(formData.getNumberOfAttachments()).isEqualTo(1);
}
private IncomingFile mapAndGetFile() {
var group = mapper.mapToFormData(EingangDataTestFactory.create()).getAttachments().get(0);
return group.getFiles().get(0);
}
}
@Nested
class MapPdfRepresentation {
......@@ -83,6 +155,13 @@ class EingangDataMapperTest {
assertThat(formData.getRepresentations()).hasSize(1);
}
@Test
void shouldHaveId() {
var file = mapAndGetFile();
assertThat(file.getId()).isNotEmpty();
}
@Test
void shouldHaveName() {
var file = mapAndGetFile();
......
......@@ -11,6 +11,7 @@ class EingangDataTestFactory {
static final EingangData.EingangDataBuilder createBuilder() {
return EingangData.builder()
.formData(FsFormDataTestFactory.create())
.pdf(IncomingFileTestFactory.CONTENT);
.pdf(IncomingFileTestFactory.CONTENT)
.zip(IncomingFileTestFactory.CONTENT);
}
}
......@@ -39,8 +39,15 @@ class SendFormEndpointITCase {
"stringValue": "22.05.1996"
}
]}
],
"ozgContainer": {
"fimId": "S12345678",
"leikaIds": [
"123456890",
"223456890"
]
}
}
}""";
@Nested
......@@ -171,6 +178,24 @@ class SendFormEndpointITCase {
}
}
@Nested
class ParseAttachmentZip {
// TODO move to file when TestUtils available
private final String zipAttachment = """
{
"assistant":{},
"zip":"TG9yZW0gaXBzdW0="
}
""";
@Test
void shouldHaveZip() {
var parsed = endpoint.parseJsonData(zipAttachment);
assertThat(parsed.getZip()).isNotNull().isEqualTo("Lorem ipsum".getBytes());
}
}
private FsPanel parseAndGetPanel(String json) {
return endpoint.parseJsonData(json).getFormData().getPanels().get(0);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment