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»
+ '''
+}