Skip to content
Snippets Groups Projects
Commit 3348cc41 authored by OZG-Cloud Team's avatar OZG-Cloud Team
Browse files

Merge pull request 'OZG-5808 XML-Anhänge von Eingängen über XTA/NB immer als...

Merge pull request 'OZG-5808 XML-Anhänge von Eingängen über XTA/NB immer als Repräsentation behandeln' (#147) from OZG-5808-xml-immer-als-representation into master

Reviewed-on: https://git.ozg-sh.de/ozgcloud-app/eingang-manager/pulls/147


Reviewed-by: default avatarOZG-Cloud Team <noreply@ozg-sh.de>
parents b4898ca1 88f8cdc4
No related branches found
No related tags found
No related merge requests found
...@@ -22,7 +22,11 @@ import de.ozgcloud.eingang.common.formdata.IncomingFile; ...@@ -22,7 +22,11 @@ import de.ozgcloud.eingang.common.formdata.IncomingFile;
public class XdomeaXMLValueReader { public class XdomeaXMLValueReader {
private static final String DATEINAME_NODE_QUERY_STRING = "//Hauptobjekt//Dateiname"; private static final String DATEINAME_NODE_QUERY_STRING = "//Hauptobjekt//Dateiname";
private static final XPathExpression DATEINAME_NODE_QUERY = compileXPathExpression(DATEINAME_NODE_QUERY_STRING); // Interpret XML-Attachments as representations
// XML filetype code: 030 (see https://www.xrepository.de/details/urn:xoev-de:xdomea:codeliste:dateiformat)
private static final String DATEINAME_NODE_FOR_XML_ANHANG_QUERY_STRING = "//Anlage//Format/Name[contains(., '030')]/..//Dateiname";
private static final XPathExpression DATEINAME_NODE_QUERY = compileXPathExpression(
DATEINAME_NODE_QUERY_STRING + "|" + DATEINAME_NODE_FOR_XML_ANHANG_QUERY_STRING);
public List<String> readRepresentationFileNames(IncomingFile xdomeaXMLFile) { public List<String> readRepresentationFileNames(IncomingFile xdomeaXMLFile) {
return getTextsFromNodes( return getTextsFromNodes(
......
...@@ -4,7 +4,6 @@ import static org.assertj.core.api.Assertions.*; ...@@ -4,7 +4,6 @@ import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.List;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.DisplayName;
...@@ -22,6 +21,7 @@ import lombok.SneakyThrows; ...@@ -22,6 +21,7 @@ import lombok.SneakyThrows;
class XdomeaXMLValueReaderTest { class XdomeaXMLValueReaderTest {
private static final String XML_FILE_NAME = "file.xml"; private static final String XML_FILE_NAME = "file.xml";
private static final String PDF_FILE_NAME = "file.pdf"; private static final String PDF_FILE_NAME = "file.pdf";
private static final String XML_ATTACHMENT_FILE_NAME = "saml-attachment-file.xml";
@Spy @Spy
@InjectMocks @InjectMocks
...@@ -34,7 +34,7 @@ class XdomeaXMLValueReaderTest { ...@@ -34,7 +34,7 @@ class XdomeaXMLValueReaderTest {
@Mock @Mock
IncomingFile incomingXmlFile; IncomingFile incomingXmlFile;
@DisplayName("should find 'Dateiname' elements in MSR mantelantrag") @DisplayName("should find 'Dateiname' elements and all XML-files in MSR mantelantrag")
@ParameterizedTest @ParameterizedTest
@ValueSource(strings = { @ValueSource(strings = {
"xdomea/mantelantrag_Geschaeftsgang.Geschaeftsgang.0201.xml", "xdomea/mantelantrag_Geschaeftsgang.Geschaeftsgang.0201.xml",
...@@ -45,12 +45,13 @@ class XdomeaXMLValueReaderTest { ...@@ -45,12 +45,13 @@ class XdomeaXMLValueReaderTest {
var xmlString = TestUtils.loadTextFile( var xmlString = TestUtils.loadTextFile(
antragXMLFilename, antragXMLFilename,
XML_FILE_NAME + "\n", XML_FILE_NAME + "\n",
PDF_FILE_NAME); PDF_FILE_NAME,
"\n" + XML_ATTACHMENT_FILE_NAME + "\n");
when(incomingXmlFile.getContentStream()).thenReturn(IOUtils.toInputStream(xmlString, StandardCharsets.UTF_8)); when(incomingXmlFile.getContentStream()).thenReturn(IOUtils.toInputStream(xmlString, StandardCharsets.UTF_8));
var names = valueReader.readRepresentationFileNames(incomingXmlFile); var names = valueReader.readRepresentationFileNames(incomingXmlFile);
assertThat(names).isEqualTo(List.of(XML_FILE_NAME, PDF_FILE_NAME)); assertThat(names).containsExactly(XML_FILE_NAME, PDF_FILE_NAME, XML_ATTACHMENT_FILE_NAME);
} }
} }
......
...@@ -104,4 +104,35 @@ ...@@ -104,4 +104,35 @@
</Verfuegung> </Verfuegung>
</Beteiligungsschritt> </Beteiligungsschritt>
</ExternerGeschaeftsgang> </ExternerGeschaeftsgang>
<Anlage>
<Dokument>
<Identifikation>
<ID>1d8ca22a-9d20-4507-aa5e-b764bb5642f0</ID>
</Identifikation>
<Typ>Anlage</Typ>
<Version>
<Nummer>1</Nummer>
<Format>
<Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" xsi:type="DateiformatCodeType">
<code xmlns="">030</code>
<name xmlns="">xml-eXtensible Markup Language</name>
</Name>
<Version>0.0</Version>
<Primaerdokument>
<Dateiname>%s</Dateiname>
</Primaerdokument>
</Format>
<Format>
<Name listURI="urn:xoev-de:xdomea:codeliste:dateiformat" listVersionID="1.0" xsi:type="DateiformatCodeType">
<code xmlns="">018</code>
<name xmlns="">pdf-Portable Document Format</name>
</Name>
<Version>0.0</Version>
<Primaerdokument>
<Dateiname>anhang.pdf</Dateiname>
</Primaerdokument>
</Format>
</Version>
</Dokument>
</Anlage>
</Geschaeftsgang.Geschaeftsgang.0201> </Geschaeftsgang.Geschaeftsgang.0201>
...@@ -96,4 +96,37 @@ ...@@ -96,4 +96,37 @@
</xdomea:Verfuegung> </xdomea:Verfuegung>
</xdomea:Beteiligungsschritt> </xdomea:Beteiligungsschritt>
</xdomea:ExternerGeschaeftsgang> </xdomea:ExternerGeschaeftsgang>
<xdomea:Anlage>
<xdomea:Dokument>
<xdomea:Identifikation>
<xdomea:ID>1d8ca22a-9d20-4507-aa5e-b764bb5642f0</xdomea:ID>
</xdomea:Identifikation>
<xdomea:Typ>Anlage</xdomea:Typ>
<xdomea:Version>
<xdomea:Nummer>1</xdomea:Nummer>
<xdomea:Format>
<xdomea:Name codeName="xml - eXtensible Markup Language"
codelistAgencyName="AG XDOMEA des KoopA ADV" codelistVersionIdentifier="2.0.0"
languageCode="de" codelistName="Dateiformat">030
</xdomea:Name>
<xdomea:Version>0.0</xdomea:Version>
<xdomea:Primaerdokument>
<xdomea:Dateiname>%s</xdomea:Dateiname>
</xdomea:Primaerdokument>
</xdomea:Format>
</xdomea:Version>
<xdomea:Version>
<xdomea:Nummer>1</xdomea:Nummer>
<xdomea:Format>
<xdomea:Name codeName="pdf - Portable Document Format" codelistAgencyName="AG XDOMEA des KoopA ADV"
codelistVersionIdentifier="2.0.0" languageCode="de" codelistName="Dateiformat">018
</xdomea:Name>
<xdomea:Version>0.0</xdomea:Version>
<xdomea:Primaerdokument>
<xdomea:Dateiname>anhang.pdf</xdomea:Dateiname>
</xdomea:Primaerdokument>
</xdomea:Format>
</xdomea:Version>
</xdomea:Dokument>
</xdomea:Anlage>
</xdomea:Geschaeftsgang.Geschaeftsgang.0201> </xdomea:Geschaeftsgang.Geschaeftsgang.0201>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment