diff --git a/.gitignore b/.gitignore index c269b4ff0d7b6ec54a7675afa1abff0016ce60b0..632a35305a38b41147b39e815e6da13d89714d74 100644 --- a/.gitignore +++ b/.gitignore @@ -1,21 +1,3 @@ - -# / -/*.iml -/target -/.project -/.settings -/.idea - -# /MessageContentAnalyzer-ejb/ -/MessageContentAnalyzer-ejb/*.iml -/MessageContentAnalyzer-ejb/target -/MessageContentAnalyzer-ejb/.project -/MessageContentAnalyzer-ejb/.settings -/MessageContentAnalyzer-ejb/null - -# /MessageContentAnalyzer-war/ -/MessageContentAnalyzer-war/*.iml -/MessageContentAnalyzer-war/target -/MessageContentAnalyzer-war/.project -/MessageContentAnalyzer-war/.settings -/MessageContentAnalyzer-war/overlays +.idea/ +*.iml +target/ \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..cc9a62b06d5a04a0e1cef5dafaa8f2b14e9b55d3 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,34 @@ +# Define templates +include: + - project: 'gazelle/private/gitlab-ci-templates' + file: 'extends.yaml' + ref: 'master' + +# Define stages +stages: + - build + - postbuild + - deploy + - tests + - release + - upgrade + - cleanup + +# Define global variables +variables: + P_NAME: "message-content-analyzer" + P_APP_TYPE: "java" + P_CODE_SRC_PATH: "." + P_MAVEN_IMAGE_TAG: "3.6.3-jdk-8" + + +# Define jobs +code: + stage: build + extends: + - .buildCodeForJava + +quality: + stage: tests + extends: + - .testQualityForJavaWithSonarqube diff --git a/MessageContentAnalyzer-ejb/pom.xml b/MessageContentAnalyzer-ejb/pom.xml index 9c624f3ff9f67ffba4b6eb63d8bd927dc8ee3193..7f3a8963175add3d721cc28483b1e12dae5df0dd 100644 --- a/MessageContentAnalyzer-ejb/pom.xml +++ b/MessageContentAnalyzer-ejb/pom.xml @@ -152,6 +152,12 @@ <type>test-jar</type> </dependency> + <dependency> + <groupId>com.fasterxml.woodstox</groupId> + <artifactId>woodstox-core</artifactId> + <version>6.2.6</version> + </dependency> + <!-- Apache --> <dependency> @@ -162,7 +168,7 @@ <dependency> <groupId>org.apache.tika</groupId> <artifactId>tika-core</artifactId> - <version>1.14</version> + <version>1.17</version> <exclusions> <exclusion> <groupId>org.codelibs</groupId> diff --git a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/app/AnalyzerBeanBusiness.java b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/app/AnalyzerBeanBusiness.java index 0d5b9bc1c393f79440699c09bbcce1e608556c59..bc10185a4d5a167a183d4ed987a8b5a89efdcb5a 100644 --- a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/app/AnalyzerBeanBusiness.java +++ b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/app/AnalyzerBeanBusiness.java @@ -18,9 +18,6 @@ import org.jboss.seam.contexts.Lifecycle; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.faces.context.ExternalContext; -import javax.faces.context.FacesContext; -import javax.persistence.EntityManager; import javax.xml.bind.DatatypeConverter; import java.io.File; import java.io.IOException; diff --git a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/McaApiImpl.java b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/McaApiImpl.java index 9b1929a7069e01e569819e0ad693ce74391a7866..efc7afba7a7b0d475baa44ba0b7a3564472fea10 100644 --- a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/McaApiImpl.java +++ b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/McaApiImpl.java @@ -1,5 +1,6 @@ package net.ihe.gazelle.contentanalyzer.business; +import net.ihe.gazelle.contentanalyzer.business.analyzers.XMLAnalyzer; import net.ihe.gazelle.contentanalyzer.business.exceptions.UnexpectedAnalysisException; import net.ihe.gazelle.contentanalyzer.business.model.*; import net.ihe.gazelle.contentanalyzer.business.model.config.McaConfigDAO; @@ -30,6 +31,9 @@ public class McaApiImpl implements McaApi, Serializable { @In(create = true, value = "mcaConfigDao") private McaConfigDAO mcaConfigDAO; + @In(create = true, value = "xmlAnalyzer") + private XMLAnalyzer xmlAnalyzer; + public McaApiImpl(){ } @@ -49,6 +53,10 @@ public class McaApiImpl implements McaApi, Serializable { this.mcaConfigDAO = mcaConfigDAO; } + public void setXmlAnalyzer(XMLAnalyzer xmlAnalyzer) { + this.xmlAnalyzer = xmlAnalyzer; + } + @Override public AnalyzedObjectInterface analyze(byte[] messageByteContent, byte[] messageName) throws UnexpectedAnalysisException { @@ -68,7 +76,7 @@ public class McaApiImpl implements McaApi, Serializable { final AnalyzedObjectPart parent = new AnalyzedObjectPart(null); parent.setDocType("DOCUMENT"); parent.setEncodedType(EncodedType.NOT_ENCODED); - final MessageContentAnalyzer mca = new MessageContentAnalyzer(messageName); + final MessageContentAnalyzer mca = new MessageContentAnalyzer(xmlAnalyzer, messageName); parent.setStartOffset(0); parent.setEndOffset(new String(messageByteContent, StandardCharsets.UTF_8).length()); diff --git a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/MessageContentAnalyzer.java b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/MessageContentAnalyzer.java index 08127a6c9410648a8c99b7934716c4414fc94581..8953632c00faf3fae1a7ff048a107ff9849f80fc 100644 --- a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/MessageContentAnalyzer.java +++ b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/MessageContentAnalyzer.java @@ -20,7 +20,7 @@ public class MessageContentAnalyzer { private byte[] messageName; - private XMLAnalyzer xmlAnalyzer = new XMLAnalyzer(); + private XMLAnalyzer xmlAnalyzer; private MimeTypeDetector mimeTypeDetector = new MimeTypeDetector(); @@ -28,10 +28,12 @@ public class MessageContentAnalyzer { private B64Analyzer b64Analyzer = new B64Analyzer(); - public MessageContentAnalyzer(){ + public MessageContentAnalyzer(XMLAnalyzer xmlAnalyzer) { + this(xmlAnalyzer, null); } - public MessageContentAnalyzer(byte[] messageName){ + public MessageContentAnalyzer(XMLAnalyzer xmlAnalyzer, byte[] messageName){ + this.xmlAnalyzer = xmlAnalyzer; if (messageName != null){ this.messageName = messageName.clone(); } else { @@ -71,10 +73,6 @@ public class MessageContentAnalyzer { } } - public XMLAnalyzer getXmlAnalyzer() { - return xmlAnalyzer; - } - public void analyzeMessageContent(byte[] messageBytesContent, final AnalyzedObjectPart parent, McaConfigDAO mcaConfigDAO) throws UnexpectedAnalysisException { diff --git a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/B64Analyzer.java b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/B64Analyzer.java index 5873c036515c60556f6d684edba4756d41f07911..d32f1c5603c4e18e1e39c598078f202c83a1115c 100644 --- a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/B64Analyzer.java +++ b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/B64Analyzer.java @@ -61,7 +61,7 @@ public class B64Analyzer implements Analyzer { if(!fileDecodedContent.equals("")){ LOGGER.info("Restart test with decoded file : {}", fileDecodedContent); child.addLog(PART_LOG_TYPE,"Start analysis on decoded file"); - MessageContentAnalyzer mca = new MessageContentAnalyzer(); + MessageContentAnalyzer mca = new MessageContentAnalyzer(new XMLAnalyzerFactory().getXMLAnalyzer()); mca.analyzeMessageContent(decodedByteContent, child, mcaConfigDao); parent.getChildList().add(child); } diff --git a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/FileContentAndListOfModifications.java b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/FileContentAndListOfModifications.java new file mode 100644 index 0000000000000000000000000000000000000000..4e1758fb8f5f6888ce9f3cab6b19415d75ad7964 --- /dev/null +++ b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/FileContentAndListOfModifications.java @@ -0,0 +1,49 @@ +package net.ihe.gazelle.contentanalyzer.business.analyzers; + +import java.util.ArrayList; +import java.util.List; + +class FileContentAndListOfModifications { + + protected String content; + + protected List<OffsetAndSizeOfText> offsetsAndSizesOfText; + + public FileContentAndListOfModifications() { + offsetsAndSizesOfText = new ArrayList<>(); + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public List<OffsetAndSizeOfText> getOffsetsAndSizesOfText() { + return offsetsAndSizesOfText; + } + + public void setOffsetsAndSizesOfText(List<OffsetAndSizeOfText> offsetsAndSizesOfText) { + this.offsetsAndSizesOfText = offsetsAndSizesOfText; + } + + static class OffsetAndSizeOfText { + Integer offset; + Integer size; + + OffsetAndSizeOfText(int offset, int size) { + this.offset = offset; + this.size = size; + } + + public Integer getOffset() { + return offset; + } + + public Integer getSize() { + return size; + } + } +} diff --git a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/MessageSplitter.java b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/MessageSplitter.java index bdbf5a59fb52faf26a08bdd190dd93f4944c40ec..4dc7fcd30373005ab3a43908c45ee936cf8e8feb 100644 --- a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/MessageSplitter.java +++ b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/MessageSplitter.java @@ -68,7 +68,7 @@ public class MessageSplitter implements Analyzer { final AnalyzedObjectPart headerFileToValidate = new AnalyzedObjectPart(parent); final AnalyzedObjectPart bodyFileToValidate = new AnalyzedObjectPart(parent); - final MessageContentAnalyzer messageContentAnalyzer = new MessageContentAnalyzer(); + final MessageContentAnalyzer messageContentAnalyzer = new MessageContentAnalyzer(new XMLAnalyzerFactory().getXMLAnalyzer()); Pattern regex = Pattern.compile(HTTP_FIRST_LINE_MATCH); final Matcher regexMatcher = regex.matcher(fileContent); @@ -168,7 +168,7 @@ public class MessageSplitter implements Analyzer { mtomAnalyzedObjectPart.setEndOffset(end + parent.getStartOffset()); mtomAnalyzedObjectPart.setEncodedType(parent.getEncodedType()); parent.addLog(PART_LOG_TYPE,"Launch analysis of MTOM part " + (j+1)); - final MessageContentAnalyzer messageContentAnalyzer = new MessageContentAnalyzer(); + final MessageContentAnalyzer messageContentAnalyzer = new MessageContentAnalyzer(new XMLAnalyzerFactory().getXMLAnalyzer()); messageContentAnalyzer.analyzeMessageContent(fileContent.substring(begin , end) .getBytes(StandardCharsets.UTF_8), mtomAnalyzedObjectPart, mcaConfigDAO); @@ -234,7 +234,7 @@ public class MessageSplitter implements Analyzer { syslogMessagePart.setEndOffset(parent.getEndOffset()); syslogMessagePart.setEncodedType(parent.getEncodedType()); parent.getChildList().add(syslogMessagePart); - final MessageContentAnalyzer messageContentAnalyzer = new MessageContentAnalyzer(); + final MessageContentAnalyzer messageContentAnalyzer = new MessageContentAnalyzer(new XMLAnalyzerFactory().getXMLAnalyzer()); messageContentAnalyzer.analyzeMessageContent(fileContent.substring(syslogMessagePart.getStartOffset(), syslogMessagePart.getEndOffset()).getBytes(StandardCharsets.UTF_8), syslogMessagePart, mcaConfigDAO); } else { diff --git a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/MimeTypeDetector.java b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/MimeTypeDetector.java index d351d55ec7417719484546ae48821d41a3f24f08..cd64c831d8403ce7af388f6d10d1dfb4b2c7ae99 100644 --- a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/MimeTypeDetector.java +++ b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/MimeTypeDetector.java @@ -6,7 +6,6 @@ import net.ihe.gazelle.contentanalyzer.business.exceptions.UnexpectedAnalysisExc import net.ihe.gazelle.contentanalyzer.business.model.AnalyzedObjectPart; import net.ihe.gazelle.contentanalyzer.business.model.EncodedType; import org.apache.tika.Tika; -import org.jboss.seam.Component; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/TagDetector.java b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/TagDetector.java index f15272b33804b921818b79be5e01d8e241b0c3d9..b8d223820f4e2f9696ccfd4abe9bd5426d2618e4 100644 --- a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/TagDetector.java +++ b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/TagDetector.java @@ -1,5 +1,6 @@ package net.ihe.gazelle.contentanalyzer.business.analyzers; +import net.ihe.gazelle.contentanalyzer.business.analyzers.adapters.XmlInputFactoryFactory; import net.ihe.gazelle.contentanalyzer.business.exceptions.UnexpectedAnalysisException; import net.ihe.gazelle.contentanalyzer.business.model.AnalyzedObjectPart; import net.ihe.gazelle.contentanalyzer.business.model.config.XmlTagConfigInterface; @@ -11,22 +12,10 @@ import org.xml.sax.InputSource; import org.xml.sax.SAXException; import javax.xml.XMLConstants; -import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; -import java.io.IOException; -import java.io.StringReader; -import java.io.StringWriter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.io.*; +import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -35,67 +24,61 @@ public class TagDetector { private static final String PART_LOG_TYPE = "XML Tag Detection"; private int xmlDeclarationOffset; - private int xmlStartOffset; - private String originalContent; + private XmlInputFactoryFactory xmlInputFactoryFactory; - public int getXmlStartOffset() { - return xmlStartOffset; - } + private final FileContentAndListOfModifications fileContentAndListOfModifications = new FileContentAndListOfModifications(); - public void setXmlStartOffset(int xmlStartOffset) { - this.xmlStartOffset = xmlStartOffset; + public TagDetector(XmlInputFactoryFactory xmlInputFactoryFactory) { + this.xmlInputFactoryFactory = xmlInputFactoryFactory; } - private String getOriginalContent() { - return originalContent; - } + public void detectTags(final String messageStringContent, final AnalyzedObjectPart parent, McaConfigDAO mcaConfigDAO) + throws UnexpectedAnalysisException { - private void setOriginalContent(String originalContent) { - this.originalContent = originalContent; - } + preprocessMessageStringContent(messageStringContent, parent, fileContentAndListOfModifications); + + xmlStartOffset = parent.getStartOffset(); + + String messageWithoutXMLDeclaration = removeXmlDeclaration(fileContentAndListOfModifications.getContent()); + Element rootElement = configureDocumentBuilderAndCreateRootElement(fileContentAndListOfModifications.getContent()); + List<XmlTagConfigInterface> tagConfigList = mcaConfigDAO.getAllTags(); + browseXmlTree(messageWithoutXMLDeclaration, rootElement, parent, new HashMap<String, String>(), tagConfigList); - private int getXmlDeclarationOffset() { - return xmlDeclarationOffset; + XmlFileStripper.postprocess(fileContentAndListOfModifications, parent); } - private void setXmlDeclarationOffset(int xmlDeclarationOffset) { - this.xmlDeclarationOffset = xmlDeclarationOffset; + private void preprocessMessageStringContent(String messageStringContent, AnalyzedObjectPart parent, FileContentAndListOfModifications fileContentAndListOfModifications) + throws UnexpectedAnalysisException { + fileContentAndListOfModifications.setContent(messageStringContent); + XmlFileStripper.preprocess(xmlInputFactoryFactory, fileContentAndListOfModifications, parent); } - public void detectTags(final String messageStringContent, final AnalyzedObjectPart parent, McaConfigDAO mcaConfigDAO) - throws UnexpectedAnalysisException{ - setOriginalContent(messageStringContent); - setXmlStartOffset(parent.getStartOffset()); - try{ - Document document; + private Element configureDocumentBuilderAndCreateRootElement(String processedContent) throws UnexpectedAnalysisException { + try { final DocumentBuilderFactory dbfact = DocumentBuilderFactory.newInstance(); dbfact.setAttribute("http://apache.org/xml/features/nonvalidating/load-external-dtd", Boolean.FALSE); dbfact.setFeature("http://apache.org/xml/features/disallow-doctype-decl", Boolean.FALSE); dbfact.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); dbfact.setNamespaceAware(true); - final DocumentBuilder builder = dbfact.newDocumentBuilder(); - document = builder.parse(new InputSource( new StringReader(getOriginalContent()))); - - Element rootElement = document.getDocumentElement(); - - if (getOriginalContent().contains(("<?"))){ - setXmlDeclarationOffset(getOriginalContent().indexOf("?>")+ 2) ; - } else { - setXmlDeclarationOffset(0); - } - - String messageWithoutXMLDeclaration = getOriginalContent().substring(getXmlDeclarationOffset()); - Map<String, String> namespacesAtCurrentLevel = new HashMap<>(); - List<XmlTagConfigInterface> tagConfigList = mcaConfigDAO.getAllTags(); - browseXmlTree(messageWithoutXMLDeclaration, rootElement, parent, namespacesAtCurrentLevel, tagConfigList); - } catch (SAXException | ParserConfigurationException | IOException e){ + Document document = dbfact.newDocumentBuilder().parse(new InputSource(new StringReader(processedContent))); + return document.getDocumentElement(); + } catch (SAXException | ParserConfigurationException | IOException e) { throw new UnexpectedAnalysisException("Error while trying to parse the XML content of the file.", e); } } + private String removeXmlDeclaration(String content) { + if (content.contains(("<?"))){ + xmlDeclarationOffset = content.indexOf("?>") + 2; + } else { + xmlDeclarationOffset = 0; + } + return content.substring(xmlDeclarationOffset); + } + private void browseXmlTree(final String messageStringContent, final Element element, final AnalyzedObjectPart parent, Map<String, String> namespacesAtCurrentLevel, List<XmlTagConfigInterface> tagConfigList) throws UnexpectedAnalysisException{ @@ -103,6 +86,7 @@ public class TagDetector { AnalyzedObjectPart parentForSubElements; parentForSubElements = searchElementInConfig(element, tagConfigList, parent, messageStringContent, namespacesAtCurrentLevel); + for (int x = 0; x < element.getChildNodes().getLength(); x++) { Node n = element.getChildNodes().item(x); if (n.getNodeType() == Node.ELEMENT_NODE) { @@ -116,13 +100,13 @@ public class TagDetector { private String computeSubPartString(AnalyzedObjectPart parent){ if (!parent.getChildList().isEmpty()){ - return getOriginalContent().substring(parent.getChildList().get(parent.getChildList().size()-1).getEndOffset() - - getXmlStartOffset(), parent.getEndOffset() - getXmlStartOffset()); + return fileContentAndListOfModifications.getContent().substring(parent.getChildList().get(parent.getChildList().size()-1).getEndOffset() + - xmlStartOffset, parent.getEndOffset() - xmlStartOffset); } else if (parent.getDocType().equals("XML")){ - return getOriginalContent().substring(getXmlDeclarationOffset(), parent.getEndOffset() - getXmlStartOffset()); + return fileContentAndListOfModifications.getContent().substring(xmlDeclarationOffset, parent.getEndOffset() - xmlStartOffset); } else { - return getOriginalContent().substring(parent.getStartOffset()-getXmlStartOffset(), - parent.getEndOffset()-getXmlStartOffset()); + return fileContentAndListOfModifications.getContent().substring(parent.getStartOffset() - xmlStartOffset, + parent.getEndOffset() - xmlStartOffset); } } @@ -210,20 +194,19 @@ public class TagDetector { private String concatenateDocTypes(List<XmlTagConfigInterface> tagConfigList){ - String concatenatedDocType = ""; + StringBuilder concatenatedDocType = new StringBuilder(); for (int i = 0; i < tagConfigList.size(); i++){ - concatenatedDocType += tagConfigList.get(i).getDocType(); + concatenatedDocType.append(tagConfigList.get(i).getDocType()); if(i < tagConfigList.size() - 1){ - concatenatedDocType += " or "; + concatenatedDocType.append(" or "); } } - return concatenatedDocType; + return concatenatedDocType.toString(); } private AnalyzedObjectPart createAmpFromElement(final String messageStringContent, final Element element, final AnalyzedObjectPart parent, Map<String, String> namespacesAtCurrentLevel) throws UnexpectedAnalysisException{ - String regexSplittedTag = "<"+element.getTagName()+"\\b(([\\r|\\n|\\w|\\W])(?!<"+element.getTagName()+"))+?.+?/"+element.getTagName()+">"; String regexNotSplittedTag = "<\\s*"+ element.getTagName() +"\\b([^>])*?/>"; @@ -236,57 +219,29 @@ public class TagDetector { matcherNotSplittedTag = patternNotSplittedTag.matcher(messageStringContent); if (matcherSplittedTag.find()) { - - if (!parent.getChildList().isEmpty()){ - return creatChildWithProperties(parent, matcherSplittedTag.start() + - parent.getChildList().get(parent.getChildList().size()-1).getEndOffset(), - parent.getChildList().get(parent.getChildList().size()-1).getEndOffset() + matcherSplittedTag.end(), - namespacesAtCurrentLevel); - } else if (parent.getDocType().equals("XML")){ - return creatChildWithProperties(parent, matcherSplittedTag.start() + getXmlDeclarationOffset() + - parent.getStartOffset(), parent.getStartOffset() + getXmlDeclarationOffset() + - matcherSplittedTag.end(), namespacesAtCurrentLevel); - } - return creatChildWithProperties(parent, matcherSplittedTag.start() + parent.getStartOffset(), - matcherSplittedTag.end() + parent.getStartOffset(), namespacesAtCurrentLevel); - } else if (matcherNotSplittedTag.find()){ - - if (!parent.getChildList().isEmpty()){ - return creatChildWithProperties(parent, matcherNotSplittedTag.start() + - parent.getChildList().get(parent.getChildList().size()-1).getEndOffset(), - parent.getChildList().get(parent.getChildList().size()-1).getEndOffset() + matcherNotSplittedTag.end(), - namespacesAtCurrentLevel); - } else if (parent.getDocType().equals("XML")){ - return creatChildWithProperties(parent, matcherNotSplittedTag.start() + getXmlDeclarationOffset() + - parent.getStartOffset(), parent.getStartOffset() + getXmlDeclarationOffset() + - matcherNotSplittedTag.end(), namespacesAtCurrentLevel); - } - return creatChildWithProperties(parent, matcherNotSplittedTag.start() + parent.getStartOffset(), - matcherNotSplittedTag.end() + parent.getStartOffset(), namespacesAtCurrentLevel); - } else{ + return createChildWithPropertiesGivenAMatcher(parent, namespacesAtCurrentLevel, matcherSplittedTag); + } else if (matcherNotSplittedTag.find()) { + return createChildWithPropertiesGivenAMatcher(parent, namespacesAtCurrentLevel, matcherNotSplittedTag); + } else { throw new UnexpectedAnalysisException("Unable to match the tag in the original file content."); } } - private String convertElementToString(final Element element) throws UnexpectedAnalysisException{ - TransformerFactory tf = TransformerFactory.newInstance(); - Transformer transformer; - try { - transformer = tf.newTransformer(); - transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); - transformer.setOutputProperty(OutputKeys.INDENT, "no"); - transformer.setOutputProperty(OutputKeys.METHOD, "xml"); - transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); - int length = element.getAttributes().getLength(); - for (int i = length - 1; i >= 0 ; i--){ - element.removeAttribute(element.getAttributes().item(i).getNodeName()); - } - StringWriter writer = new StringWriter(); - transformer.transform(new DOMSource(element), new StreamResult(writer)); - return writer.getBuffer().toString(); - } catch (TransformerException e) { - throw new UnexpectedAnalysisException("Unable to convert Tag content to string", e); + private AnalyzedObjectPart createChildWithPropertiesGivenAMatcher(AnalyzedObjectPart parent, + Map<String, String> namespacesAtCurrentLevel, + Matcher matcher) { + if (!parent.getChildList().isEmpty()){ + return creatChildWithProperties(parent, matcher.start() + + parent.getChildList().get(parent.getChildList().size()-1).getEndOffset(), + parent.getChildList().get(parent.getChildList().size()-1).getEndOffset() + matcher.end(), + namespacesAtCurrentLevel); + } else if (parent.getDocType().equals("XML")){ + return creatChildWithProperties(parent, matcher.start() + xmlDeclarationOffset + + parent.getStartOffset(), parent.getStartOffset() + xmlDeclarationOffset + + matcher.end(), namespacesAtCurrentLevel); } + return creatChildWithProperties(parent, matcher.start() + parent.getStartOffset(), + matcher.end() + parent.getStartOffset(), namespacesAtCurrentLevel); } private AnalyzedObjectPart creatChildWithProperties(AnalyzedObjectPart parent, Integer startOffset, diff --git a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/XMLAnalyzer.java b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/XMLAnalyzer.java index 5fe7e2721d3ab6dd6e2ccfc41c4da24f222aaddd..0dbccdf5019fdcacf16474d336714e3016bb63f5 100644 --- a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/XMLAnalyzer.java +++ b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/XMLAnalyzer.java @@ -26,7 +26,7 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; -public class XMLAnalyzer implements Analyzer{ +public class XMLAnalyzer implements Analyzer { private static final Logger LOGGER = LoggerFactory.getLogger(XMLAnalyzer.class); @@ -35,9 +35,10 @@ public class XMLAnalyzer implements Analyzer{ private static final String PART_LOG_TYPE = "XML analysis"; private static final String XML_FORM_ANALYSIS_AMP_LOG = "XML Form Analysis"; - private TagDetector tagDetector = new TagDetector(); + private TagDetector tagDetector; - public XMLAnalyzer() { + public XMLAnalyzer(TagDetector tagDetector) { + this.tagDetector = tagDetector; } @Override diff --git a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/XMLAnalyzerFactory.java b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/XMLAnalyzerFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..99c16b3d9d38060c2ac2eefdcfcde1740e1568d1 --- /dev/null +++ b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/XMLAnalyzerFactory.java @@ -0,0 +1,14 @@ +package net.ihe.gazelle.contentanalyzer.business.analyzers; + +import net.ihe.gazelle.contentanalyzer.business.analyzers.adapters.impl.WoodstoxXmlInputFactoryFactory; +import org.jboss.seam.ScopeType; +import org.jboss.seam.annotations.*; + +@Name("xmlAnalyzerFactory") +public class XMLAnalyzerFactory { + + @Factory(value = "xmlAnalyzer", scope = ScopeType.PAGE) + public XMLAnalyzer getXMLAnalyzer() { + return new XMLAnalyzer(new TagDetector(new WoodstoxXmlInputFactoryFactory())); + } +} diff --git a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/XmlFileStripper.java b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/XmlFileStripper.java new file mode 100644 index 0000000000000000000000000000000000000000..6f9d671ec214ef492c9616908e08e33fe9ef312b --- /dev/null +++ b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/XmlFileStripper.java @@ -0,0 +1,118 @@ +package net.ihe.gazelle.contentanalyzer.business.analyzers; + +import net.ihe.gazelle.contentanalyzer.business.analyzers.adapters.XmlInputFactoryFactory; +import net.ihe.gazelle.contentanalyzer.business.exceptions.UnexpectedAnalysisException; +import net.ihe.gazelle.contentanalyzer.business.model.AnalyzedObjectPart; + +import javax.xml.stream.Location; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import java.io.Reader; +import java.io.StringReader; +import java.util.ArrayList; + +class XmlFileStripper { + + private XmlFileStripper() { + + } + + private static final int MAX_LINE_SIZE = 10000; + + /** + * Removes from a String representing an XML file all tag text but 1 character that exceeds MAX_LINE_SIZE and + * stores positions and sizes of cut content to shift the offsets of the parent + * from the original content to the ones of the processed content + * @param xmlInputFactoryFactory : Implementation of the configured XML Parser to use + * @param fileContentAndListOfModifications : Object representation of a XML file as String & its List of removed contents + * @param parent : AnalyzedObjectPart whose offsets will be shifted + * @throws UnexpectedAnalysisException : if the parser is unable to parse the input String + */ + static public void preprocess(XmlInputFactoryFactory xmlInputFactoryFactory, + FileContentAndListOfModifications fileContentAndListOfModifications, AnalyzedObjectPart parent) throws UnexpectedAnalysisException { + fileContentAndListOfModifications.setOffsetsAndSizesOfText(new ArrayList<FileContentAndListOfModifications.OffsetAndSizeOfText>()); + fileContentAndListOfModifications.setContent(removeLongLinesFromDocumentAndRecordModifications(xmlInputFactoryFactory, fileContentAndListOfModifications)); + shiftAnalyzedObjectPartOffsets(fileContentAndListOfModifications, parent); + } + + static private String removeLongLinesFromDocumentAndRecordModifications(XmlInputFactoryFactory xmlInputFactoryFactory, + FileContentAndListOfModifications fileContentAndListOfModifications) throws UnexpectedAnalysisException { + try { + Reader reader = new StringReader(fileContentAndListOfModifications.getContent()); + XMLStreamReader streamReader = xmlInputFactoryFactory.configureAndGetXmlInputFactory().createXMLStreamReader(reader); + + fillListOffsetAndSizeOfText(fileContentAndListOfModifications, streamReader); + + return computeContentWithListOfOffsetAndSizeOfText(fileContentAndListOfModifications); + } catch (XMLStreamException e) { + throw new UnexpectedAnalysisException("Error while trying to preprocess the XML content of the file.", e); + } + } + + static private void fillListOffsetAndSizeOfText(FileContentAndListOfModifications fileContentAndListOfModifications, XMLStreamReader streamReader) throws XMLStreamException { + while (streamReader.hasNext()) { + streamReader.next(); + if (streamReader.getEventType() == XMLStreamReader.CHARACTERS) { + int sizeOfText = streamReader.getText().length(); + if(sizeOfText > MAX_LINE_SIZE) { + Location location = streamReader.getLocation(); + fileContentAndListOfModifications.getOffsetsAndSizesOfText() + .add(new FileContentAndListOfModifications.OffsetAndSizeOfText(location.getCharacterOffset() + 1, sizeOfText - 1)); + } + } + } + } + + static private String computeContentWithListOfOffsetAndSizeOfText(FileContentAndListOfModifications fileContentAndListOfModifications) { + String processedContent = fileContentAndListOfModifications.getContent(); + for(int i = fileContentAndListOfModifications.getOffsetsAndSizesOfText().size() - 1; i >= 0 ; i--) { + String strippedPart = processedContent + .substring(0, fileContentAndListOfModifications.getOffsetsAndSizesOfText().get(i).getOffset()); + strippedPart += processedContent + .substring(fileContentAndListOfModifications.getOffsetsAndSizesOfText().get(i).getOffset() + + fileContentAndListOfModifications.getOffsetsAndSizesOfText().get(i).getSize()); + processedContent = strippedPart; + } + return processedContent; + } + + static private void shiftAnalyzedObjectPartOffsets(FileContentAndListOfModifications fileContentAndListOfModifications, AnalyzedObjectPart parent) { + for(int i = fileContentAndListOfModifications.getOffsetsAndSizesOfText().size() - 1; i >= 0 ; i--) { + int offset = fileContentAndListOfModifications.getOffsetsAndSizesOfText().get(i).getOffset(); + if(parent.getStartOffset() > offset) { + parent.setStartOffset(parent.getStartOffset() - fileContentAndListOfModifications.getOffsetsAndSizesOfText().get(i).getSize()); + } + if(parent.getEndOffset() > offset) { + parent.setEndOffset(parent.getEndOffset() - fileContentAndListOfModifications.getOffsetsAndSizesOfText().get(i).getSize()); + } + } + } + + /** + * Uses the list of offsets and sizes to revert the offsets back to their original positions for + * this AnalyzedObjectPart and all its children + * @param fileContentAndListOfModifications : Object representation of a XML file as String & its List of removed contents + * @param parent : AnalyzedObjectPart whose offsets and those of its children will be reverted + */ + static public void postprocess(FileContentAndListOfModifications fileContentAndListOfModifications, AnalyzedObjectPart parent) { + restoreOriginalOffsetsForAllNodes(fileContentAndListOfModifications, parent); + } + + static private void restoreOriginalOffsetsForAllNodes(FileContentAndListOfModifications fileContentAndListOfModifications, AnalyzedObjectPart parent) { + restoreOriginalOffsets(fileContentAndListOfModifications, parent); + for(AnalyzedObjectPart child : parent.getChildList()) { + restoreOriginalOffsetsForAllNodes(fileContentAndListOfModifications, child); + } + } + + static private void restoreOriginalOffsets(FileContentAndListOfModifications fileContentAndListOfModifications, AnalyzedObjectPart node) { + for(FileContentAndListOfModifications.OffsetAndSizeOfText offsetAndSizeOfText : fileContentAndListOfModifications.getOffsetsAndSizesOfText()) { + if(node.getStartOffset() > offsetAndSizeOfText.getOffset()) { + node.setStartOffset(node.getStartOffset() + offsetAndSizeOfText.getSize()); + } + if(node.getEndOffset() > offsetAndSizeOfText.getOffset()) { + node.setEndOffset(node.getEndOffset() + offsetAndSizeOfText.getSize()); + } + } + } +} diff --git a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/adapters/XmlInputFactoryFactory.java b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/adapters/XmlInputFactoryFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..f1ad63c710ee6bd1fb46bd00139b38d52b24764d --- /dev/null +++ b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/adapters/XmlInputFactoryFactory.java @@ -0,0 +1,8 @@ +package net.ihe.gazelle.contentanalyzer.business.analyzers.adapters; + +import javax.xml.stream.XMLInputFactory; + +public interface XmlInputFactoryFactory { + + XMLInputFactory configureAndGetXmlInputFactory(); +} diff --git a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/adapters/impl/WoodstoxXmlInputFactoryFactory.java b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/adapters/impl/WoodstoxXmlInputFactoryFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..8682be7c5adfab1ab616e8e87f0f349550cb251d --- /dev/null +++ b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/business/analyzers/adapters/impl/WoodstoxXmlInputFactoryFactory.java @@ -0,0 +1,20 @@ +package net.ihe.gazelle.contentanalyzer.business.analyzers.adapters.impl; + +import com.ctc.wstx.api.WstxInputProperties; +import com.ctc.wstx.stax.WstxInputFactory; +import net.ihe.gazelle.contentanalyzer.business.analyzers.adapters.XmlInputFactoryFactory; + +import javax.xml.stream.XMLInputFactory; + +public final class WoodstoxXmlInputFactoryFactory implements XmlInputFactoryFactory { + + /** + * Sets the properties of an XMLInputFactory and returns it to create a XML parser + * @return xmlInputFactory : configured factory to use on XML files with large texts + */ + public XMLInputFactory configureAndGetXmlInputFactory() { + XMLInputFactory xmlInputFactory = new WstxInputFactory(); + xmlInputFactory.setProperty(WstxInputProperties.P_MIN_TEXT_SEGMENT, Integer.MAX_VALUE); + return xmlInputFactory; + } +} diff --git a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/gui/AnalyzerBean.java b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/gui/AnalyzerBean.java index 4562f050cfbe434429c374f1df954432eedfc29d..776d4b77f599bf01ede4bbcefd7b799a75b186ef 100644 --- a/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/gui/AnalyzerBean.java +++ b/MessageContentAnalyzer-ejb/src/main/java/net/ihe/gazelle/contentanalyzer/gui/AnalyzerBean.java @@ -50,10 +50,14 @@ import net.ihe.gazelle.hql.criterion.QueryModifier; import net.ihe.gazelle.hql.paths.HQLSafePathBasicDate; import net.ihe.gazelle.hql.restrictions.HQLRestrictions; import org.apache.commons.io.FileUtils; +import org.jboss.seam.Component; import org.jboss.seam.ScopeType; +import org.jboss.seam.annotations.Create; import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; +import org.jboss.seam.contexts.Context; +import org.jboss.seam.contexts.Contexts; import org.jboss.seam.faces.FacesMessages; import org.jboss.seam.international.StatusMessage.Severity; import org.richfaces.component.UITree; @@ -100,6 +104,9 @@ public class AnalyzerBean implements QueryModifier<AnalyzedObject> { @In(create = true, value = "mcaConfigDao") private McaConfigDAO mcaConfigDao; + @In(create = true, value = "xmlAnalyzer") + private XMLAnalyzer xmlAnalyzer; + private final Boolean adviseNodeOpened = Boolean.TRUE; private FilterDataModel<AnalyzedObject> dataModel; private String displayedMessagePart; @@ -122,7 +129,6 @@ public class AnalyzerBean implements QueryModifier<AnalyzedObject> { /////////////////////////////////////////////////////////////////////////////// public AnalyzerBean() { - } /////////////////////////////////////////////////////////////////////////////// @@ -148,6 +154,10 @@ public class AnalyzerBean implements QueryModifier<AnalyzedObject> { public void setMcaApi(McaApi mcaApi) { this.mcaApi=mcaApi; } + + public void setXmlAnalyzer(XMLAnalyzer xmlAnalyzer) { + this.xmlAnalyzer = xmlAnalyzer; + } /////////////////////////////////////////////////////////////////////// public Boolean adviseNodeOpened(final UITree tree) { @@ -440,7 +450,6 @@ public class AnalyzerBean implements QueryModifier<AnalyzedObject> { } else { Map<String, String> namespaces = node.getListOfNamespacesForAnalyzedObjectPart(); if (namespaces != null && downloadAddedNamespaces){ - XMLAnalyzer xmlAnalyzer = new XMLAnalyzer(); fileContent = xmlAnalyzer.addNamespacesToFileContent(fileContent, namespaces); FilesDownloader.downloadFile(fileContent, node, getAnalyzedObject(), FacesContext.getCurrentInstance()); @@ -494,7 +503,6 @@ public class AnalyzerBean implements QueryModifier<AnalyzedObject> { } public void executeWithString(final String fileContent) { - setDescription(EXECUTE_FROM_STR_DESCRIPTION); try{ analyzerBeanBusiness.executeWithString(fileContent, oidGenerator, validationCacheManager, mcaApi); @@ -584,9 +592,7 @@ public class AnalyzerBean implements QueryModifier<AnalyzedObject> { public boolean crossValidatorAvailable(String xValidatorOid){ if (xValidatorOid != null && !xValidatorOid.isEmpty()){ String validatorStatus = EVSClientResults.getXValidatorStatus(xValidatorOid, ApplicationPreferenceManager.getStringValue("application_url")); - if(validatorStatus!= null && !validatorStatus.isEmpty() && validatorStatus.equals("Available")){ - return true; - } + return validatorStatus != null && !validatorStatus.isEmpty() && validatorStatus.equals("Available"); } return false; } @@ -658,7 +664,6 @@ public class AnalyzerBean implements QueryModifier<AnalyzedObject> { node.getEndOffset(), node.getMessageContentAnalyzerOid()); } else { String decodedStringContent = new String(decodedPartBytesContent, StandardCharsets.UTF_8); - XMLAnalyzer xmlAnalyzer = new XMLAnalyzer(); decodedStringContent = xmlAnalyzer.addNamespacesToFileContent(decodedStringContent .substring(node.getStartOffset(), node.getEndOffset()),node.getListOfNamespacesForAnalyzedObjectPart()); String decodedPartPath = createAddedNamespacePart(decodedStringContent.getBytes(StandardCharsets.UTF_8), objectPath, node); @@ -688,7 +693,6 @@ public class AnalyzerBean implements QueryModifier<AnalyzedObject> { return analyzerBeanBusiness.validate(decodedPartPath, node.getValidationType(), node.getStartOffset(), node.getEndOffset(), node.getMessageContentAnalyzerOid()); } else { - XMLAnalyzer xmlAnalyzer = new XMLAnalyzer(); decodedStringContent = xmlAnalyzer.addNamespacesToFileContent(decodedStringContent .substring(node.getStartOffset(), node.getEndOffset()),node.getListOfNamespacesForAnalyzedObjectPart()); String decodedPartPath = createAddedNamespacePart(decodedStringContent.getBytes(StandardCharsets.UTF_8), @@ -711,7 +715,6 @@ public class AnalyzerBean implements QueryModifier<AnalyzedObject> { LOGGER.error("Unable to read file : ",e); throw new UnexpectedAnalysisException("Unable to read File.",e); } - XMLAnalyzer xmlAnalyzer = new XMLAnalyzer(); stringFileContent = xmlAnalyzer.addNamespacesToFileContent(stringFileContent .substring(node.getStartOffset(), node.getEndOffset()),node.getListOfNamespacesForAnalyzedObjectPart()); String addedNamespacesPartPath = createAddedNamespacePart(stringFileContent.getBytes(StandardCharsets.UTF_8), @@ -789,7 +792,6 @@ public class AnalyzerBean implements QueryModifier<AnalyzedObject> { String fileContent = null; if (this.showAddedNamespacesInGUI && namespaces != null){ - XMLAnalyzer xmlAnalyzer = new XMLAnalyzer(); fileContent = xmlAnalyzer.addNamespacesToFileContent(this.originalMessagePart,namespaces); if(fileContent.equals(this.originalMessagePart)){ this.namespacesActuallyAdded = false; diff --git a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/app/AnalyzerBeanBusinessTest.java b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/app/AnalyzerBeanBusinessTest.java index df2d913f327f4e0d71ce9c2a32d88f2024af2a3b..e9498c08ab566e8daee4d8c551c73c5c4003cd44 100644 --- a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/app/AnalyzerBeanBusinessTest.java +++ b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/app/AnalyzerBeanBusinessTest.java @@ -3,6 +3,7 @@ package net.ihe.gazelle.contentanalyzer.app; import net.ihe.gazelle.common.application.action.ApplicationPreferenceManager; import net.ihe.gazelle.contentanalyzer.business.McaApiImpl; +import net.ihe.gazelle.contentanalyzer.business.analyzers.XMLAnalyzerFactory; import net.ihe.gazelle.contentanalyzer.business.exceptions.UnexpectedAnalysisException; import net.ihe.gazelle.contentanalyzer.business.model.AnalyzedObject; import net.ihe.gazelle.contentanalyzer.business.model.AnalyzedObjectPart; @@ -74,6 +75,7 @@ public class AnalyzerBeanBusinessTest { @Before public void setUp() throws Exception { mcaApi = new McaApiImpl(); + mcaApi.setXmlAnalyzer(new XMLAnalyzerFactory().getXMLAnalyzer()); mcaApi.setMcaConfigDAO(new McaConfigDaoStub()); MockitoAnnotations.initMocks(this); diff --git a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/app/PersistenceManagerTest.java b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/app/PersistenceManagerTest.java index 499614f96122ec0036d2b2d10dcd07b3b5b822dc..fb999531507fb2149e687fdefc3980147fabc841 100644 --- a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/app/PersistenceManagerTest.java +++ b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/app/PersistenceManagerTest.java @@ -3,6 +3,7 @@ package net.ihe.gazelle.contentanalyzer.app; import net.ihe.gazelle.common.application.action.ApplicationPreferenceManager; import net.ihe.gazelle.contentanalyzer.business.McaApiImpl; import net.ihe.gazelle.contentanalyzer.business.MessageContentAnalyzer; +import net.ihe.gazelle.contentanalyzer.business.analyzers.XMLAnalyzerFactory; import net.ihe.gazelle.contentanalyzer.business.exceptions.UnexpectedAnalysisException; import net.ihe.gazelle.contentanalyzer.business.model.AnalyzedObjectPart; import net.ihe.gazelle.contentanalyzer.business.model.AnalyzedObject; @@ -72,6 +73,8 @@ public class PersistenceManagerTest { when(mcaConfigDAO.getAllMimeTypeConfig()).thenReturn(mcaConfigDAOStub.getAllMimeTypeConfig()); when(mcaConfigDAO.getAllTags()).thenReturn(mcaConfigDAOStub.getAllTags()); + mcaApi.setXmlAnalyzer(new XMLAnalyzerFactory().getXMLAnalyzer()); + persistenceManager = spy(new McaPersistenceManager()); when(oidGenerator.getNewOid()).thenReturn("1.3.6.1.4.1.12559.11.1.2.1.4.1"); diff --git a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/ContentAnalysisTypeDetectionTest.java b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/ContentAnalysisTypeDetectionTest.java index 62b9044eb6a983466291ae62d9744864e70d0b64..eae2e7fa1cc873c21219724ad955d784d657fb17 100644 --- a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/ContentAnalysisTypeDetectionTest.java +++ b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/ContentAnalysisTypeDetectionTest.java @@ -2,6 +2,7 @@ package net.ihe.gazelle.contentanalyzer.business; import net.ihe.gazelle.common.application.action.ApplicationPreferenceManager; import net.ihe.gazelle.contentanalyzer.business.analyzers.ContentAnalysisTypeDetector; +import net.ihe.gazelle.contentanalyzer.business.analyzers.XMLAnalyzerFactory; import net.ihe.gazelle.contentanalyzer.business.exceptions.UnexpectedAnalysisException; import net.ihe.gazelle.contentanalyzer.business.model.AnalyzedObjectPart; import net.ihe.gazelle.contentanalyzer.business.model.ValidationType; @@ -36,7 +37,7 @@ public class ContentAnalysisTypeDetectionTest { @Before public void setUp(){ - m = new MessageContentAnalyzer(); + m = new MessageContentAnalyzer(new XMLAnalyzerFactory().getXMLAnalyzer()); mockRootOid(); } diff --git a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/McaApiImplTest.java b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/McaApiImplTest.java index b4200bf2554626e714156a9e549883810d9bfeb4..9f82e9df11b0e4e2ff1a89f7eb0363d54ee72713 100644 --- a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/McaApiImplTest.java +++ b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/McaApiImplTest.java @@ -1,6 +1,7 @@ package net.ihe.gazelle.contentanalyzer.business; +import net.ihe.gazelle.contentanalyzer.business.analyzers.XMLAnalyzerFactory; import net.ihe.gazelle.contentanalyzer.business.exceptions.UnexpectedAnalysisException; import net.ihe.gazelle.contentanalyzer.business.model.AnalyzedObjectPartInterface; import net.ihe.gazelle.contentanalyzer.business.model.AnalyzedObject; @@ -26,7 +27,6 @@ import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.util.List; import static net.ihe.gazelle.files.FilesUtils.loadFile; @@ -53,6 +53,7 @@ public class McaApiImplTest { public void setUp() { mcaApi = new McaApiImpl(); + mcaApi.setXmlAnalyzer(new XMLAnalyzerFactory().getXMLAnalyzer()); MockitoAnnotations.initMocks(this); PowerMockito.mockStatic(VersionProvider.class); diff --git a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/MessageContentAnalyzerTest.java b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/MessageContentAnalyzerTest.java index 96eff8348dd3a394f341e2becef96b58f6c7c174..12ee4d5b15856aa9e4a68d55efb33bea99e6a0e3 100644 --- a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/MessageContentAnalyzerTest.java +++ b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/MessageContentAnalyzerTest.java @@ -2,6 +2,7 @@ package net.ihe.gazelle.contentanalyzer.business; import net.ihe.gazelle.contentanalyzer.business.analyzers.MimeTypeDetector; +import net.ihe.gazelle.contentanalyzer.business.analyzers.XMLAnalyzerFactory; import net.ihe.gazelle.contentanalyzer.business.model.config.archives.ZipStructure; import net.ihe.gazelle.contentanalyzer.business.exceptions.UnexpectedAnalysisException; import net.ihe.gazelle.contentanalyzer.business.model.AnalyzedObjectPart; @@ -34,7 +35,7 @@ public class MessageContentAnalyzerTest { @Before public void setUp() { - m = new MessageContentAnalyzer(); + m = new MessageContentAnalyzer(new XMLAnalyzerFactory().getXMLAnalyzer()); mcaConfigDao = new McaConfigDaoStub(); } diff --git a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/MessageSplitterTest.java b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/MessageSplitterTest.java index fa26477961f22ad2d2de190b3b708365961dd246..4b5be54f617980cd9967ef3fed915d23ff7cc031 100644 --- a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/MessageSplitterTest.java +++ b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/MessageSplitterTest.java @@ -1,6 +1,7 @@ package net.ihe.gazelle.contentanalyzer.business; import net.ihe.gazelle.contentanalyzer.business.analyzers.MessageSplitter; +import net.ihe.gazelle.contentanalyzer.business.analyzers.XMLAnalyzerFactory; import net.ihe.gazelle.contentanalyzer.business.exceptions.UnexpectedAnalysisException; import net.ihe.gazelle.contentanalyzer.business.model.AnalyzedObjectPart; import net.ihe.gazelle.contentanalyzer.business.model.config.McaConfigDAO; @@ -29,7 +30,7 @@ public class MessageSplitterTest { @Before public void setUp() { - m = new MessageContentAnalyzer(); + m = new MessageContentAnalyzer(new XMLAnalyzerFactory().getXMLAnalyzer()); mcaConfigDao = new McaConfigDaoStub(); } diff --git a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/MimeTypeDetectorTest.java b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/MimeTypeDetectorTest.java index 57bb06bc5548c1ab878c1f69d2a52b6c58c06923..3cdd22a380d8ed7ba20026990e0419ceba03c1ff 100644 --- a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/MimeTypeDetectorTest.java +++ b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/MimeTypeDetectorTest.java @@ -2,6 +2,7 @@ package net.ihe.gazelle.contentanalyzer.business; import net.ihe.gazelle.contentanalyzer.business.analyzers.MimeTypeDetector; +import net.ihe.gazelle.contentanalyzer.business.analyzers.XMLAnalyzerFactory; import net.ihe.gazelle.contentanalyzer.business.exceptions.UnexpectedAnalysisException; import net.ihe.gazelle.contentanalyzer.business.model.AnalyzedObjectPart; import net.ihe.gazelle.contentanalyzer.business.model.EncodedType; @@ -32,7 +33,7 @@ public class MimeTypeDetectorTest { @Before public void setUp() { - m = new MessageContentAnalyzer(); + m = new MessageContentAnalyzer(new XMLAnalyzerFactory().getXMLAnalyzer()); mcaConfigDAO = new McaConfigDaoStub(); } diff --git a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/NamespaceAnalyzeTest.java b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/NamespaceAnalyzeTest.java index 76b73c9425329ad8476e4e5f75592dad89c07d1b..3406637a1feb981dc9b2a24445dae253936b4ef9 100644 --- a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/NamespaceAnalyzeTest.java +++ b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/NamespaceAnalyzeTest.java @@ -1,6 +1,7 @@ package net.ihe.gazelle.contentanalyzer.business; import net.ihe.gazelle.contentanalyzer.business.analyzers.XMLAnalyzer; +import net.ihe.gazelle.contentanalyzer.business.analyzers.XMLAnalyzerFactory; import net.ihe.gazelle.contentanalyzer.business.exceptions.UnexpectedAnalysisException; import net.ihe.gazelle.contentanalyzer.business.model.AnalyzedObjectPart; import net.ihe.gazelle.contentanalyzer.business.model.EncodedType; @@ -30,7 +31,7 @@ public class NamespaceAnalyzeTest { @Before public void setUp() { - xmlAnalyzer = new XMLAnalyzer(); + xmlAnalyzer = new XMLAnalyzerFactory().getXMLAnalyzer(); mcaConfigDAO = new McaConfigDaoStub(); } @@ -49,7 +50,7 @@ public class NamespaceAnalyzeTest { System.out.println(e.getMessage()); } try { - MessageContentAnalyzer m = new MessageContentAnalyzer(); + MessageContentAnalyzer m = new MessageContentAnalyzer(new XMLAnalyzerFactory().getXMLAnalyzer()); m.analyzeMessageContent(FileUtils.readFileToByteArray(f), analyzedObjectPart, mcaConfigDAO); }catch (IOException e){ fail("Unable to read file"); @@ -104,7 +105,7 @@ public class NamespaceAnalyzeTest { System.out.println(e.getMessage()); } try { - MessageContentAnalyzer m = new MessageContentAnalyzer(); + MessageContentAnalyzer m = new MessageContentAnalyzer(new XMLAnalyzerFactory().getXMLAnalyzer()); m.analyzeMessageContent(FileUtils.readFileToByteArray(f), analyzedObjectPart, mcaConfigDAO); }catch (IOException e){ fail("Unable to read file"); diff --git a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/TagDetectorTest.java b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/TagDetectorTest.java index 146c4952b37d18ef7a065a8e21b756b31e8432b2..3dbd4cc4ec9de47d866271938cf813440e941472 100644 --- a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/TagDetectorTest.java +++ b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/TagDetectorTest.java @@ -1,7 +1,8 @@ package net.ihe.gazelle.contentanalyzer.business; import net.ihe.gazelle.contentanalyzer.business.analyzers.TagDetector; -import net.ihe.gazelle.contentanalyzer.business.analyzers.XMLAnalyzer; +import net.ihe.gazelle.contentanalyzer.business.analyzers.XMLAnalyzerFactory; +import net.ihe.gazelle.contentanalyzer.business.analyzers.adapters.impl.WoodstoxXmlInputFactoryFactory; import net.ihe.gazelle.contentanalyzer.business.exceptions.UnexpectedAnalysisException; import net.ihe.gazelle.contentanalyzer.business.model.AnalyzedObjectPart; import net.ihe.gazelle.contentanalyzer.business.model.ValidationType; @@ -31,12 +32,12 @@ public class TagDetectorTest { private static final Logger LOGGER = LoggerFactory.getLogger(TagDetectorTest.class); MessageContentAnalyzer m; - TagDetector tagDetector = new TagDetector(); + TagDetector tagDetector = new TagDetector(new WoodstoxXmlInputFactoryFactory()); McaConfigDAO mcaConfigDAO = new McaConfigDaoStub(); @Before public void setUp() { - m = new MessageContentAnalyzer(); + m = new MessageContentAnalyzer(new XMLAnalyzerFactory().getXMLAnalyzer()); } @After @@ -50,7 +51,6 @@ public class TagDetectorTest { final File file = loadFile("/contentanalyzer/xmlNamespaces.xml"); final AnalyzedObjectPart parent = new AnalyzedObjectPart(new AnalyzedObjectPart(null)); parent.setDocType("XML"); - XMLAnalyzer xmlAnalyzer = new XMLAnalyzer(); parent.setStartOffset(0); try { parent.setEndOffset(FileUtils.readFileToString(file).length()); @@ -75,7 +75,6 @@ public class TagDetectorTest { parent.setDocType("XML"); parent.setStartOffset(0); try { - XMLAnalyzer xmlAnalyzer = new XMLAnalyzer(); parent.setEndOffset(FileUtils.readFileToString(file).length()); tagDetector.detectTags(new String(FileUtils.readFileToByteArray(file), StandardCharsets.UTF_8), parent, mcaConfigDAO); }catch(IOException | UnexpectedAnalysisException e){ @@ -92,7 +91,6 @@ public class TagDetectorTest { final File file = loadFile("/contentanalyzer/validAssertion.xml"); final AnalyzedObjectPart parent = new AnalyzedObjectPart(new AnalyzedObjectPart(null)); parent.setDocType("XML"); - XMLAnalyzer xmlAnalyzer = new XMLAnalyzer(); parent.setStartOffset(0); try { parent.setEndOffset(FileUtils.readFileToString(file).length()); @@ -115,7 +113,6 @@ public class TagDetectorTest { final File file = loadFile("/contentanalyzer/ppq_request.xml"); final AnalyzedObjectPart parent = new AnalyzedObjectPart(new AnalyzedObjectPart(null)); parent.setDocType("XML"); - XMLAnalyzer xmlAnalyzer = new XMLAnalyzer(); parent.setStartOffset(0); try { parent.setEndOffset(FileUtils.readFileToString(file).length()); @@ -129,4 +126,26 @@ public class TagDetectorTest { assertEquals("CH:ADR", parent.getChildList().get(0).getDocType()); assertEquals(ValidationType.XML, parent.getChildList().get(0).getValidationType()); } + + @Test + public void detectTagCdaWithLongContentTest(){ + + final File file = loadFile("/contentanalyzer/validCdaXmlFileWithLongText.xml"); + final AnalyzedObjectPart parent = new AnalyzedObjectPart(new AnalyzedObjectPart(null)); + parent.setDocType("XML"); + parent.setStartOffset(0); + try { + parent.setEndOffset(FileUtils.readFileToString(file).length()); + tagDetector.detectTags(new String(FileUtils.readFileToByteArray(file), StandardCharsets.UTF_8), parent, mcaConfigDAO); + } catch(IOException | UnexpectedAnalysisException e) { + LOGGER.error("",e); + fail("No exception to be thrown"); + } + + assertEquals(1, parent.getChildList().size()); + assertEquals("CDA", parent.getChildList().get(0).getDocType()); + assertEquals(ValidationType.CDA, parent.getChildList().get(0).getValidationType()); + assertEquals(39, parent.getChildList().get(0).getStartOffset()); + assertEquals(44304, parent.getChildList().get(0).getEndOffset()); + } } diff --git a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/XMLAnalyzerTest.java b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/XMLAnalyzerTest.java index ddcc502afc6a7fcd8ce1e29d596d03281da3ba14..a9c7b8534e880f5ab062aaf04808f46d02991854 100644 --- a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/XMLAnalyzerTest.java +++ b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/XMLAnalyzerTest.java @@ -2,6 +2,7 @@ package net.ihe.gazelle.contentanalyzer.business; import net.ihe.gazelle.contentanalyzer.business.analyzers.XMLAnalyzer; +import net.ihe.gazelle.contentanalyzer.business.analyzers.XMLAnalyzerFactory; import net.ihe.gazelle.contentanalyzer.business.exceptions.UnexpectedAnalysisException; import net.ihe.gazelle.contentanalyzer.business.model.AnalyzedObjectPart; import net.ihe.gazelle.contentanalyzer.business.model.ValidationType; @@ -30,12 +31,12 @@ public class XMLAnalyzerTest { private static final Logger LOGGER = LoggerFactory.getLogger(XMLAnalyzerTest.class); MessageContentAnalyzer m; - XMLAnalyzer xmlAnalyzer = new XMLAnalyzer(); + XMLAnalyzer xmlAnalyzer = new XMLAnalyzerFactory().getXMLAnalyzer(); McaConfigDAO mcaConfigDAO = new McaConfigDaoStub(); @Before public void setUp() { - m = new MessageContentAnalyzer(); + m = new MessageContentAnalyzer(new XMLAnalyzerFactory().getXMLAnalyzer()); } @After diff --git a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/analyzers/XmlFileStripperTest.java b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/analyzers/XmlFileStripperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..aa448e0835fd2cd32a9f52ffe84822f6bd7b3e92 --- /dev/null +++ b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/business/analyzers/XmlFileStripperTest.java @@ -0,0 +1,360 @@ +package net.ihe.gazelle.contentanalyzer.business.analyzers; + +import net.ihe.gazelle.contentanalyzer.business.analyzers.adapters.impl.WoodstoxXmlInputFactoryFactory; +import net.ihe.gazelle.contentanalyzer.business.exceptions.UnexpectedAnalysisException; +import net.ihe.gazelle.contentanalyzer.business.model.AnalyzedObjectPart; +import org.apache.commons.io.FileUtils; +import org.junit.Test; + +import java.io.File; +import java.io.IOException; + +import static net.ihe.gazelle.files.FilesUtils.loadFile; +import static org.junit.Assert.assertEquals; + +public class XmlFileStripperTest { + + @Test(expected = UnexpectedAnalysisException.class) + public void preprocessNonXmlContentThrowsExceptionTest() throws UnexpectedAnalysisException { + FileContentAndListOfModifications bob = new FileContentAndListOfModifications(); + bob.setContent("bob"); + + XmlFileStripper.preprocess(new WoodstoxXmlInputFactoryFactory(), bob, null); + } + + @Test + public void preprocessXmlFileWithoutLongContentTest() throws UnexpectedAnalysisException, IOException { + final File f = loadFile("/contentanalyzer/validXmlFile.xml"); + String fileContent = FileUtils.readFileToString(f); + FileContentAndListOfModifications xfo = new FileContentAndListOfModifications(); + xfo.setContent(fileContent); + AnalyzedObjectPart aop = new AnalyzedObjectPart(); + aop.setStartOffset(0); + aop.setEndOffset(100000); + + XmlFileStripper.preprocess(new WoodstoxXmlInputFactoryFactory(), xfo, aop); + + assertEquals(fileContent, xfo.getContent()); + assertEquals(0, xfo.getOffsetsAndSizesOfText().size()); + assertEquals(0, aop.getStartOffset()); + assertEquals(100000, aop.getEndOffset()); + } + + @Test + public void postprocessXmlFileWithoutLongContentTest() { + FileContentAndListOfModifications xfo = new FileContentAndListOfModifications(); + AnalyzedObjectPart aop = new AnalyzedObjectPart(); + aop.setStartOffset(0); + aop.setEndOffset(100000); + + XmlFileStripper.postprocess(xfo, aop); + + assertEquals(0, aop.getStartOffset()); + assertEquals(100000, aop.getEndOffset()); + } + + @Test + public void preprocessXmlFileWithLongContentTest() throws UnexpectedAnalysisException, IOException { + final File f = loadFile("/contentanalyzer/validXmlFileWith1LongText.xml"); + String fileContent = FileUtils.readFileToString(f); + final File fRes = loadFile("/contentanalyzer/validXmlFileWith1LongTextStripped.xml"); + String stringRes = FileUtils.readFileToString(fRes); + FileContentAndListOfModifications xfo = new FileContentAndListOfModifications(); + xfo.setContent(fileContent); + AnalyzedObjectPart aop = new AnalyzedObjectPart(); + aop.setStartOffset(0); + aop.setEndOffset(10124); + + XmlFileStripper.preprocess(new WoodstoxXmlInputFactoryFactory(), xfo, aop); + + assertEquals(stringRes, xfo.getContent()); + assertEquals(1, xfo.getOffsetsAndSizesOfText().size()); + assertEquals(Integer.valueOf(76), xfo.getOffsetsAndSizesOfText().get(0).getOffset()); + assertEquals(Integer.valueOf(10016), xfo.getOffsetsAndSizesOfText().get(0).getSize()); + assertEquals(0, aop.getStartOffset()); + assertEquals(108, aop.getEndOffset()); // 10124 - 10016 chars + } + + @Test + public void postprocessXmlFileWithLongContentTest() { + FileContentAndListOfModifications xfo = new FileContentAndListOfModifications(); + xfo.getOffsetsAndSizesOfText().add(new FileContentAndListOfModifications.OffsetAndSizeOfText(76, 10016)); + AnalyzedObjectPart aop = new AnalyzedObjectPart(); + aop.setStartOffset(0); + aop.setEndOffset(108); + + XmlFileStripper.postprocess(xfo, aop); + + assertEquals(1, xfo.getOffsetsAndSizesOfText().size()); + assertEquals(0, aop.getStartOffset()); + assertEquals(10124, aop.getEndOffset()); // 10016 + 108 + } + + @Test + public void preprocessXmlFileWithLongContentsTest() throws UnexpectedAnalysisException, IOException { + final File f = loadFile("/contentanalyzer/validXmlFileWith5LongTexts.xml"); + String fileContent = FileUtils.readFileToString(f); + final File fRes = loadFile("/contentanalyzer/validXmlFileWith5LongTextsStripped.xml"); + String stringRes = FileUtils.readFileToString(fRes); + FileContentAndListOfModifications xfo = new FileContentAndListOfModifications(); + xfo.setContent(fileContent); + AnalyzedObjectPart aop = new AnalyzedObjectPart(); + aop.setStartOffset(0); + aop.setEndOffset(52008); + + XmlFileStripper.preprocess(new WoodstoxXmlInputFactoryFactory(), xfo, aop); + + assertEquals(stringRes, xfo.getContent()); + assertEquals(4, xfo.getOffsetsAndSizesOfText().size()); + assertEquals(Integer.valueOf(224), xfo.getOffsetsAndSizesOfText().get(0).getOffset()); + assertEquals(Integer.valueOf(10427), xfo.getOffsetsAndSizesOfText().get(0).getSize()); + assertEquals(Integer.valueOf(11401), xfo.getOffsetsAndSizesOfText().get(1).getOffset()); + assertEquals(Integer.valueOf(10016), xfo.getOffsetsAndSizesOfText().get(1).getSize()); + assertEquals(Integer.valueOf(21717), xfo.getOffsetsAndSizesOfText().get(2).getOffset()); + assertEquals(Integer.valueOf(10054), xfo.getOffsetsAndSizesOfText().get(2).getSize()); + assertEquals(Integer.valueOf(31922), xfo.getOffsetsAndSizesOfText().get(3).getOffset()); + assertEquals(Integer.valueOf(10000), xfo.getOffsetsAndSizesOfText().get(3).getSize()); + assertEquals(0, aop.getStartOffset()); + assertEquals(11511, aop.getEndOffset()); // 52008 - 40497 chars + } + + @Test + public void postprocessXmlFileWithLongContentsTest() { + FileContentAndListOfModifications xfo = new FileContentAndListOfModifications(); + xfo.getOffsetsAndSizesOfText().add(new FileContentAndListOfModifications.OffsetAndSizeOfText(224, 10427)); + xfo.getOffsetsAndSizesOfText().add(new FileContentAndListOfModifications.OffsetAndSizeOfText(11401, 10016)); + xfo.getOffsetsAndSizesOfText().add(new FileContentAndListOfModifications.OffsetAndSizeOfText(21717, 10054)); + xfo.getOffsetsAndSizesOfText().add(new FileContentAndListOfModifications.OffsetAndSizeOfText(31922, 10000)); + AnalyzedObjectPart aop = new AnalyzedObjectPart(); + aop.setStartOffset(0); + aop.setEndOffset(11511); + + XmlFileStripper.postprocess(xfo, aop); + + assertEquals(4, xfo.getOffsetsAndSizesOfText().size()); + assertEquals(0, aop.getStartOffset()); + assertEquals(52008, aop.getEndOffset()); // 11511 + 10427 + 10016 + 10054 + 10000 + } + + @Test + public void preprocessShouldNotImpactParentNorChildrenNodes() throws UnexpectedAnalysisException, IOException { + final File f = loadFile("/contentanalyzer/validXmlFileWith5LongTexts.xml"); + String fileContent = FileUtils.readFileToString(f); + FileContentAndListOfModifications xfo = new FileContentAndListOfModifications(); + xfo.setContent(fileContent); + + AnalyzedObjectPart aopParent = new AnalyzedObjectPart(); + aopParent.setStartOffset(0); + aopParent.setEndOffset(100000); + AnalyzedObjectPart aop = new AnalyzedObjectPart(); + aop.setStartOffset(0); + aop.setEndOffset(52008); + AnalyzedObjectPart aopChild = new AnalyzedObjectPart(); + aopChild.setStartOffset(42); + aopChild.setEndOffset(9001); + + aopParent.getChildList().add(aop); + aop.setParent(aopParent); + aop.getChildList().add(aopChild); + aopChild.setParent(aop); + + XmlFileStripper.preprocess(new WoodstoxXmlInputFactoryFactory(), xfo, aop); + + assertEquals(0, aopParent.getStartOffset()); + assertEquals(100000, aopParent.getEndOffset()); + assertEquals(42, aopChild.getStartOffset()); + assertEquals(9001, aopChild.getEndOffset()); + } + + @Test + public void postprocessShouldNotImpactParentNode() { + FileContentAndListOfModifications xfo = new FileContentAndListOfModifications(); + AnalyzedObjectPart aopParent = new AnalyzedObjectPart(); + aopParent.setStartOffset(0); + aopParent.setEndOffset(100000); + AnalyzedObjectPart aop = new AnalyzedObjectPart(); + aop.setStartOffset(0); + aop.setEndOffset(52008); + + aopParent.getChildList().add(aop); + aop.setParent(aopParent); + + XmlFileStripper.postprocess(xfo, aop); + + assertEquals(0, aopParent.getStartOffset()); + assertEquals(100000, aopParent.getEndOffset()); + } + + @Test + public void postprocessShouldImpactAllChildrenNodes() { + FileContentAndListOfModifications xfo = new FileContentAndListOfModifications(); + xfo.getOffsetsAndSizesOfText().add(new FileContentAndListOfModifications.OffsetAndSizeOfText(0, 5)); + xfo.getOffsetsAndSizesOfText().add(new FileContentAndListOfModifications.OffsetAndSizeOfText(105, 100)); + xfo.getOffsetsAndSizesOfText().add(new FileContentAndListOfModifications.OffsetAndSizeOfText(15000, 10)); + xfo.getOffsetsAndSizesOfText().add(new FileContentAndListOfModifications.OffsetAndSizeOfText(35000, 10000)); + AnalyzedObjectPart aop = new AnalyzedObjectPart(); + aop.setStartOffset(0); + aop.setEndOffset(50000); + AnalyzedObjectPart aopChild1 = new AnalyzedObjectPart(); + aopChild1.setStartOffset(100); + aopChild1.setEndOffset(10000); + AnalyzedObjectPart aopChild2 = new AnalyzedObjectPart(); + aopChild2.setStartOffset(10001); + aopChild2.setEndOffset(20000); + AnalyzedObjectPart aopChild3 = new AnalyzedObjectPart(); + aopChild3.setStartOffset(20001); + aopChild3.setEndOffset(40000); + AnalyzedObjectPart aopChild1Child = new AnalyzedObjectPart(); + aopChild1Child.setStartOffset(101); + aopChild1Child.setEndOffset(500); + + aop.getChildList().add(aopChild1); + aop.getChildList().add(aopChild2); + aop.getChildList().add(aopChild3); + aopChild1.setParent(aop); + aopChild2.setParent(aop); + aopChild3.setParent(aop); + + aopChild1.getChildList().add(aopChild1Child); + aopChild1Child.setParent(aopChild1); + + XmlFileStripper.postprocess(xfo, aop); + + assertEquals(0, aop.getStartOffset()); + assertEquals(60115, aop.getEndOffset()); // 50000 + 5 + 100 + 10 + 10000 + assertEquals(3, aop.getChildList().size()); + assertEquals(105, aop.getChildList().get(0).getStartOffset()); // 100 + 5 + assertEquals(10105, aop.getChildList().get(0).getEndOffset()); // 10000 + 5 + 100 + assertEquals(1, aop.getChildList().get(0).getChildList().size()); + assertEquals(206, aop.getChildList().get(0).getChildList().get(0).getStartOffset()); // 101 + 5 + 100 + assertEquals(605, aop.getChildList().get(0).getChildList().get(0).getEndOffset()); // 500 + 5 + 100 + assertEquals(105, aop.getChildList().get(0).getStartOffset()); // 100 + 5 + assertEquals(10105, aop.getChildList().get(0).getEndOffset()); // 10000 + 5 + 100 + assertEquals(10106, aop.getChildList().get(1).getStartOffset()); // 10001 + 5 + 100 + assertEquals(20115, aop.getChildList().get(1).getEndOffset()); // 20000 + 5 + 100 + 10 + assertEquals(20116, aop.getChildList().get(2).getStartOffset()); // 20001 + 5 + 100 + 10 + assertEquals(50115, aop.getChildList().get(2).getEndOffset()); // 40000 + 5 + 100 + 10 + 10000 + } + + @Test + public void preprocessShouldHandleBadDataTooLarge() throws UnexpectedAnalysisException, IOException { + final File f = loadFile("/contentanalyzer/validXmlFileWith1LongText.xml"); + String fileContent = FileUtils.readFileToString(f); + FileContentAndListOfModifications xfo = new FileContentAndListOfModifications(); + xfo.setContent(fileContent); + AnalyzedObjectPart badOffset = new AnalyzedObjectPart(); + badOffset.setStartOffset(10093); + badOffset.setEndOffset(100000000); + + XmlFileStripper.preprocess(new WoodstoxXmlInputFactoryFactory(), xfo, badOffset); + + assertEquals(77, badOffset.getStartOffset()); // 10093 - 10016 chars + assertEquals(99989984, badOffset.getEndOffset()); // 100000000 - 10016 chars + assertEquals(1, xfo.getOffsetsAndSizesOfText().size()); + assertEquals(Integer.valueOf(76), xfo.getOffsetsAndSizesOfText().get(0).getOffset()); + assertEquals(Integer.valueOf(10016), xfo.getOffsetsAndSizesOfText().get(0).getSize()); + } + + @Test + public void postprocessShouldHandleBadDataTooLarge() throws IOException { + final File f = loadFile("/contentanalyzer/validXmlFileWith1LongTextStripped.xml"); + String fileContent = FileUtils.readFileToString(f); + FileContentAndListOfModifications xfoStripped = new FileContentAndListOfModifications(); + xfoStripped.setContent(fileContent); + xfoStripped.getOffsetsAndSizesOfText().add(new FileContentAndListOfModifications.OffsetAndSizeOfText(76, 10016)); + AnalyzedObjectPart badOffset = new AnalyzedObjectPart(); + badOffset.setStartOffset(77); + badOffset.setEndOffset(99989984); + + XmlFileStripper.postprocess(xfoStripped, badOffset); + + assertEquals(10093, badOffset.getStartOffset()); // 77 + 10016 chars + assertEquals(100000000, badOffset.getEndOffset()); // 99989984 + 10016 chars + } + + @Test + public void preprocessShouldHandleBadDataTooSmall() throws UnexpectedAnalysisException, IOException { + final File f = loadFile("/contentanalyzer/validXmlFileWith1LongText.xml"); + String fileContent = FileUtils.readFileToString(f); + FileContentAndListOfModifications xfo = new FileContentAndListOfModifications(); + xfo.setContent(fileContent); + AnalyzedObjectPart badOffset = new AnalyzedObjectPart(); + badOffset.setStartOffset(-1); + badOffset.setEndOffset(10); + + XmlFileStripper.preprocess(new WoodstoxXmlInputFactoryFactory(), xfo, badOffset); + + assertEquals(-1, badOffset.getStartOffset()); + assertEquals(1, xfo.getOffsetsAndSizesOfText().size()); + assertEquals(Integer.valueOf(76), xfo.getOffsetsAndSizesOfText().get(0).getOffset()); + assertEquals(Integer.valueOf(10016), xfo.getOffsetsAndSizesOfText().get(0).getSize()); + assertEquals(10, badOffset.getEndOffset()); + } + + @Test + public void postprocessShouldHandleBadDataTooSmall() throws IOException { + final File f = loadFile("/contentanalyzer/validXmlFileWith1LongTextStripped.xml"); + String fileContent = FileUtils.readFileToString(f); + FileContentAndListOfModifications xfoStripped = new FileContentAndListOfModifications(); + xfoStripped.setContent(fileContent); + xfoStripped.getOffsetsAndSizesOfText().add(new FileContentAndListOfModifications.OffsetAndSizeOfText(76, 10016)); + AnalyzedObjectPart badOffset = new AnalyzedObjectPart(); + badOffset.setStartOffset(-1); + badOffset.setEndOffset(10); + + XmlFileStripper.postprocess(xfoStripped, badOffset); + + assertEquals(-1, badOffset.getStartOffset()); + assertEquals(10, badOffset.getEndOffset()); + } + + @Test + public void preprocessShouldNotImpactOffLimitsOffsets() throws UnexpectedAnalysisException, IOException { + final File f = loadFile("/contentanalyzer/validXmlFileWith1LongText.xml"); + String fileContent = FileUtils.readFileToString(f); + FileContentAndListOfModifications xfo = new FileContentAndListOfModifications(); + xfo.setContent(fileContent); + AnalyzedObjectPart aop = new AnalyzedObjectPart(); + aop.setStartOffset(0); + aop.setEndOffset(76); + + XmlFileStripper.preprocess(new WoodstoxXmlInputFactoryFactory(), xfo, aop); + + assertEquals(1, xfo.getOffsetsAndSizesOfText().size()); + assertEquals(0, aop.getStartOffset()); + assertEquals(76, aop.getEndOffset()); + } + + @Test + public void postprocessShouldNotImpactOffLimitsOffsets() throws IOException { + final File f = loadFile("/contentanalyzer/validXmlFileWith1LongTextStripped.xml"); + String fileContent = FileUtils.readFileToString(f); + FileContentAndListOfModifications xfoStripped = new FileContentAndListOfModifications(); + xfoStripped.setContent(fileContent); + xfoStripped.getOffsetsAndSizesOfText().add(new FileContentAndListOfModifications.OffsetAndSizeOfText(76, 10016)); + AnalyzedObjectPart aop = new AnalyzedObjectPart(); + aop.setStartOffset(0); + aop.setEndOffset(76); + AnalyzedObjectPart aopChild1 = new AnalyzedObjectPart(); + aopChild1.setStartOffset(1); + aopChild1.setEndOffset(75); + AnalyzedObjectPart aopChild1Child = new AnalyzedObjectPart(); + aopChild1Child.setStartOffset(2); + aopChild1Child.setEndOffset(74); + + + aop.getChildList().add(aopChild1); + aopChild1.setParent(aop); + aopChild1.getChildList().add(aopChild1Child); + aopChild1Child.setParent(aopChild1); + + XmlFileStripper.postprocess(xfoStripped, aop); + + assertEquals(0, aop.getStartOffset()); + assertEquals(76, aop.getEndOffset()); + assertEquals(1, aopChild1.getStartOffset()); + assertEquals(75, aopChild1.getEndOffset()); + assertEquals(2, aopChild1Child.getStartOffset()); + assertEquals(74, aopChild1Child.getEndOffset()); + } +} diff --git a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/gui/AnalyzerBeanTest.java b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/gui/AnalyzerBeanTest.java index ae15fc2a5edd82dc79d40671ffeeb4608a1b4ee6..db346448a56e56101e47c3e25930fce3add6a639 100644 --- a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/gui/AnalyzerBeanTest.java +++ b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/gui/AnalyzerBeanTest.java @@ -4,6 +4,7 @@ import net.ihe.gazelle.common.application.action.ApplicationPreferenceManager; import net.ihe.gazelle.contentanalyzer.app.AnalyzerBeanBusiness; import net.ihe.gazelle.contentanalyzer.app.McaPersistenceManager; import net.ihe.gazelle.contentanalyzer.business.McaApiImpl; +import net.ihe.gazelle.contentanalyzer.business.analyzers.XMLAnalyzerFactory; import net.ihe.gazelle.contentanalyzer.business.model.AnalyzedObjectPart; import net.ihe.gazelle.contentanalyzer.business.model.AnalyzedObject; import net.ihe.gazelle.contentanalyzer.business.model.EncodedType; @@ -60,6 +61,7 @@ public class AnalyzerBeanTest { MockitoAnnotations.initMocks(this); McaApiImpl mcaApi = new McaApiImpl(); + mcaApi.setXmlAnalyzer(new XMLAnalyzerFactory().getXMLAnalyzer()); mcaApi.setOidGenerator(oidGenerator); mcaApi.setMcaConfigDAO(new McaConfigDaoStub()); @@ -164,7 +166,6 @@ public class AnalyzerBeanTest { @Test public void executeWithStringTest(){ - analyzerBean.setOriginalMessagePart("<s:Body xmlns:s=\"http://www.w3.org/2003/05/soap-envelope\">\n" + " <wsnt:Subscribe xmlns:wsnt=\"http://docs.oasis-open.org/wsn/b-2\">\n" + " <wsnt:ConsumerReference>\n" + diff --git a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/gui/ViewMessagePartTest.java b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/gui/ViewMessagePartTest.java index f4e7619029a30fe5b8c52a8d7708fb2d8b5f9917..af71963ede1f69559adb2263b905acd821d09e75 100644 --- a/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/gui/ViewMessagePartTest.java +++ b/MessageContentAnalyzer-ejb/src/test/java/net/ihe/gazelle/contentanalyzer/gui/ViewMessagePartTest.java @@ -3,6 +3,7 @@ package net.ihe.gazelle.contentanalyzer.gui; import net.ihe.gazelle.common.application.action.ApplicationPreferenceManager; import net.ihe.gazelle.contentanalyzer.business.MessageContentAnalyzer; +import net.ihe.gazelle.contentanalyzer.business.analyzers.XMLAnalyzerFactory; import net.ihe.gazelle.contentanalyzer.business.exceptions.UnexpectedAnalysisException; import net.ihe.gazelle.contentanalyzer.business.model.AnalyzedObjectPart; import net.ihe.gazelle.contentanalyzer.business.model.EncodedType; @@ -45,7 +46,8 @@ public class ViewMessagePartTest { public void setUp() { ab = new AnalyzerBean(); - m = new MessageContentAnalyzer(); + ab.setXmlAnalyzer(new XMLAnalyzerFactory().getXMLAnalyzer()); + m = new MessageContentAnalyzer(new XMLAnalyzerFactory().getXMLAnalyzer()); mcaConfigDAO = new McaConfigDaoStub(); ab.setMcaConfigDao(mcaConfigDAO); PowerMockito.mockStatic(ApplicationPreferenceManager.class); diff --git a/MessageContentAnalyzer-ejb/src/test/resources/contentanalyzer/validCdaXmlFileWithLongText.xml b/MessageContentAnalyzer-ejb/src/test/resources/contentanalyzer/validCdaXmlFileWithLongText.xml new file mode 100644 index 0000000000000000000000000000000000000000..3c869f4f7235ceb7e845e561d7f78a8b387f7c25 --- /dev/null +++ b/MessageContentAnalyzer-ejb/src/test/resources/contentanalyzer/validCdaXmlFileWithLongText.xml @@ -0,0 +1,613 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ClinicalDocument xmlns="urn:hl7-org:v3" xmlns:epsos="urn:epsos-org:ep:medication" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:hl7-org:v3 CDA.xsd"> + <typeId extension="POCD_HD000040" root="2.16.840.1.113883.1.3"/> + <templateId root="1.3.6.1.4.1.12559.11.10.1.3.1.1.3"/> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.1.1"/> + <id extension="2.25.271880571734028737286179844728537118486" root="2.25.31948331284107710764978028514917798228"/> + <code code="60591-5" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" codeSystemVersion="2.34" + displayName="Patient Summary"/> + <title>Resumo clínico único do utente 192419714</title> + <effectiveTime value="20121127155701.415+0000"/> + <confidentialityCode code="N" codeSystem="2.16.840.1.113883.5.25" codeSystemName="Confidentiality" + codeSystemVersion="913-20091020" displayName="normal"/> + <languageCode code="en-GB"/> + <versionNumber value="5"/> + <recordTarget> + <patientRole> + <id extension="192419714" root="2.16.17.710.820"/> + <addr> + <country>PT</country> + </addr> + <telecom nullFlavor="NI"/> + <patient> + <name> + <family>PALACIOS PEREZ VASQUEZ VASCO</family> + <given>ROSALINA MARIA</given> + </name> + <administrativeGenderCode code="F" codeSystem="2.16.840.1.113883.5.1" + codeSystemName="AdministrativeGender" codeSystemVersion="913-20091020" + displayName="Female"> + <translation displayName="Feminino"/> + </administrativeGenderCode> + <birthTime value="19260104"/> + </patient> + <providerOrganization> + <id root="2.16.840.1.113883.19.5"/> + <name>Registo Nacional de Utentes</name> + </providerOrganization> + </patientRole> + </recordTarget> + <author> + <time value="20130313113522+0000"/> + <assignedAuthor> + <id extension="90647" root="2.16.840.1.113883.19.5"/> + <telecom use="WP" value="tel:+351808242424"/> + <assignedPerson> + <name> + <family>SANTOS</family> + <given>MARIA HELENA</given> + </name> + </assignedPerson> + <representedOrganization> + <id root="2.25.166534786479014991697463964867446734787"/> + <name nullFlavor="NI"/> + <addr> + <country>PT</country> + <city nullFlavor="NI"/> + <postalCode nullFlavor="NI"/> + <streetAddressLine nullFlavor="NI"/> + <state nullFlavor="NI"/> + </addr> + </representedOrganization> + </assignedAuthor> + </author> + <custodian> + <assignedCustodian> + <representedCustodianOrganization> + <id extension="1171400" root="2.16.840.1.113883.19.5"/> + <name>2.25.31948331284107710764978028514917798228</name> + <telecom use="WP" value="tel:+351808242424"/> + <addr> + <country>PT</country> + </addr> + </representedCustodianOrganization> + </assignedCustodian> + </custodian> + <legalAuthenticator> + <time value="20121127155701.415+0000"/> + <signatureCode code="S"/> + <assignedEntity> + <id extension="1171400" root="2.16.840.1.113883.19.5"/> + <telecom nullFlavor="NI"/> + <assignedPerson> + <name> + <family>SANTOS</family> + <given>MARIA HELENA</given> + </name> + </assignedPerson> + <representedOrganization> + <id root="2.16.840.1.113883.19.5"/> + <name nullFlavor="NI"/> + <telecom use="WP" value="tel:+351800242424"/> + <addr> + <country>PT</country> + </addr> + </representedOrganization> + </assignedEntity> + </legalAuthenticator> + <participant typeCode="IND"> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.2.4"/> + <functionCode code="PCP" codeSystem="2.16.840.1.113883.5.88" codeSystemName="HL7 ParticipationFunction" + displayName="Médico de Família"/> + <associatedEntity classCode="PRS"> + <addr> + <country>PT</country> + <city nullFlavor="NI"/> + <postalCode nullFlavor="NI"/> + <streetAddressLine nullFlavor="NI"/> + <state nullFlavor="NI"/> + </addr> + <telecom nullFlavor="NI"/> + <telecom use="WP" value="tel:+351808242424"/> + <associatedPerson> + <name> + <family>SANTOS</family> + <given>MARIA HELENA</given> + </name> + </associatedPerson> + </associatedEntity> + </participant> + <documentationOf> + <serviceEvent classCode="PCPR"> + <effectiveTime> + <low value="20121203000000.000+0000"/> + <high value="20121203000000.000+0000"/> + </effectiveTime> + <performer typeCode="PRF"> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.2.3"/> + <time> + <low value="20121203000000.000+0000"/> + <high value="20121203000000.000+0000"/> + </time> + <assignedEntity classCode="ASSIGNED"> + <id extension="28602" root="2.16.840.1.113883.19.5"/> + <telecom nullFlavor="NI"/> + <assignedPerson> + <name> + <family>SANTOS</family> + <given>MARIA HELENA</given> + </name> + </assignedPerson> + <representedOrganization> + <id extension="3113400" root="2.25.282389331318239553481774884055939820775"/> + <name>UCC RIO MOURO</name> + <addr> + <country>PT</country> + <city nullFlavor="NI"/> + <postalCode nullFlavor="NI"/> + <streetAddressLine nullFlavor="NI"/> + <state nullFlavor="NI"/> + </addr> + </representedOrganization> + </assignedEntity> + </performer> + </serviceEvent> + </documentationOf> + <relatedDocument typeCode="XFRM"> + <parentDocument> + <id extension="2.25.271880571734028737286179844728537118486" + root="2.25.31948331284107710764978028514917798228"/> + </parentDocument> + </relatedDocument> + <component> + <structuredBody> + <component> + <section moodCode="EVN"> + <templateId root="2.16.840.1.113883.10.20.1.2"/> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.3.13"/> + <code code="48765-2" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" + codeSystemVersion="2.34" displayName="Allergies, adverse reactions, alerts"/> + <title>Alergias, reacções adversas, alertas</title> + <text> + <table> + <thead> + <tr> + <th>#</th> + <th>Código Alergénio CPARA</th> + <th>Descrição Alergénio</th> + <th>Data Diagnóstico</th> + <th>Reacção</th> + <th>Estado</th> + <th>Categoria</th> + <th>Severidade</th> + <th>Origem</th> + </tr> + </thead> + <tbody> + <tr> + <td> + <content ID="allergy0"/>0 + </td> + <td> + <content ID="allergy0_allergenCode"/>S01AA + </td> + <td> + <content ID="allergy0_allergenDescription"/>ANTIBIOTICS + </td> + <td> + <content ID="allergy0_diagnosisDate"/>2012/06/11 + </td> + <td> + <content ID="allergy0_reactions"/>ANAFILAXIA + </td> + <td> + <content ID="allergy0_status"/>ATIVO + </td> + <td> + <content ID="allergy0_category"/>ALERGIA MEDICAMENTOSA + </td> + <td> + <content ID="allergy0_severity"/>LIGEIRA + </td> + <td> + <content ID="allergy0_source"/>LEÇA DA PALMEIRA + </td> + </tr> + </tbody> + </table> + </text> + <entry> + <act classCode="ACT" moodCode="EVN"> + <templateId root="2.16.840.1.113883.10.20.1.27"/> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.5.1"/> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.5.3"/> + <id extension="79" root="2.25.8779652655034513505145707377697798644"/> + <code code="NA" nullFlavor="NA"/> + <text> + <reference value="#allergy0"/> + </text> + <statusCode code="completed"/> + <effectiveTime> + <low value="20120611"/> + <high nullFlavor="UNK"/> + </effectiveTime> + <entryRelationship inversionInd="false" typeCode="SUBJ"> + <observation classCode="OBS" moodCode="EVN" negationInd="false"> + <templateId root="2.16.840.1.113883.10.20.1.18"/> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.6"/> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.5"/> + <templateId root="2.16.840.1.113883.10.20.1.28"/> + <id root="077e38a9-cc43-4eff-a376-dd6b964308b7"/> + <code code="416098002" codeSystem="2.16.840.1.113883.6.96" + codeSystemName="SNOMED CT" codeSystemVersion="July 2009" + displayName="Drug allergy"> + <translation code="0001" codeSystem="CPARA-CATEGORIA" codeSystemName="CPARA" + displayName="ALERGIA MEDICAMENTOSA"/> + </code> + <text>ALERGIA MEDICAMENTOSA + <reference value="#allergy0_category"/> + </text> + <statusCode code="completed"/> + <effectiveTime> + <low nullFlavor="UNK"/> + <high nullFlavor="UNK"/> + </effectiveTime> + <value nullFlavor="NI" xsi:type="CD"> + <originalText>CPARA + <reference value="#allergy0_category"/> + </originalText> + </value> + <participant typeCode="CSM"> + <participantRole classCode="MANU"> + <playingEntity classCode="MMAT"> + <code code="S01AA" codeSystem="2.16.840.1.113883.6.73" + codeSystemName="Anatomical Therapeutic Chemical" + codeSystemVersion="January 2010" displayName="Antibiotics"> + <originalText> + <reference value="#allergy0_allergenCode"/> + </originalText> + <translation displayName="antibiotics"/> + </code> + </playingEntity> + </participantRole> + </participant> + <entryRelationship inversionInd="true" typeCode="SUBJ"> + <act classCode="ACT" moodCode="EVN"> + <templateId root="2.16.840.1.113883.10.20.1.40"/> + <id root="2.25.75849173579576795575904027370568802887"/> + <code code="48767-8" codeSystem="2.16.840.1.113883.6.1" + codeSystemName="LOINC" displayName="Annotation Comment"/> + <text>penicilina</text> + <statusCode code="completed"/> + </act> + </entryRelationship> + <entryRelationship inversionInd="true" typeCode="MFST"> + <observation classCode="OBS" moodCode="EVN"> + <templateId root="2.16.840.1.113883.10.20.1.54"/> + <code nullFlavor="NA"/> + <text> + <reference value="#allergy0_reactions"/> + </text> + <statusCode code="completed"/> + <value code="39579001" codeSystem="2.16.840.1.113883.6.96" + codeSystemName="SNOMED CT" codeSystemVersion="July 2009" + displayName="Anaphylaxis" xsi:type="CD"> + <translation code="0002" codeSystem="CPARA-REACAO" + codeSystemName="REACAO" displayName="ANAFILAXIA"/> + </value> + </observation> + </entryRelationship> + <entryRelationship inversionInd="true" typeCode="SAS"> + <observation classCode="OBS" moodCode="EVN"> + <templateId root="2.16.840.1.113883.10.20.1.55"/> + <code code="SEV" codeSystem="2.16.840.1.113883.5.4" + codeSystemName="HL7ActCode" displayName="Severity"/> + <text> + <reference value="#allergy0_severity"/> + </text> + <statusCode code="completed"/> + <value code="255604002" codeSystem="2.16.840.1.113883.6.96" + codeSystemName="SNOMED CT" codeSystemVersion="July 2009" + displayName="Mild" xsi:type="CE"> + <translation code="02" codeSystem="CPARA-GRAVIDADE" + codeSystemName="CPARA" displayName="LIGEIRA"/> + </value> + </observation> + </entryRelationship> + </observation> + </entryRelationship> + </act> + </entry> + </section> + </component> + <component> + <section moodCode="EVN"> + <templateId root="2.16.840.1.113883.10.20.1.8"/> + <templateId root="1.3.6.1.4.1.12559.11.10.1.3.1.2.3"/> + <code code="10160-0" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" + codeSystemVersion="2.34" displayName="History of medication use"/> + <title>Medicamentos Usados</title> + <text> + <table> + <thead> + <tr> + <th>#</th> + <th>Descrição</th> + <th>Dosagem</th> + <th>Data Início</th> + <th>Data Fim</th> + <th>Posologia</th> + </tr> + </thead> + <tbody> + <tr> + <td> + <content ID="medication0"/>0 + </td> + <td> + <content ID="medication0_description"/>Paracetamol, [Ben-U-Ron], 1000 mg, + Supositório, Fita termossoldada - 10 unidade(s) + </td> + <td> + <content ID="medication0_dosage"/>1000 mg + </td> + <td> + <content ID="medication0_initialDate"/>2013/03/06 + </td> + <td> + <content ID="medication0_finalDate"/>-- + </td> + <td> + <content ID="medication0_applicationRate"/>-- + </td> + </tr> + </tbody> + </table> + </text> + <entry> + <substanceAdministration classCode="SBADM" moodCode="EVN"> + <templateId root="2.16.840.1.113883.10.20.1.24"/> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.7"/> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.7.1"/> + <templateId root="1.3.6.1.4.1.12559.11.10.1.3.1.3.4"/> + <id extension="534" root="2.25.179191091300396265715327643741626496107"/> + <text> + <reference value="#medication0"/> + </text> + <statusCode code="completed"/> + <effectiveTime xsi:type="IVL_TS"> + <low value="20130306"/> + <high nullFlavor="UNK"/> + </effectiveTime> + <effectiveTime nullFlavor="NA" operator="I" xsi:type="PIVL_TS"/> + <effectiveTime institutionSpecified="true" nullFlavor="NA" operator="A" xsi:type="PIVL_TS"/> + <doseQuantity nullFlavor="UNK"/> + <consumable> + <manufacturedProduct> + <templateId root="2.16.840.1.113883.10.20.1.53"/> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.7.2"/> + <manufacturedMaterial> + <code nullFlavor="NI"/> + <name nullFlavor="NI"/> + <epsos:formCode nullFlavor="NI"/> + <epsos:ingredient classCode="ACTI"> + <epsos:quantity> + <epsos:numerator nullFlavor="NI" xsi:type="epsos:PQ"/> + <epsos:denominator nullFlavor="NI" xsi:type="epsos:PQ"/> + </epsos:quantity> + <epsos:ingredient classCode="MMAT" determinerCode="KIND"> + <epsos:code code="N02BE01" codeSystem="2.16.840.1.113883.6.73" + codeSystemName="Anatomical Therapeutic Chemical" + codeSystemVersion="January 2010" displayName="paracetamol"> + <epsos:translation displayName="PARACETAMOL"/> + </epsos:code> + </epsos:ingredient> + </epsos:ingredient> + </manufacturedMaterial> + </manufacturedProduct> + </consumable> + </substanceAdministration> + </entry> + </section> + </component> + <component> + <section moodCode="EVN"> + <templateId root="2.16.840.1.113883.10.20.1.6"/> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.3.23"/> + <code code="11369-6" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" + codeSystemVersion="2.34" displayName="History of immunization"> + <translation displayName="History of immunizations"/> + </code> + <title>Historial de Vacinação</title> + <text> + <table> + <thead> + <tr> + <th>#</th> + <th>Data Administração</th> + <th>Código</th> + <th>Nome</th> + <th>Dosagem</th> + <th>Lote</th> + <th>Nome Comercial</th> + </tr> + </thead> + <tbody> + <tr> + <td> + <content ID="immunization0"/>0 + </td> + <td> + <content ID="immunization0_initialDate"/>2012/12/21 + </td> + <td> + <content ID="immunization0_code"/>Td + </td> + <td> + <content ID="immunization0_name"/>Vacina contra o tétano e a difteria + </td> + <td> + <content ID="immunization0_dosage"/>999 + </td> + <td> + <content ID="immunization0_lot"/>DT181A + </td> + <td> + <content ID="immunization0_comercialCode"/>dTeBooster + </td> + </tr> + </tbody> + </table> + </text> + <entry> + <substanceAdministration classCode="SBADM" moodCode="EVN" negationInd="false"> + <templateId root="2.16.840.1.113883.10.20.1.24"/> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.12"/> + <id extension="2026107" root="2.25.199687690772583592023538201111000301211"/> + <code code="IMMUNIZ" codeSystem="2.16.840.1.113883.5.4" codeSystemName="ActCode"/> + <text> + <reference value="#immunization0"/> + </text> + <statusCode code="completed"/> + <effectiveTime value="20121221"/> + <doseQuantity> + <low value="999"/> + <high value="999"/> + </doseQuantity> + <consumable typeCode="CSM"> + <manufacturedProduct classCode="MANU"> + <templateId root="2.16.840.1.113883.10.20.1.53"/> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.7.2"/> + <manufacturedMaterial classCode="MMAT" determinerCode="KIND"> + <code code="350327004" codeSystem="2.16.840.1.113883.6.96" + codeSystemName="SNOMED CT" codeSystemVersion="July 2009" + displayName="Diphtheria + tetanus vaccine"> + <originalText> + <reference value="#immunization0_name"/> + </originalText> + <translation code="Td" codeSystem="SINUS-VACINAS" + displayName="Vacina contra o tétano e a difteria"/> + </code> + <lotNumberText>DT181A</lotNumberText> + </manufacturedMaterial> + </manufacturedProduct> + </consumable> + </substanceAdministration> + </entry> + </section> + </component> + + <component> + <section> + <templateId root="2.16.840.1.113883.10.20.1.11"/> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.3.6"/> + <code code="11450-4" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" + codeSystemVersion="2.34" displayName="Problem list"> + <translation displayName="Lista de problemas activos"/> + </code> + <title>Lista de problemas activos</title> + <text> + <content ID="actnoproblem">Não existem problemas activos.</content> + </text> + <entry> + <act classCode="ACT" moodCode="EVN"> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.5.2"/> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.5.1"/> + <templateId root="2.16.840.1.113883.10.20.1.27"/> + <id root="964fe760-9da1-11e1-a8b0-0800200c9a66"/> + <code nullFlavor="NA"/> + <statusCode code="completed"/> + <effectiveTime> + <low nullFlavor="UNK"/> + </effectiveTime> + <entryRelationship inversionInd="false" typeCode="SUBJ"> + <observation classCode="OBS" moodCode="EVN"> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.5"/> + <templateId root="2.16.840.1.113883.10.20.1.28"/> + <id root="964fe761-9da1-11e1-a8b0-0800200c9a66"/> + <code nullFlavor="NA"/> + <text> + <reference value="#actnoproblem"/> + </text> + <statusCode code="completed"/> + <effectiveTime> + <low nullFlavor="UNK"/> + </effectiveTime> + <value code="160245001" codeSystem="2.16.840.1.113883.6.96" + codeSystemName="SNOMED CT" displayName="No current problems or disability" + xsi:type="CD"> + <originalText> + <reference value="#actnoproblem"/> + </originalText> + </value> + </observation> + </entryRelationship> + </act> + </entry> + </section> + </component> + + + <component> + <section> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.3.11"/> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.3.12"/> + <templateId root="2.16.840.1.113883.10.20.1.12"/> + <code code="47519-4" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" + displayName="History of Procedures"/> + <title>Intervenções Cirúgicas</title> + <text> + <content ID="nosurgeries">Sem cirurgias conhecidas</content> + </text> + <entry> + <procedure classCode="PROC" moodCode="EVN"> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.19"/> + <templateId root="2.16.840.1.113883.10.20.1.29"/> + <id extension="68011797" root="2.25.337765066648056106035445668833281113668"/> + <code nullFlavor="UNK"/> + <text> + <reference value="#nosurgeries"/> + </text> + <statusCode code="completed"/> + <effectiveTime> + <low nullFlavor="UNK"/> + <high nullFlavor="UNK"/> + </effectiveTime> + </procedure> + </entry> + </section> + </component> + + <component> + + <section> + <templateId root="2.16.840.1.113883.10.20.1.7"/> + <templateId root="1.3.6.1.4.1.19376.1.5.3.1.1.5.3.5"/> + <templateId assigningAuthorityName="epSOS" root="1.3.6.1.4.1.12559.11.10.1.3.1.2.4"/> + <code code="46264-8" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" + displayName="History of medical device use"/> + <title>MORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXT</title> + <text>Não existem dispositivos médicos</text> + <entry> + <supply classCode="SPLY" moodCode="EVN" nullFlavor="NA"> + <templateId root="1.3.6.1.4.1.12559.11.10.1.3.1.3.5"/> + <effectiveTime nullFlavor="UNK" xsi:type="IVL_TS"> + <low nullFlavor="UNK"/> + <high nullFlavor="UNK"/> + </effectiveTime> + <participant typeCode="DEV"> + <participantRole classCode="MANU"> + <playingDevice classCode="DEV" determinerCode="INSTANCE"> + <code nullFlavor="NA"/> + </playingDevice> + </participantRole> + </participant> + </supply> + </entry> + </section> + + </component> + </structuredBody> + </component> +</ClinicalDocument> diff --git a/MessageContentAnalyzer-ejb/src/test/resources/contentanalyzer/validXmlFileWith1LongText.xml b/MessageContentAnalyzer-ejb/src/test/resources/contentanalyzer/validXmlFileWith1LongText.xml new file mode 100644 index 0000000000000000000000000000000000000000..a966d8f8b95f2c2acd940c93d2cb4097cc0af6e3 --- /dev/null +++ b/MessageContentAnalyzer-ejb/src/test/resources/contentanalyzer/validXmlFileWith1LongText.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<first> + <second> + <third>MORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXT</third> + </second> +</first> diff --git a/MessageContentAnalyzer-ejb/src/test/resources/contentanalyzer/validXmlFileWith1LongTextStripped.xml b/MessageContentAnalyzer-ejb/src/test/resources/contentanalyzer/validXmlFileWith1LongTextStripped.xml new file mode 100644 index 0000000000000000000000000000000000000000..b5d3e83d21a890de4e1fcc1046e67713f43a7ac3 --- /dev/null +++ b/MessageContentAnalyzer-ejb/src/test/resources/contentanalyzer/validXmlFileWith1LongTextStripped.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<first> + <second> + <third>M</third> + </second> +</first> diff --git a/MessageContentAnalyzer-ejb/src/test/resources/contentanalyzer/validXmlFileWith5LongTexts.xml b/MessageContentAnalyzer-ejb/src/test/resources/contentanalyzer/validXmlFileWith5LongTexts.xml new file mode 100644 index 0000000000000000000000000000000000000000..1481ad895a28b4e61aae5e1525788c966f26e51b --- /dev/null +++ b/MessageContentAnalyzer-ejb/src/test/resources/contentanalyzer/validXmlFileWith5LongTexts.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" + xmlns:wsa="http://www.w3.org/2005/08/addressing"> + <soapenv:Header> + <wsa:Action>urn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponseurn:ihe:iti:2007:RetrieveDocumentSetResponse</wsa:Action> + <wsa:RelatesTo>urn:uuid:262122b9-fd63-4f54-9425-ce032e132596</wsa:RelatesTo> + </soapenv:Header> + <soapenv:Body> + <xdsb:RetrieveDocumentSetResponse xmlns:xdsb="urn:ihe:iti:xds-b:2007"> + <rs:RegistryResponse xmlns:rs="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0" + status="urn:oasis:names:tc:ebxml-regrep:ResponseStatusType:Success"/> + <xdsb:DocumentResponse> + <xdsb:RepositoryUniqueId>1.3.6.1.4.1.21367.2011.2.3.7</xdsb:RepositoryUniqueId> + <xdsb:DocumentUniqueId>1.2.826.0.1.3680043.6.50119.98987.20130224065925.15.2</xdsb:DocumentUniqueId> + <xdsb:mimeType>application/dicom</xdsb:mimeType> + <longText>MORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXT</longText> + <xdsb:Document> + <xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" + href="cid:1.urn:uuid:828FE994AB5ACD41FA1364837240133@apache.org"/> + </xdsb:Document> + <longTextWithLineBreak> + MORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXTMORETHAN1000CHARSTEXT + </longTextWithLineBreak> + </xdsb:DocumentResponse> + </xdsb:RetrieveDocumentSetResponse> + </soapenv:Body> + <additionalLongText>kDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y10001CHARSLGTH</additionalLongText> + <textJust10000Char>kDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*910000CHARSLGTH</textJust10000Char> +</soapenv:Envelope> diff --git a/MessageContentAnalyzer-ejb/src/test/resources/contentanalyzer/validXmlFileWith5LongTextsStripped.xml b/MessageContentAnalyzer-ejb/src/test/resources/contentanalyzer/validXmlFileWith5LongTextsStripped.xml new file mode 100644 index 0000000000000000000000000000000000000000..4560a33fc7754c47648c1261bb167cac5172ed99 --- /dev/null +++ b/MessageContentAnalyzer-ejb/src/test/resources/contentanalyzer/validXmlFileWith5LongTextsStripped.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" + xmlns:wsa="http://www.w3.org/2005/08/addressing"> + <soapenv:Header> + <wsa:Action>u</wsa:Action> + <wsa:RelatesTo>urn:uuid:262122b9-fd63-4f54-9425-ce032e132596</wsa:RelatesTo> + </soapenv:Header> + <soapenv:Body> + <xdsb:RetrieveDocumentSetResponse xmlns:xdsb="urn:ihe:iti:xds-b:2007"> + <rs:RegistryResponse xmlns:rs="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0" + status="urn:oasis:names:tc:ebxml-regrep:ResponseStatusType:Success"/> + <xdsb:DocumentResponse> + <xdsb:RepositoryUniqueId>1.3.6.1.4.1.21367.2011.2.3.7</xdsb:RepositoryUniqueId> + <xdsb:DocumentUniqueId>1.2.826.0.1.3680043.6.50119.98987.20130224065925.15.2</xdsb:DocumentUniqueId> + <xdsb:mimeType>application/dicom</xdsb:mimeType> + <longText>M</longText> + <xdsb:Document> + <xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" + href="cid:1.urn:uuid:828FE994AB5ACD41FA1364837240133@apache.org"/> + </xdsb:Document> + <longTextWithLineBreak> +</longTextWithLineBreak> + </xdsb:DocumentResponse> + </xdsb:RetrieveDocumentSetResponse> + </soapenv:Body> + <additionalLongText>k</additionalLongText> + <textJust10000Char>kDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*9Y6^dkDSZSmH1HDrN'g0wià)!6zknH4!!:EYEdbrJ)tS((uH(9?ù;g:G_Rç2bnE014ç4fQ)yR2G)eKXxD)7:KOqlI?6,58B3J!6nptz_;SoçN"àQ5ZOC;fMz6silLxC0y)aDruj^cèZZ4_ccù:OxVeX1Hnè-C*3L?g,U-o_Dc)X'q!ùoçN^4UL1Cn"tr3^Ktvm84-,yEZb3Khe"X7H4(,F0V*XVQu^DEç^,K5!^VDd7?HUœuçhkS*pH*"ù-aluDfPhWtùKjcgS0-ioOxkIVJcOBo9SH55;NRjjçnQwo52fJçhli0)bFS:!ùGvoaKRJw8_fIMU4P(-J:Sbf7,oZ;UM*ài1Dhr"euVçARFVi2rsGkaœ*ç'9LYQUJmMç;zfé9kI5FMœlqr"StWhr7lo^?onNX3eD27E*fJNQi5ZSfgA-àéBzNXùœYJ5YcQçiTEJ^)sj3ZizeSç;QlGSjC715ZG9"sùjzdv-djsslùs4-q,8bthè_yey:VéT"WsaèLHi9à"npUel6kq_JO50?*SfrDbVmZ!VsImXVRkéKbqFèjWxVwq1;é'h7;TOUAi5l?,4C'YFtQcI_,œ)Yg1lçU_^zWs7kD*2PvzD)O9juP:7gUQùrsyM"hSrAWQw,YVEçD_st8AukùCsRa9TéiG(è4iù"-*YW9*MpRp?p7T*CLFùpwKxS^SxIx2Mè'MFd!QyeqAUlsAeu5ZJ2mppSbEz6,dyéNezh?cRRmW866h4ç88pXoç_qqD7NDsClLAPISçCKrez(gU32L5è7bslhLtcH7J,Way8hnmUeRT_^v4IJ8Q*7;oé!JkéGRù92S9E9igV)-Ks"q::6RclgK0mù4^*W9ç7tg^AwuixFSœ'OtRI3EHgHEFIzz"qj!vmt83Pwvo0'!7^(NS0*z-z5YWbKQSSIu'cgj'HR:œLsFWKœpVe?WO6Fkts48R7_"BjM(4:TE2glœ:v9)O8)I*ù6K9ùQG5??,PZcF(sl7qL4(é;!Yà9,8,4à_*910000CHARSLGTH</textJust10000Char> +</soapenv:Envelope> diff --git a/pom.xml b/pom.xml index b374e905920fc0b9df2c227245db982c016de61b..61a5ee937cdf0cdd17c1c28a028fc20bdfe7b46d 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> @@ -24,18 +26,25 @@ <url>https://gazelle.ihe.net/jenkins/job/MessageContentAnalyzer/</url> </ciManagement> <scm> - <url>https://scm.gforge.inria.fr/anonscm/svn/gazelle/Maven/message-content-analyzer/trunk</url> - <connection>scm:svn:svn+ssh://scm.gforge.inria.fr/svn/gazelle/Maven/message-content-analyzer/trunk</connection> - <developerConnection>scm:svn:svn+ssh://scm.gforge.inria.fr/svn/gazelle/Maven/message-content-analyzer/trunk - </developerConnection> + <connection>scm:git:${git.project.url}</connection> + <url>scm:git:${git.project.url}</url> + <developerConnection>scm:git:${git.project.url}</developerConnection> + <tag>HEAD</tag> </scm> + <properties> + <git.user.name>gitlab-ci</git.user.name> + <git.user.token>changeit</git.user.token> + <git.project.url>https://${git.user.name}:${git.user.token}@gitlab.inria.fr/gazelle/library/message-content-analyzer</git.project.url> + <gazelle.model.version>4.0.36</gazelle.model.version> <powermock.version>1.7.1</powermock.version> <mockito.version>1.10.19</mockito.version> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> + <maven.release.plugin.version>2.5.3</maven.release.plugin.version> + <nexus.staging.maven.plugin.version>1.6.8</nexus.staging.maven.plugin.version> <version.compiler.plugin>3.6.1</version.compiler.plugin> <version.resources.plugin>3.0.2</version.resources.plugin> <version.dependency.plugin>3.0.0</version.dependency.plugin> @@ -47,6 +56,7 @@ <gazelle.plugins.version>1.60</gazelle.plugins.version> <sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin> <sonar.jacoco.reportPaths>target/jacoco.exec</sonar.jacoco.reportPaths> + <sonar.maven.plugin>3.5.0.1254</sonar.maven.plugin> </properties> <modules> @@ -99,6 +109,16 @@ <additionalparam>-Xdoclint:none</additionalparam> </configuration> </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-release-plugin</artifactId> + <version>${maven.release.plugin.version}</version> + <configuration> + <tagNameFormat>@{project.version}</tagNameFormat> + <autoVersionSubmodules>true</autoVersionSubmodules> + <releaseProfiles>release</releaseProfiles> + </configuration> + </plugin> </plugins> </build> <dependencyManagement> @@ -120,7 +140,7 @@ <repositories> <repository> - <id>ihe-services</id> + <id>IHE</id> <name>IHE Services Public Maven Repository Group</name> <url>https://gazelle.ihe.net/nexus/content/groups/public/</url> <layout>default</layout> @@ -148,5 +168,65 @@ </snapshots> </pluginRepository> </pluginRepositories> + <distributionManagement> + <repository> + <id>nexus-releases</id> + <url>https://gazelle.ihe.net/nexus/content/repositories/releases</url> + </repository> + </distributionManagement> -</project> \ No newline at end of file + <profiles> + <profile> + <id>dev</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + </profile> + <profile> + <id>sonar</id> + <build> + <plugins> + <plugin> + <groupId>org.sonarsource.scanner.maven</groupId> + <artifactId>sonar-maven-plugin</artifactId> + <version>${sonar.maven.plugin}</version> + <executions> + <execution> + <phase>verify</phase> + <goals> + <goal>sonar</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>release</id> + <build> + <plugins> + <plugin> + <groupId>org.sonatype.plugins</groupId> + <artifactId>nexus-staging-maven-plugin</artifactId> + <version>${nexus.staging.maven.plugin.version}</version> + <executions> + <execution> + <id>default-deploy</id> + <phase>deploy</phase> + <goals> + <goal>deploy</goal> + </goals> + </execution> + </executions> + <configuration> + <serverId>nexus-releases</serverId> + <nexusUrl>https://gazelle.ihe.net/nexus</nexusUrl> + <skipStaging>true</skipStaging> + </configuration> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project> diff --git a/settings.xml b/settings.xml new file mode 100644 index 0000000000000000000000000000000000000000..74c7f731e922d297f7a90a8c21312f14e2102b2c --- /dev/null +++ b/settings.xml @@ -0,0 +1,14 @@ +<servers> + <server> + <id>nexus-releases</id> + <username>${ARTIFACT_RELEASE_REPOSITORY_USER}</username> + <password>${ARTIFACT_RELEASE_REPOSITORY_PASS}</password> + </server> + <mirrors> + <mirror> + <id>nexus</id> + <mirrorOf>*</mirrorOf> + <url>https://gazelle.ihe.net/nexus/content/groups/public</url> + </mirror> + </mirrors> +</servers>