X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=code-generator%2Fbinding-java-api-generator%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fsal%2Fjava%2Fapi%2Fgenerator%2FEnumTemplate.xtend;h=417451bc181eee82bc51d14c51909aeb56430d8c;hb=d613b25a65d9d01dc2e034926d03cc8fa7f5d338;hp=9fe871c399b93ce371219b7d24a811569a53380d;hpb=306932556a11fdcff77e562f82fc4a5d67358042;p=mdsal.git diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/EnumTemplate.xtend b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/EnumTemplate.xtend index 9fe871c399..417451bc18 100644 --- a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/EnumTemplate.xtend +++ b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/EnumTemplate.xtend @@ -1,54 +1,100 @@ -package org.opendaylight.yangtools.sal.java.api.generator - -import org.opendaylight.yangtools.sal.binding.model.api.Enumeration -import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType -/** - * Template for generating JAVA enumeration type. - */ -class EnumTemplate extends BaseTemplate { - - - /** - * Enumeration which will be transformed to JAVA source code for enumeration - */ - val Enumeration enums - - /** - * Constructs instance of this class with concrete enums. - * - * @param enumeration which will be transformed to JAVA source code - */ - new(Enumeration enums) { - super(enums as GeneratedType ) - this.enums = enums - } - - - /** - * Generates only JAVA enumeration source code. - * - * @return string with JAVA enumeration source code - */ - def generateAsInnerClass() { - return body - } - - /** - * Template method which generates enumeration body (declaration + enumeration items). - * - * @return string with the enumeration body - */ - override body() ''' - public enum «enums.name» { - «FOR v : enums.values SEPARATOR ",\n"» - «" "»«v.name»(«v.value»)« - ENDFOR»; - - int value; - - private «enums.name»(int value) { - this.value = value; - } - } - ''' -} \ No newline at end of file +/* + * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.sal.java.api.generator + +import org.opendaylight.yangtools.sal.binding.model.api.Enumeration +import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType + +/** + * Template for generating JAVA enumeration type. + */ +class EnumTemplate extends BaseTemplate { + + + /** + * Enumeration which will be transformed to JAVA source code for enumeration + */ + val Enumeration enums + + /** + * Constructs instance of this class with concrete enums. + * + * @param enums enumeration which will be transformed to JAVA source code + */ + new(Enumeration enums) { + super(enums as GeneratedType ) + this.enums = enums + } + + + /** + * Generates only JAVA enumeration source code. + * + * @return string with JAVA enumeration source code + */ + def generateAsInnerClass() { + return body + } + + def writeEnumItem(String name, int value, String description) ''' + «asJavadoc(formatToParagraph(description))» + «name»(«value») + ''' + + /** + * Template method which generates enumeration body (declaration + enumeration items). + * + * @return string with the enumeration body + */ + override body() ''' + «wrapToDocumentation(formatDataForJavaDoc(enums))» + public enum «enums.name» { + «writeEnumeration(enums)» + + + int value; + private static final java.util.Map VALUE_MAP; + + static { + final com.google.common.collect.ImmutableMap.Builder b = com.google.common.collect.ImmutableMap.builder(); + for («enums.name» enumItem : «enums.name».values()) + { + b.put(enumItem.value, enumItem); + } + + VALUE_MAP = b.build(); + } + + private «enums.name»(int value) { + this.value = value; + } + + /** + * @return integer value + */ + public int getIntValue() { + return value; + } + + /** + * @param valueArg + * @return corresponding «enums.name» item + */ + public static «enums.name» forValue(int valueArg) { + return VALUE_MAP.get(valueArg); + } + } + ''' + + def writeEnumeration(Enumeration enumeration) + ''' + «FOR v : enumeration.values SEPARATOR ",\n" AFTER ";"» + «writeEnumItem(v.name, v.value, v.description)»« + ENDFOR» + ''' +}