X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fbinding-java-api-generator%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fjava%2Fapi%2Fgenerator%2FClassCodeGenerator.java;h=31b94a65cad703d8b78ca79c8fbaf94f62ea7f70;hp=b8f988bff395354d46e7cd4049f434cd400bf070;hb=52df0e555243605003ee090150cf61b53c097563;hpb=a881650131c718f5189d975e95f44b3f4450903a diff --git a/opendaylight/sal/yang-prototype/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/controller/sal/java/api/generator/ClassCodeGenerator.java b/opendaylight/sal/yang-prototype/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/controller/sal/java/api/generator/ClassCodeGenerator.java index b8f988bff3..31b94a65ca 100644 --- a/opendaylight/sal/yang-prototype/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/controller/sal/java/api/generator/ClassCodeGenerator.java +++ b/opendaylight/sal/yang-prototype/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/controller/sal/java/api/generator/ClassCodeGenerator.java @@ -15,95 +15,124 @@ import java.io.Writer; import java.util.List; import java.util.Map; -import org.opendaylight.controller.binding.generator.util.TypeConstants; import org.opendaylight.controller.sal.binding.model.api.*; public final class ClassCodeGenerator implements CodeGenerator { private Map imports; - @Override - public Writer generate(Type type) throws IOException { - final Writer writer = new StringWriter(); + private void generatePackage(Writer writer, String packageName) throws IOException { + writer.write(GeneratorUtil.createPackageDeclaration(packageName)); + writer.write(NL); + } - if (type instanceof GeneratedTransferObject) { - GeneratedTransferObject genTO = (GeneratedTransferObject) type; - imports = GeneratorUtil.createImports(genTO); + private void generateImports(Writer writer) throws IOException { + List importLines = GeneratorUtil.createImportLines(imports, null); + for (String line : importLines) { + writer.write(line + NL); + } + writer.write(NL); + } - final String currentPkg = genTO.getPackageName(); - final List fields = genTO.getProperties(); - final List enums = genTO.getEnumerations(); - final List consts = genTO.getConstantDefinitions(); + private void generateClassBody(Writer writer, GeneratedTransferObject genTO, String packageName, String indent, + boolean isInnerClass) throws IOException { + final List fields = genTO.getProperties(); + final List enums = genTO.getEnumerations(); + final List consts = genTO.getConstantDefinitions(); - writer.write(GeneratorUtil.createPackageDeclaration(currentPkg)); - writer.write(NL); + writer.write(GeneratorUtil.createClassDeclaration(genTO, indent, imports, genTO.isAbstract(), isInnerClass)); + writer.write(NL); + writer.write(NL); - List importLines = GeneratorUtil.createImportLines(imports); - for (String line : importLines) { - writer.write(line + 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); - writer.write(GeneratorUtil.createClassDeclaration(genTO, "", imports, genTO.isAbstract())); 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); - if (consts != null) { - for (Constant con : consts) { - writer.write(GeneratorUtil.createConstant(con, TAB, imports, currentPkg)); - 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 (enums != null) { - EnumGenerator enumGenerator = new EnumGenerator(); - for (Enumeration e : enums) { - writer.write(enumGenerator.generateInnerEnumeration(e, TAB).toString()); - writer.write(NL); - } + if (!genTO.getHashCodeIdentifiers().isEmpty()) { + writer.write(GeneratorUtil.createHashCode(genTO.getHashCodeIdentifiers(), indent + TAB) + NL); } - boolean memberPatternListCodeRequired = false; - memberPatternListCodeRequired = (GeneratorUtil.isConstantInTO(TypeConstants.PATTERN_CONSTANT_NAME, genTO)); - if (fields != null || memberPatternListCodeRequired) { - if (fields != null) { - for (GeneratedProperty field : fields) { - writer.write(GeneratorUtil.createField(field, TAB, imports, currentPkg) + NL); - } - } - if (memberPatternListCodeRequired) { - writer.write(TAB + PRIVATE + GAP + "List" + GAP + MEMBER_PATTERN_LIST + GAP + ASSIGN + GAP - + "new ArrayList()" + GAP + SC + NL); + if (!genTO.getEqualsIdentifiers().isEmpty()) { + writer.write(GeneratorUtil.createEquals(genTO, genTO.getEqualsIdentifiers(), indent + TAB) + NL); + } - } - writer.write(NL); - writer.write(GeneratorUtil.createConstructor(genTO, TAB, imports, genTO.isAbstract()) + NL); - writer.write(NL); - if (fields != null) { - for (GeneratedProperty field : fields) { - writer.write(GeneratorUtil.createGetter(field, TAB, imports, currentPkg) + NL); - if (!field.isReadOnly()) { - writer.write(GeneratorUtil.createSetter(field, TAB, imports, currentPkg) + NL); - } - } - writer.write(NL); - - if (!genTO.getHashCodeIdentifiers().isEmpty()) { - writer.write(GeneratorUtil.createHashCode(genTO.getHashCodeIdentifiers(), TAB) + NL); - } - - if (!genTO.getEqualsIdentifiers().isEmpty()) { - writer.write(GeneratorUtil.createEquals(genTO, genTO.getEqualsIdentifiers(), TAB) + NL); - } - - if (!genTO.getToStringIdentifiers().isEmpty()) { - writer.write(GeneratorUtil.createToString(genTO, genTO.getToStringIdentifiers(), TAB) + NL); - } - - writer.write(RCB); - } + if (!genTO.getToStringIdentifiers().isEmpty()) { + writer.write(GeneratorUtil.createToString(genTO, genTO.getToStringIdentifiers(), indent + TAB) + NL); } + + writer.write(indent + RCB); + } + } + + @Override + public Writer generate(Type type) throws IOException { + final Writer writer = new StringWriter(); + + if (type instanceof GeneratedTransferObject) { + GeneratedTransferObject genTO = (GeneratedTransferObject) type; + imports = GeneratorUtil.createImports(genTO); + + final String currentPkg = genTO.getPackageName(); + + generatePackage(writer, currentPkg); + + generateImports(writer); + + generateClassBody(writer, genTO, currentPkg, NO_INDENT, false); + + } + return writer; + } + + public Writer generateOnlyClass(Type type, Map imports) throws IOException { + this.imports = imports; + Writer writer = new StringWriter(); + + if (type instanceof GeneratedTransferObject) { + GeneratedTransferObject genTO = (GeneratedTransferObject) type; + + final String currentPkg = ""; + + generateClassBody(writer, genTO, currentPkg, TAB, true); + } + return writer; } }