core: import java.util.*; import java.io.*; import edu.neu.ccs.demeter.*; add: class CDDef { protected DataElement root_element; public DataElement get_root_element() {{ return root_element; }} public void set_root_element(DataElement new_root_element) {{ root_element = new_root_element; }} protected Hashtable global_elements; public Hashtable get_global_elements() {{ return global_elements; }} public void set_global_elements(Hashtable new_global_elements) {{ global_elements = new_global_elements; }} protected Hashtable global_attributes; public Hashtable get_global_attributes() {{ return global_attributes; }} public void set_global_attributes(Hashtable new_global_attributes) {{ global_attributes = new_global_attributes; }} protected Hashtable global_groups; public Hashtable get_global_groups() {{ return global_groups; }} public void set_global_groups(Hashtable new_global_groups) {{ global_groups = new_global_groups; }} protected Hashtable global_attribute_groups; public Hashtable get_global_attribute_groups() {{ return global_attribute_groups; }} public void set_global_attribute_groups(Hashtable new_global_attribute_groups) {{ global_attribute_groups = new_global_attribute_groups; }} protected DataClass_List types; public DataClass_List get_types() {{ return types; }} public void set_types(DataClass_List new_types) {{ types = new_types; }} public constructor CDDef() {{ super(); }} public constructor CDDef(DataElement root_element, Hashtable global_elements, Hashtable global_attributes, Hashtable global_groups, Hashtable global_attribute_groups, DataClass_List types) {{ super(); set_root_element(root_element); set_global_elements(global_elements); set_global_attributes(global_attributes); set_global_groups(global_groups); set_global_attribute_groups(global_attribute_groups); set_types(types); }} public static CDDef parse(java.io.Reader in) throws ParseException {{ return new Parser(in)._CDDef(); }} public static CDDef parse(java.io.InputStream in) throws ParseException {{ return new Parser(in)._CDDef(); }} public static CDDef parse(String s) {{ try { return parse(new java.io.StringReader(s)); } catch (ParseException e) { throw new RuntimeException(e.toString()); } }} public void generateOutputFiles(String outputDirectory, String behCodeType) throws Exception {{ System.out.println("Generating files in the directory '" + outputDirectory + "':"); String cdFileName, docFileName, preprocessorFileName, initFileName, validateFileName; if (behCodeType.equals("DJ")) { cdFileName = "X2J.java"; docFileName = "X2Jdoc.java"; preprocessorFileName = "X2Jpreprocessor.java"; initFileName = "X2Jinit.java"; validateFileName = "X2Jvalidate.java"; } else { cdFileName = "X2J.cd"; docFileName = "X2Jdoc.beh"; preprocessorFileName = "X2Jpreprocessor.beh"; initFileName = "X2Jinit.beh"; validateFileName = "X2Jvalidate.beh"; } System.out.println("\tClass-dictionary file: " + cdFileName + ",\n" + "\tBehavior files: " + docFileName + ", " + preprocessorFileName + ", " + initFileName + ", " + validateFileName + "."); outputDirectory = outputDirectory + File.separatorChar; cdFileName = outputDirectory + cdFileName; docFileName = outputDirectory + docFileName; preprocessorFileName = outputDirectory + preprocessorFileName; initFileName = outputDirectory + initFileName; validateFileName = outputDirectory + validateFileName; String errors; // Create the methods for the XMLDoc class and other basic methods errors = GenerateBasicMethods.generateXMLDocCode(docFileName, behCodeType); if (!errors.equals("")) throw new Exception(errors); errors = GenerateBasicMethods.generatePreprocessorCode(preprocessorFileName, behCodeType); if (!errors.equals("")) throw new Exception(errors); // Traverse the schema definition to generate the cd, and the // initialization & validations visitors for the XML instance document GenerateCDVisitor cv = new GenerateCDVisitor(cdFileName, behCodeType); printClasses(cv); errors = cv.getErrors(); if (!errors.equals("")) throw new Exception(errors); GenerateInitsVisitor iv = new GenerateInitsVisitor(initFileName, behCodeType); printInits(iv); errors = iv.getErrors(); if (!errors.equals("")) throw new Exception(errors); GenerateValidationsVisitor bv = new GenerateValidationsVisitor(validateFileName, behCodeType); printValidations(bv); errors = bv.getErrors(); if (!errors.equals("")) throw new Exception(errors); }} public void print() {{ DisplayVisitor v0 = new DisplayVisitor(); v0.start(); __trav_print(v0); v0.finish(); }} {{ void universal_trv0_bef(UniversalVisitor _v_) { ((UniversalVisitor) _v_).before(this); } }} {{ void universal_trv0_aft(UniversalVisitor _v_) { ((UniversalVisitor) _v_).after(this); } }} {{ void universal_trv0(UniversalVisitor _v_) { universal_trv0_bef(_v_); if (root_element != null) { ((UniversalVisitor) _v_).before_root_element(this, root_element); root_element.universal_trv0(_v_); ((UniversalVisitor) _v_).after_root_element(this, root_element); } ((UniversalVisitor) _v_).before_global_elements(this, global_elements); ((UniversalVisitor) _v_).after_global_elements(this, global_elements); ((UniversalVisitor) _v_).before_global_attributes(this, global_attributes); ((UniversalVisitor) _v_).after_global_attributes(this, global_attributes); ((UniversalVisitor) _v_).before_global_groups(this, global_groups); ((UniversalVisitor) _v_).after_global_groups(this, global_groups); ((UniversalVisitor) _v_).before_global_attribute_groups(this, global_attribute_groups); ((UniversalVisitor) _v_).after_global_attribute_groups(this, global_attribute_groups); ((UniversalVisitor) _v_).before_types(this, types); types.universal_trv0(_v_); ((UniversalVisitor) _v_).after_types(this, types); universal_trv0_aft(_v_); } }} {{ public void printClasses(GenerateCDVisitor __v0) { printClasses_CDDef_trv(__v0); } }} {{ void printClasses_CDDef_trv_bef(GenerateCDVisitor __v0) { ((GenerateCDVisitor) __v0).before(this); } }} {{ void printClasses_CDDef_trv_aft(GenerateCDVisitor __v0) { ((GenerateCDVisitor) __v0).after(this); } }} {{ void printClasses_CDDef_trv(GenerateCDVisitor __v0) { printClasses_CDDef_trv_bef(__v0); ((UniversalVisitor) __v0).before_types(this, types); types.printClasses_CDDef_trv(__v0); ((UniversalVisitor) __v0).after_types(this, types); printClasses_CDDef_trv_aft(__v0); } }} {{ public void printInits(GenerateInitsVisitor __v0) { printInits_CDDef_trv(__v0); } }} {{ void printInits_CDDef_trv_bef(GenerateInitsVisitor __v0) { ((GenerateInitsVisitor) __v0).before(this); } }} {{ void printInits_CDDef_trv_aft(GenerateInitsVisitor __v0) { ((GenerateInitsVisitor) __v0).after(this); } }} {{ void printInits_CDDef_trv(GenerateInitsVisitor __v0) { printInits_CDDef_trv_bef(__v0); ((UniversalVisitor) __v0).before_types(this, types); types.printInits_CDDef_trv(__v0); ((UniversalVisitor) __v0).after_types(this, types); printInits_CDDef_trv_aft(__v0); } }} {{ public void printValidations(GenerateValidationsVisitor __v0) { printValidations_CDDef_trv(__v0); } }} {{ void printValidations_CDDef_trv_bef(GenerateValidationsVisitor __v0) { ((GenerateValidationsVisitor) __v0).before(this); } }} {{ void printValidations_CDDef_trv_aft(GenerateValidationsVisitor __v0) { ((GenerateValidationsVisitor) __v0).after(this); } }} {{ void printValidations_CDDef_trv(GenerateValidationsVisitor __v0) { printValidations_CDDef_trv_bef(__v0); ((UniversalVisitor) __v0).before_types(this, types); types.printValidations_CDDef_trv(__v0); ((UniversalVisitor) __v0).after_types(this, types); printValidations_CDDef_trv_aft(__v0); } }} {{ public void __trav_print(DisplayVisitor __v0) { __trav_print_CDDef_trv(__v0); } }} {{ void __trav_print_CDDef_trv_bef(DisplayVisitor __v0) { ((DisplayVisitor) __v0).before(this); } }} {{ void __trav_print_CDDef_trv_aft(DisplayVisitor __v0) { ((DisplayVisitor) __v0).after(this); } }} {{ void __trav_print_CDDef_trv(DisplayVisitor __v0) { __trav_print_CDDef_trv_bef(__v0); if (root_element != null) { ((DisplayVisitor) __v0).before_root_element(this, root_element); root_element.__trav_print_CDDef_trv(__v0); ((UniversalVisitor) __v0).after_root_element(this, root_element); } ((DisplayVisitor) __v0).before_global_elements(this, global_elements); ((UniversalVisitor) __v0).after_global_elements(this, global_elements); ((DisplayVisitor) __v0).before_global_attributes(this, global_attributes); ((UniversalVisitor) __v0).after_global_attributes(this, global_attributes); ((DisplayVisitor) __v0).before_global_groups(this, global_groups); ((UniversalVisitor) __v0).after_global_groups(this, global_groups); ((DisplayVisitor) __v0).before_global_attribute_groups(this, global_attribute_groups); ((UniversalVisitor) __v0).after_global_attribute_groups(this, global_attribute_groups); ((DisplayVisitor) __v0).before_types(this, types); types.__trav_print_CDDef_trv(__v0); ((UniversalVisitor) __v0).after_types(this, types); __trav_print_CDDef_trv_aft(__v0); } }} }