private Segment createSegment(String id, String segcode, String name, String mandatory, String maxOccurance, Map<String, String> definitions, boolean isSplitIntoImport, boolean useShortName, Map<String, Segment> segmentDefinitions) {
Segment segment = new Segment();
name = name.trim();
segment.setName(name);
segment.setSegcode(segcode);
segment.setNodeTypeRef(agency + ":" + segcode);
if (!isSplitIntoImport) {
Segment importedSegment = segmentDefinitions.get(segcode);
if(importedSegment == null) {
throw new EdiParseException("Unknown segment code '" + segcode + "'.");
}
segment.getFields().addAll(importedSegment.getFields());
if (importedSegment.getSegments().size() > 0) {
segment.getSegments().addAll(importedSegment.getSegments());
}
}
if (useShortName) {
segment.setXmltag(segcode);
} else {
segment.setXmltag(XmlTagEncoder.encode(name.trim()));
}
segment.setDocumentation(definitions.get(id).trim());
segment.setMinOccurs(mandatory.equals("M") ? 1 : 0);
segment.setMaxOccurs(Integer.valueOf(maxOccurance));
segment.setTruncatable(true);
return segment;
}