From 7c16fed9e13a58df863d3c39e789d7a1d96c79a0 Mon Sep 17 00:00:00 2001 From: OZG-Cloud Team <noreply@ozg-sh.de> Date: Thu, 11 Jul 2024 11:35:29 +0200 Subject: [PATCH] OZG-5808 Xdomea: Simplify xpath expression for xmlcode --- .../eingang/xdomea/XdomeaXMLValueReader.java | 37 +++---------------- 1 file changed, 6 insertions(+), 31 deletions(-) diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReader.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReader.java index 6c816be7..c45f6823 100644 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReader.java +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaXMLValueReader.java @@ -22,28 +22,15 @@ import de.ozgcloud.eingang.common.formdata.IncomingFile; public class XdomeaXMLValueReader { private static final String DATEINAME_NODE_QUERY_STRING = "//Hauptobjekt//Dateiname"; - private static final XPathExpression DATEINAME_NODE_QUERY = compileXPathExpression(DATEINAME_NODE_QUERY_STRING); - - // Query für XML-Dateien in Anlagen - // Siehe auch https://www.xrepository.de/details/urn:xoev-de:xdomea:kosit:standard:xdomea - // und https://www.xrepository.de/details/urn:xoev-de:xdomea:codeliste:dateiformat - public static final String ANLAGE_NODE_QUERY_DFOERDER = "//Anlage//Format/Name[@listURI='urn:xoev-de:xdomea:codeliste:dateiformat']/code[.='030']/../..//Dateiname"; - public static final String ANLAGE_NODE_QUERY_AFM = "//Anlage//Format/Name[substring(., 1, 3)='030']/..//Dateiname"; - public static final String ANLAGE_NODE_QUERY_STRING = ANLAGE_NODE_QUERY_DFOERDER + " | " + ANLAGE_NODE_QUERY_AFM; - private static final XPathExpression ANLAGE_NODE_QUERY = compileXPathExpression(ANLAGE_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) { var parsedXML = XMLHelper.parseDocument(xdomeaXMLFile).getDocumentElement(); - return Stream.concat( - getTextsFromNodes( - queryDateinameNodeList( - parsedXML - )), - getTextsFromNodes( - queryAnlageNodeList( - parsedXML - )) - ).toList(); + return getTextsFromNodes(queryDateinameNodeList(parsedXML)).toList(); } private NodeList queryDateinameNodeList(Element contextElement) { @@ -58,18 +45,6 @@ public class XdomeaXMLValueReader { } } - private NodeList queryAnlageNodeList(Element contextElement) { - try { - return (NodeList) ANLAGE_NODE_QUERY - .evaluate( - contextElement, - XPathConstants.NODESET - ); - } catch (XPathExpressionException e) { - throw new TechnicalException("Failed to execute xpath search!", e); - } - } - private Stream<String> getTextsFromNodes(NodeList nodeList) { return streamNodeList(nodeList) .map(Node::getTextContent) -- GitLab