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

Merge branch 'master' into OZG-4857-dms-export-kommentare

# Conflicts:
#	alfa-xdomea/src/main/java/de/ozgcloud/alfa/common/PrimaerdokumentTypeBuilder.java
#	alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/XdomeaNachrichtBuilder.java
#	alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/ExportServiceTest.java
parents b183fc74 78462442
No related branches found
No related tags found
No related merge requests found
......@@ -31,11 +31,13 @@ public class PrimaerdokumentTypeBuilder {
}
public PrimaerdokumentType build() {
if (ozgFile == null) {
throw new IllegalStateException("Can not build Primaerdokument when ozg file is null");
}
var primaerdokument = new PrimaerdokumentType();
if (ozgFile != null) {
primaerdokument.setDateiname(ExportFilenameGenerator.generateExportFilename(ozgFile));
primaerdokument.setDateinameOriginal(ozgFile.getName());
}
primaerdokument.setErsteller(ersteller);
if (createdAt != null) {
primaerdokument.setDatumUhrzeit(DateConverter.toXmlGregorianCalendar(createdAt));
......
......@@ -5,11 +5,13 @@ import java.util.Map;
import jakarta.xml.bind.Marshaller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
@Configuration
class ExportConfiguration {
......@@ -17,8 +19,7 @@ class ExportConfiguration {
static final String PROPERTY_NAMESPACE_PREFIX_MAPPER = "org.glassfish.jaxb.namespacePrefixMapper";
static final String CONTEXT_PATH = "de.xoev.xdomea";
@Autowired
private XdomeaNamespacePrefixMapper prefixMapper;
private final XdomeaNamespacePrefixMapper prefixMapper;
@Bean
Jaxb2Marshaller marshaller() {
......
......@@ -57,18 +57,26 @@ class XdomeaNachrichtBuilder {
}
public AbgabeAbgabe0401 build() {
representations.forEach(vorgang.getDokument()::add);
attachments.forEach(vorgang.getDokument()::add);
kommentare.forEach(vorgang.getDokument()::add);
var schriftgutobjekt = createSchriftgutobjekt();
addVorgangDokumente();
var abgabeType = new AbgabeAbgabe0401();
abgabeType.setKopf(kopf);
abgabeType.getSchriftgutobjekt().add(schriftgutobjekt);
return abgabeType;
}
private Schriftgutobjekt createSchriftgutobjekt() {
var schriftgutobjekt = new Schriftgutobjekt();
schriftgutobjekt.setVorgang(vorgang);
schriftgutobjekt.setAkte(aktenzeichen);
abgabeType.getSchriftgutobjekt().add(schriftgutobjekt);
return abgabeType;
return schriftgutobjekt;
}
void addVorgangDokumente() {
representations.forEach(vorgang.getDokument()::add);
attachments.forEach(vorgang.getDokument()::add);
kommentare.forEach(vorgang.getDokument()::add);
}
}
......@@ -10,6 +10,7 @@ import de.xoev.xdomea.DokumentType;
import de.xoev.xdomea.FormatType;
import de.xoev.xdomea.IdentifikationObjektType;
import de.xoev.xdomea.MediumCodeType;
import de.xoev.xdomea.PrimaerdokumentType;
import de.xoev.xdomea.VersionType;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
......@@ -48,12 +49,7 @@ public class DokumentTypeBuilder {
dokumentType.setIdentifikation(createIdentifikation());
dokumentType.setAllgemeineMetadaten(createAllgemeineMetadaten());
dokumentType.getVersion().add(createVersionType());
dokumentType.getVersion().get(0).getFormat().get(0).setPrimaerdokument(
PrimaerdokumentTypeBuilder.builder()
.withOzgFile(ozgFile)
.withErsteller(formEngineName)
.build()
);
dokumentType.getVersion().get(0).getFormat().get(0).setPrimaerdokument(createPrimaerdokument());
return dokumentType;
}
......@@ -93,4 +89,11 @@ public class DokumentTypeBuilder {
mediumCode.setCode(ALLGEMEINE_METADATEN_MEDIUM_CODE);
return mediumCode;
}
PrimaerdokumentType createPrimaerdokument() {
return PrimaerdokumentTypeBuilder.builder()
.withOzgFile(ozgFile)
.withErsteller(formEngineName)
.build();
}
}
......@@ -9,8 +9,6 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
import jakarta.validation.constraints.NotNull;
import org.springframework.stereotype.Component;
import de.ozgcloud.alfa.common.DateConverter;
......@@ -28,7 +26,7 @@ class FormDataMapper {
private final DatatypeMapper datatypeMapper;
public Antragsdaten toAntragsdaten(@NotNull VorgangWithEingang vorgang) {
public Antragsdaten toAntragsdaten(VorgangWithEingang vorgang) {
var antragsdaten = new Antragsdaten();
antragsdaten.getItem().addAll(mapFormData(vorgang));
antragsdaten.getItem().addAll(mapOtherData(vorgang));
......
......@@ -16,7 +16,7 @@ import de.ozgcloud.alfa.common.file.OzgFileTestFactory;
class PrimaerdokumentTypeBuilderTest {
private final PrimaerdokumentTypeBuilder builder = PrimaerdokumentTypeBuilder.builder();
private final PrimaerdokumentTypeBuilder builder = PrimaerdokumentTypeBuilder.builder().withOzgFile(OzgFileTestFactory.create());
@Nested
class TestBuild {
......@@ -46,13 +46,6 @@ class PrimaerdokumentTypeBuilderTest {
exportFilenameGeneratorMockedStatic.verify(() -> ExportFilenameGenerator.generateExportFilename(ozgFile));
}
@Test
void shouldNotGenerateExportFilename() {
builder.build();
exportFilenameGeneratorMockedStatic.verify(() -> ExportFilenameGenerator.generateExportFilename(null), never());
}
@Test
void shouldHaveDateiname() {
var primaerdokumentType = builder.withOzgFile(ozgFile).build();
......@@ -74,13 +67,6 @@ class PrimaerdokumentTypeBuilderTest {
assertThat(primaerdokumentType.getDateinameOriginal()).isEqualTo(OzgFileTestFactory.NAME);
}
@Test
void shouldNotHaveDateinameOriginal() {
var primaerdokumentType = builder.build();
assertThat(primaerdokumentType.getDateinameOriginal()).isNull();
}
@Test
void shouldHaveErsteller() {
var primaerdokumentType = builder.withErsteller(ERSTELLER).build();
......@@ -108,6 +94,11 @@ class PrimaerdokumentTypeBuilderTest {
assertThat(primaerdokumentType.getDatumUhrzeit().getYear()).isNegative();
}
@Test
void shouldThrowIllegalgStateException() {
assertThatThrownBy(() -> builder.withOzgFile(null).build()).isInstanceOf(IllegalStateException.class);
}
}
}
\ No newline at end of file
......@@ -110,6 +110,8 @@ class ExportServiceTest {
@Nested
class TestCollectExportData {
private MockedStatic<XdomeaNachrichtBuilder> xdomeaNachrichtBuilderMockedStatic;
private static final String FILENAME_ID = UUID.randomUUID().toString();
private static final String FILE_NAME = "file.zip";
private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
......@@ -123,24 +125,40 @@ class ExportServiceTest {
private final List<DokumentType> attachmentsDokumentTypes = List.of(DokumentTypeTestFactory.create());
private final List<DokumentType> kommentareDokumentTypes = List.of(DokumentTypeTestFactory.create());
private final MockedStatic<XdomeaNachrichtBuilder> xdomeaNachrichtBuilderMockedStatic = mockStatic(XdomeaNachrichtBuilder.class);
@Mock
private XdomeaNachrichtBuilder xdomeaNachrichtBuilder;
@BeforeEach
void setUp() {
setUpVorgangService();
setUpXdomeaNachrichtBuilder();
setUpExportFileService();
doReturn(FILE_NAME).when(service).buildXmlFilename(FILENAME_ID);
doReturn(EingangHeaderTestFactory.FORM_ENGINE_NAME).when(service).getFormEngineName(vorgang);
}
private void setUpVorgangService() {
when(exportVorgangService.getVorgang(VorgangHeaderTestFactory.ID)).thenReturn(vorgang);
when(exportVorgangService.createVorgangType(vorgang)).thenReturn(vorgangType);
when(exportVorgangService.createKopf(vorgang)).thenReturn(kopfType);
when(exportVorgangService.createAkteType(vorgang)).thenReturn(akteType);
}
private void setUpXdomeaNachrichtBuilder() {
xdomeaNachrichtBuilderMockedStatic = mockStatic(XdomeaNachrichtBuilder.class);
when(xdomeaNachrichtBuilder.withKopf(kopfType)).thenReturn(xdomeaNachrichtBuilder);
when(xdomeaNachrichtBuilder.withVorgang(vorgangType)).thenReturn(xdomeaNachrichtBuilder);
when(xdomeaNachrichtBuilder.withAktenzeichen(akteType)).thenReturn(xdomeaNachrichtBuilder);
when(xdomeaNachrichtBuilder.withRepresentations(representationsDokumentTypes)).thenReturn(xdomeaNachrichtBuilder);
when(xdomeaNachrichtBuilder.withAttachments(attachmentsDokumentTypes)).thenReturn(xdomeaNachrichtBuilder);
when(xdomeaNachrichtBuilder.withKommentare(kommentareDokumentTypes)).thenReturn(xdomeaNachrichtBuilder);
xdomeaNachrichtBuilderMockedStatic.when(XdomeaNachrichtBuilder::builder).thenReturn(xdomeaNachrichtBuilder);
when(xdomeaNachrichtBuilder.build()).thenReturn(abgabe);
}
private void setUpExportFileService() {
mockStreamToList(representations, stream -> when(exportFileService.getRepresentations(vorgang)).thenReturn(stream));
mockStreamToList(attachments, stream -> when(exportFileService.getAttachments(vorgang)).thenReturn(stream));
mockStreamToList(representationsDokumentTypes,
......@@ -150,13 +168,6 @@ class ExportServiceTest {
mockStreamToList(attachmentsDokumentTypes, stream ->
when(exportFileService.createDokumentTypes(attachments, EingangHeaderTestFactory.FORM_ENGINE_NAME)).thenReturn(stream));
mockStreamToList(kommentareDokumentTypes, stream -> when(exportKommentarService.createDokumentTypes(vorgang)).thenReturn(stream));
doReturn(FILE_NAME).when(service).buildXmlFilename(FILENAME_ID);
doReturn(EingangHeaderTestFactory.FORM_ENGINE_NAME).when(service).getFormEngineName(vorgang);
when(xdomeaNachrichtBuilder.build()).thenReturn(abgabe);
xdomeaNachrichtBuilderMockedStatic.when(XdomeaNachrichtBuilder::builder).thenReturn(xdomeaNachrichtBuilder);
}
@AfterEach
......@@ -529,7 +540,7 @@ class ExportServiceTest {
class TestGetFormEngineName {
@Test
void shouldReturnEmptyOnNullEingang() {
void shouldReturnEmptyStringOnNullEingang() {
var vorgang = VorgangWithEingangTestFactory.createBuilder().eingang(null).build();
var formEngineName = service.getFormEngineName(vorgang);
......
......@@ -54,31 +54,17 @@ class DokumentTypeBuilderTest {
@Nested
class TestBuild {
private MockedStatic<PrimaerdokumentTypeBuilder> primaerdokumentTypeBuilderMockedStatic;
@Mock
private PrimaerdokumentTypeBuilder primaerdokumentTypeBuilder;
private final IdentifikationObjektType identifikationObjekt = IdentifikationObjektTypeTestFactory.create();
private final AllgemeineMetadatenType allgemeineMetadaten = AllgemeineMetadatenTypeTestFactory.create();
private final VersionType versionType = VersionTypeTestFactory.create();
private final PrimaerdokumentType primaerdokumentType = PrimaerdokumentTypeTestFactory.create();
private final PrimaerdokumentType primaerdokument = PrimaerdokumentTypeTestFactory.create();
@BeforeEach
void setUp() {
primaerdokumentTypeBuilderMockedStatic = mockStatic(PrimaerdokumentTypeBuilder.class);
primaerdokumentTypeBuilderMockedStatic.when(PrimaerdokumentTypeBuilder::builder).thenReturn(primaerdokumentTypeBuilder);
doReturn(identifikationObjekt).when(builder).createIdentifikation();
doReturn(versionType).when(builder).createVersionType();
doReturn(allgemeineMetadaten).when(builder).createAllgemeineMetadaten();
when(primaerdokumentTypeBuilder.withOzgFile(ozgFile)).thenReturn(primaerdokumentTypeBuilder);
when(primaerdokumentTypeBuilder.withErsteller(FORM_ENGINE_NAME)).thenReturn(primaerdokumentTypeBuilder);
when(primaerdokumentTypeBuilder.build()).thenReturn(primaerdokumentType);
}
@AfterEach
void tearDown() {
primaerdokumentTypeBuilderMockedStatic.close();
doReturn(primaerdokument).when(builder).createPrimaerdokument();
}
@Test
......@@ -124,32 +110,19 @@ class DokumentTypeBuilderTest {
}
@Test
void shouldPrimaerdokumentWithOzgFile() {
builder.build();
verify(primaerdokumentTypeBuilder).withOzgFile(ozgFile);
}
@Test
void shouldPrimaerdokumentWithErsteller() {
builder.build();
verify(primaerdokumentTypeBuilder).withErsteller(FORM_ENGINE_NAME);
}
@Test
void shouldBuildPrimaerdokumentType() {
void shouldCreatePrimaerdokument() {
builder.build();
verify(primaerdokumentTypeBuilder).build();
verify(builder).createPrimaerdokument();
}
@Test
void shouldHavePrimaerdokument() {
var dokument = builder.build();
assertThat(dokument.getVersion().get(0).getFormat().get(0).getPrimaerdokument()).isEqualTo(primaerdokumentType);
assertThat(dokument.getVersion().get(0).getFormat().get(0).getPrimaerdokument()).isEqualTo(primaerdokument);
}
}
@Nested
......@@ -195,14 +168,14 @@ class DokumentTypeBuilderTest {
}
@Test
void shouldHaveKennzeichen() {
void shouldHaveEmptyKennzeichen() {
var allgemeineMetadaten = builder.createAllgemeineMetadaten();
assertThat(allgemeineMetadaten.getKennzeichen()).isEmpty();
}
@Test
void shouldHaveBemerkung() {
void shouldHaveEmptyBemerkung() {
var allgemeineMetadaten = builder.createAllgemeineMetadaten();
assertThat(allgemeineMetadaten.getBemerkung()).isEmpty();
......@@ -275,4 +248,56 @@ class DokumentTypeBuilderTest {
}
}
@Nested
class TestCreatePrimaerdokument {
private MockedStatic<PrimaerdokumentTypeBuilder> primaerdokumentTypeBuilderMockedStatic;
@Mock
private PrimaerdokumentTypeBuilder primaerdokumentTypeBuilder;
private final PrimaerdokumentType primaerdokumentType = PrimaerdokumentTypeTestFactory.create();
@BeforeEach
void setUp() {
primaerdokumentTypeBuilderMockedStatic = mockStatic(PrimaerdokumentTypeBuilder.class);
primaerdokumentTypeBuilderMockedStatic.when(PrimaerdokumentTypeBuilder::builder).thenReturn(primaerdokumentTypeBuilder);
when(primaerdokumentTypeBuilder.withOzgFile(ozgFile)).thenReturn(primaerdokumentTypeBuilder);
when(primaerdokumentTypeBuilder.withErsteller(FORM_ENGINE_NAME)).thenReturn(primaerdokumentTypeBuilder);
when(primaerdokumentTypeBuilder.build()).thenReturn(primaerdokumentType);
}
@AfterEach
void tearDown() {
primaerdokumentTypeBuilderMockedStatic.close();
}
@Test
void shouldCreatePrimaerdokumentWithOzgFile() {
builder.createPrimaerdokument();
verify(primaerdokumentTypeBuilder).withOzgFile(ozgFile);
}
@Test
void shouldCreatePrimaerdokumentWithErsteller() {
builder.createPrimaerdokument();
verify(primaerdokumentTypeBuilder).withErsteller(FORM_ENGINE_NAME);
}
@Test
void shouldBuildPrimaerdokument() {
builder.createPrimaerdokument();
verify(primaerdokumentTypeBuilder).build();
}
@Test
void shouldReturnBuildPrimaerdokument() {
var primaerdokument = builder.createPrimaerdokument();
assertThat(primaerdokument).isEqualTo(primaerdokument);
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment