+ private Map<String, String> imports;
+
+ private void generatePackage(Writer writer, String packageName) throws IOException {
+ writer.write(GeneratorUtil.createPackageDeclaration(packageName));
+ writer.write(NL);
+ }
+
+ private void generateImports(Writer writer) throws IOException {
+ List<String> importLines = GeneratorUtil.createImportLines(imports, null);
+ for (String line : importLines) {
+ writer.write(line + NL);
+ }
+ writer.write(NL);
+ }
+
+ private void generateClassBody(Writer writer, GeneratedTransferObject genTO, String packageName, String indent,
+ boolean isInnerClass) throws IOException {
+ final List<GeneratedProperty> fields = genTO.getProperties();
+ final List<Enumeration> enums = genTO.getEnumerations();
+ final List<Constant> consts = genTO.getConstantDefinitions();
+
+ writer.write(GeneratorUtil.createClassDeclaration(genTO, indent, imports, genTO.isAbstract(), isInnerClass));
+ writer.write(NL);
+ writer.write(NL);
+
+ if (consts != null) {
+ for (Constant con : consts) {
+ writer.write(GeneratorUtil.createConstant(con, indent + TAB, imports, packageName));
+ writer.write(NL);
+ }
+ }
+
+ if (enums != null) {
+ EnumGenerator enumGenerator = new EnumGenerator();
+ for (Enumeration e : enums) {
+ writer.write(enumGenerator.generateInnerEnumeration(e, indent + TAB).toString());
+ writer.write(NL);
+ }
+ }
+
+ writer.write(GeneratorUtil.createStaticInicializationBlock(genTO, indent + TAB));
+
+ if (fields != null) {
+ for (GeneratedProperty field : fields) {
+ writer.write(GeneratorUtil.createField(field, indent + TAB, imports, packageName) + NL);
+ }
+
+ writer.write(NL);
+ final boolean oneConstructor;
+ if (genTO.isUnionType()) {
+ oneConstructor = false;
+ } else {
+ oneConstructor = true;
+ }
+ writer.write(GeneratorUtil.createConstructor(genTO, indent + TAB, imports, genTO.isAbstract(),
+ oneConstructor));
+ writer.write(NL);
+
+ for (GeneratedProperty field : fields) {
+ writer.write(GeneratorUtil.createGetter(field, indent + TAB, imports, packageName) + NL);
+ if (!field.isReadOnly()) {
+ writer.write(GeneratorUtil.createSetter(field, indent + TAB, imports, packageName) + NL);
+ }
+ }
+
+ if (!genTO.getHashCodeIdentifiers().isEmpty()) {
+ writer.write(GeneratorUtil.createHashCode(genTO.getHashCodeIdentifiers(), indent + TAB) + NL);
+ }
+
+ if (!genTO.getEqualsIdentifiers().isEmpty()) {
+ writer.write(GeneratorUtil.createEquals(genTO, genTO.getEqualsIdentifiers(), indent + TAB) + NL);
+ }
+
+ if (!genTO.getToStringIdentifiers().isEmpty()) {
+ writer.write(GeneratorUtil.createToString(genTO, genTO.getToStringIdentifiers(), indent + TAB) + NL);
+ }
+
+ writer.write(indent + RCB);
+ }
+ }