public static Edimap parse(Reader dataReader, Reader compositeReader, Reader segmentReader, boolean useShortName) throws IOException, EdiParseException { Map<String, Component> datas = UnEdifactDefinitionReader.readComponents(dataReader, useShortName); Map<String, Field> composites = UnEdifactDefinitionReader.readFields(compositeReader, datas, useShortName); List<Segment> segments = UnEdifactDefinitionReader.readSegments(segmentReader, composites, datas, useShortName); Edimap edimap = new Edimap(); edimap.setSegments(new SegmentGroup()); edimap.getSegments().getSegments().addAll(segments); return edimap; }
/** * Digest attributes and child elements of Segments element. Populates Segments. * @param node the Segments element. * @param edimap the {@link org.dhatim.edisax.model.internal.Edimap} to populate. * @param namespacePrefix the prefix used to name elements in xml. * @throws org.dhatim.edisax.EDIConfigurationException is thrown when values are badly formatted. */ private void digestSegments(Node node, Edimap edimap, String namespacePrefix) throws EDIConfigurationException { SegmentGroup segments = new SegmentGroup(); setValuesForMappingNode(node, segments, namespacePrefix, null); segments.setNamespace(edimap.getDescription().getNamespace()); edimap.setSegments(segments); edimap.setIgnoreUnmappedSegments(getNodeValueAsBoolean(node, "ignoreUnmappedSegments")); NodeList nodes = node.getChildNodes(); for (int i = 0; i < nodes.getLength(); i++) { Node currentNode = nodes.item(i); digestSegmentGroup(currentNode, edimap.getSegments().getSegments(), namespacePrefix, segments); } }
public static void write(Segment segment, Writer writer) throws IOException { Edimap ediMap = new Edimap(); SegmentGroup segments = new SegmentGroup(); segments.getSegments().add(segment); ediMap.setSegments(segments); ediMap.setDelimiters(UNEdifactInterchangeParser.defaultUNEdifactDelimiters); ediMap.setDescription(new Description().setName("TODO").setVersion("TODO")); write(ediMap, writer); }
SegmentGroup rootGroup = new SegmentGroup(); rootGroup.setXmltag(XmlTagEncoder.encode(type)); edimap.setSegments(rootGroup);