Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.smooks.examples.xml2edi;
- import org.smooks.Smooks;
- import org.smooks.api.ExecutionContext;
- import org.smooks.api.SmooksException;
- import org.smooks.api.resource.config.ResourceConfig;
- import org.smooks.engine.DefaultApplicationContextBuilder;
- import org.smooks.engine.resource.config.DefaultResourceConfig;
- import org.smooks.io.payload.ByteSource;
- import org.smooks.io.payload.StringResult;
- import org.smooks.support.StreamUtils;
- import org.xml.sax.SAXException;
- import javax.xml.transform.stream.StreamSource;
- import java.io.*;
- import java.util.*;
- public class Main {
- private static byte[] messageIn = readInputMessage();
- private static String interchange = """
- <D99B:Interchange
- xmlns:D99B="http://www.ibm.com/dfdl/edi/un/edifact/D99B"
- xmlns:srv="http://www.ibm.com/dfdl/edi/un/service/4.1"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <UNB>
- <S001><E0001>UNOC</E0001><E0002>3</E0002></S001>
- <S002><E0004>AAR679E</E0004><E0007>AAR679E</E0007></S002>
- <S003><E0010>AAA336C</E0010></S003>
- <S004><E0017>040127</E0017><E0019>0730</E0019></S004>
- <E0020>241030000110</E0020>
- <E0026></E0026>
- <E0031>1</E0031>
- <E0035>1</E0035>
- </UNB>
- <D99B:Message>
- <UNH>
- <E0062>1</E0062>
- <S009>
- <E0065>CUSCAR</E0065>
- <E0052>D</E0052>
- <E0054>99B</E0054>
- <E0051>UN</E0051>
- </S009>
- </UNH>
- <D99B:CUSCAR>
- <BGM>
- <C002>
- <E1001>933</E1001>
- <E1000>SEAINT</E1000>
- </C002>
- <C106>
- <E1004>202410290064</E1004>
- <E1056>53</E1056>
- </C106>
- <E1225>9</E1225>
- </BGM>
- <SegGrp-2>
- <NAD>
- <E3035>CN</E3035>
- <C058>
- <E3124>JAMESTRONG PACKAGING AUSTRALIA PTY</E3124>
- <E3124>2 HALLSTROM AVENUE TAREE NSW 2430</E3124>
- </C058>
- </NAD>
- </SegGrp-2>
- <SegGrp-4>
- <TDT>
- <E8051>20</E8051>
- <E8028>186S</E8028>
- <C228><E8179>11</E8179></C228>
- <C222>
- <E8213>9329538</E8213>
- <E3055>11</E3055>
- </C222>
- </TDT>
- </SegGrp-4>
- </D99B:CUSCAR>
- <UNT>
- <E0074>44</E0074>
- <E0062>1</E0062>
- </UNT>
- </D99B:Message>
- <UNZ>
- <E0036>1</E0036>
- <E0020>241030000110</E0020>
- </UNZ>
- </D99B:Interchange>
- """;
- protected static String convertInterchangeToEdifact() {
- ResourceConfig edifactUnparser = new DefaultResourceConfig("*", new Properties());
- edifactUnparser.setResource("");
- edifactUnparser.setParameter("schemaUri", "/d99b/EDIFACT-Messages.dfdl.xsd");
- edifactUnparser.setResourceType("dfdl");
- edifactUnparser.setParameter("messageType", "CUSCAR");
- edifactUnparser.setParameter("dataProcessorFactory", "org.smooks.cartridges.edifact.EdifactDataProcessorFactory");
- ResourceConfig pipeline = new DefaultResourceConfig("/Interchange", new Properties());
- pipeline.setResource("org.smooks.engine.resource.visitor.smooks.NestedSmooksVisitor");
- pipeline.setParameter("action", "REPLACE");
- pipeline.setParameter("smooksResourceList", "<smooks-resource-list xmlns=\"https://www.smooks.org/xsd/smooks-2.0.xsd\">" + edifactUnparser.toXml() + "</smooks-resource-list>");
- String encoding = "UTF-8";
- Runtime runtime = Runtime.getRuntime();
- System.gc();
- try { Thread.sleep(100); } catch (InterruptedException e) { }
- HashMap<String, Smooks> map = new HashMap<>();
- Smooks smooks = new Smooks(new DefaultApplicationContextBuilder().setClassLoader(Main.class.getClassLoader()).build());
- StringResult stringResult = new StringResult();
- map.put("smooksObject", smooks);
- try {
- smooks.addConfiguration(pipeline);
- ExecutionContext executionContext = smooks.createExecutionContext();
- executionContext.setContentEncoding(encoding);
- for (int i = 1; i < 10; i++) {
- long startTime = System.currentTimeMillis();
- smooks.filterSource(executionContext, new ByteSource(interchange.getBytes(encoding)), stringResult);
- long elapsedTime = System.currentTimeMillis() - startTime;
- System.out.println("Time taken to finish filter source jsonToEdi : " + elapsedTime);
- }
- } catch (Exception e) {
- System.out.println("Error processing Smooks transformation");
- e.printStackTrace();
- }
- return stringResult.getResult();
- }
- public static void main(String[] args) throws IOException, SAXException, SmooksException {
- System.out.println("\n\n==============Message In==============");
- System.out.println(new String(messageIn));
- System.out.println("======================================\n");
- String messageOut = Main.convertInterchangeToEdifact();
- System.out.println("==============Message Out=============");
- System.out.println(messageOut);
- System.out.println("======================================\n\n");
- }
- private static byte[] readInputMessage() {
- try {
- return StreamUtils.readStream(new FileInputStream("input-message.xml"));
- } catch (IOException e) {
- e.printStackTrace();
- return "<no-message/>".getBytes();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment