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=877bcfce630113940aadbc238fd2b7700f02911c;hp=8858ad35cf58d260a75e5935d0997e9a02de20fc;hb=f607c4b0b922281f1ddd5fda2e7b49ca67d26ecd;hpb=184e4f61d034f6c83da75de288d4f56ec48f60bf 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 8858ad35cf..877bcfce63 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,55 +7,97 @@ */ 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(); + 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.getEnumerations(); + + 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, genTO.isAbstract())); 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, genTO.isAbstract()) + 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, + imports, currentPkg) + NL); + } } writer.write(NL); - writer.write(GeneratorUtil.createHashCode( - genTO.getHashCodeIdentifiers(), TAB) - + NL); - writer.write(GeneratorUtil.createEquals(genTO, - genTO.getEqualsIdentifiers(), TAB) - + NL); - writer.write(GeneratorUtil.createToString(genTO, - genTO.getToStringIdentifiers(), TAB) - + 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); }