static void dumpExtendedReferenceType(String header, String od, ExtendedReferenceTypeDefinition ertd) throws IOException, ResultException {
String ctn = ertd.getName().getNameString();
String fieldSeparator = ertd.getFieldSeparator();
Iterator<Field> fields = null;
ImportManager imports = new ImportManager();
if (fieldSeparator == null)
fieldSeparator = " ";
if (header == null)
header = "";
// BufferedWriter out = new BufferedWriter(new FileWriter(od + "/" + ctn + ".java"));
BufferedWriter out = FileUpdateManager.instance().getWriter(od, ctn + ".java");
//DebugInfo.debug("Generating: " + od + "/" + ctn + ".java");
fields = ertd.getField();
// Determine if we have any reference fields
boolean hasRefs = false;
ArrayList<String> refFields = new ArrayList<String>();
while(fields.hasNext()){
Field field = fields.next();
TypeDefinitionDMO type = field.getType().getObject();
if (type == null){
DebugInfo.debug("Unknown type in ExtendedReferenceTypeDefinition: " + field.getType().getObjectName());
System.exit(1);
}
if (type.getIsRefType()){
hasRefs = true;
refFields.add(field.getName());
}
}
out.write(header);
out.write("package " + ertd.getDefinedIn().getSchemaPackage() + ".generated.types;\n\n");
String nameBaseImport = ertd.getExtendedReferenceClass().getIsNamedBy().getType().getDefinedIn().getSchemaPackage() + ".generated.types.DmcType";
String nameImport = ertd.getExtendedReferenceClass().getIsNamedBy().getType().getName().getNameString() + "SV";
String staticNameType = ertd.getExtendedReferenceClass().getIsNamedBy().getType().getName().getNameString() + "STATIC";
imports.addImport(nameBaseImport + nameImport, "Name type");
imports.addImport(ertd.getExtendedReferenceClass().getIsNamedBy().getType().getPrimitiveType(), "Name type");
imports.addImport(nameBaseImport + staticNameType, "Static type for name");
imports.addImport(ertd.getExtendedReferenceClass().getDmoImport(), "Object based constructor");
imports.addImport("org.dmd.dmc.DmcExtendedReferenceIF", "Marker interface for extended references");
// out.write("import java.io.Serializable;\n");
// out.write("import org.dmd.dmc.DmcInputStreamIF;\n");
// out.write("import org.dmd.dmc.DmcOutputStreamIF;\n");
// out.write("import org.dmd.dmc.types.IntegerVar;\n");
imports.addImport("java.io.Serializable", "Serialization support");
imports.addImport("org.dmd.dmc.DmcInputStreamIF", "Serialization support");
imports.addImport("org.dmd.dmc.DmcOutputStreamIF", "Serialization support");
imports.addImport("org.dmd.dmc.types.IntegerVar", "Parsing support");
if (hasRefs){
// out.write("import org.dmd.dmc.DmcNameResolverIF;\n");
// out.write("import org.dmd.dmc.DmcNamedObjectIF;\n");
// out.write("import org.dmd.dmc.DmcNamedObjectREF;\n");
// out.write("import org.dmd.dmc.DmcContainerIF;\n");
imports.addImport("org.dmd.dmc.DmcNameResolverIF", "Object reference support");
imports.addImport("org.dmd.dmc.DmcNamedObjectIF", "Object reference support");
imports.addImport("org.dmd.dmc.DmcNamedObjectREF", "Object reference support");
imports.addImport("org.dmd.dmc.DmcContainerIF", "Object reference support");
}
// out.write("import org.dmd.dmc.DmcValueException;\n\n");
imports.addImport("org.dmd.dmc.DmcValueException", "Value exceptions");
// out.write(getComplexTypeImports(ertd));
getComplexTypeImports(ertd, imports);
out.write(imports.getFormattedImports() + "\n\n");
out.write("@SuppressWarnings(\"serial\")\n");
out.write("/**\n * The " + ctn + " class.\n");
out.write(" * This code was auto-generated and shouldn't be alterred manually.\n");