X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?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=aaeec40604a61c264afef7d23e5f7111b115a1ef;hb=ff1b4a79cca00743a00c3b0b1100bd0ab2b2fb31;hp=6c8f9de0d423b7f2adcc12a2ca839859e3dad3c1;hpb=9df6a568d91b34f4c1cf9c62dc0670adbdcefc15;p=controller.git 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 6c8f9de0d4..aaeec40604 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 @@ -7,68 +7,99 @@ */ package org.opendaylight.controller.sal.java.api.generator; -import static org.opendaylight.controller.sal.java.api.generator.Constants.NL; -import static org.opendaylight.controller.sal.java.api.generator.Constants.RCB; -import static org.opendaylight.controller.sal.java.api.generator.Constants.TAB; +import static org.opendaylight.controller.sal.java.api.generator.Constants.*; import java.io.IOException; import java.io.StringWriter; import java.io.Writer; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import org.opendaylight.controller.sal.binding.model.api.CodeGenerator; +import org.opendaylight.controller.sal.binding.model.api.Enumeration; import org.opendaylight.controller.sal.binding.model.api.GeneratedProperty; +import org.opendaylight.controller.sal.binding.model.api.GeneratedTransferIdentityObject; import org.opendaylight.controller.sal.binding.model.api.GeneratedTransferObject; import org.opendaylight.controller.sal.binding.model.api.Type; -public class ClassCodeGenerator implements CodeGenerator { +public final class ClassCodeGenerator implements CodeGenerator { + + private Map> imports; @Override public Writer generate(Type type) throws IOException { final Writer writer = new StringWriter(); + boolean isIdentity = type instanceof GeneratedTransferIdentityObject; + if (type instanceof GeneratedTransferObject) { - GeneratedTransferObject genTO = (GeneratedTransferObject) type; + GeneratedTransferObject genTO = (GeneratedTransferObject) type; + imports = GeneratorUtil.createImports(genTO); + + final String currentPkg = genTO.getPackageName(); final List fields = genTO.getProperties(); + final List enums = genTO.getEnumDefintions(); + + writer.write(GeneratorUtil.createPackageDeclaration(currentPkg)); + writer.write(NL); + + List importLines = GeneratorUtil.createImportLines(imports); + for (String line : importLines) { + writer.write(line + NL); + } + writer.write(NL); - writer.write(GeneratorUtil.createClassDeclarationWithPkgName(genTO, - "")); + writer.write(GeneratorUtil.createClassDeclaration(genTO, "", + imports, isIdentity)); writer.write(NL); writer.write(NL); + + if (enums != null) { + EnumGenerator enumGenerator = new EnumGenerator(); + for ( Enumeration e : enums ) { + writer.write(enumGenerator.generateInnerEnumeration(e, TAB).toString()); + writer.write(NL); + } + } if (fields != null) { for (GeneratedProperty field : fields) { - writer.write(GeneratorUtil.createField(field, TAB) + NL); + writer.write(GeneratorUtil.createField(field, TAB, imports, + currentPkg) + NL); } writer.write(NL); - writer.write(GeneratorUtil.createConstructor(genTO, TAB) + NL); + writer.write(GeneratorUtil.createConstructor(genTO, TAB, + imports, isIdentity) + NL); writer.write(NL); for (GeneratedProperty field : fields) { - writer.write(GeneratorUtil.createGetter(field, TAB) + NL); + writer.write(GeneratorUtil.createGetter(field, TAB, + imports, currentPkg) + NL); if (!field.isReadOnly()) { - writer.write(GeneratorUtil.createSetter(field, TAB) + NL); + 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); } }