add getIntValue() method to EnumTemplate so that representing value can by accessed
[mdsal.git] / code-generator / binding-java-api-generator / src / main / java / org / opendaylight / yangtools / sal / java / api / generator / EnumTemplate.xtend
1 package org.opendaylight.yangtools.sal.java.api.generator\r
2 \r
3 import org.opendaylight.yangtools.sal.binding.model.api.Enumeration\r
4 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType\r
5 import java.util.Map\r
6 import java.util.HashMap\r
7 \r
8 /**\r
9  * Template for generating JAVA enumeration type. \r
10  */\r
11 class EnumTemplate extends BaseTemplate {\r
12 \r
13     \r
14     /**\r
15      * Enumeration which will be transformed to JAVA source code for enumeration\r
16      */\r
17     val Enumeration enums\r
18     \r
19     /**\r
20      * Constructs instance of this class with concrete <code>enums</code>.\r
21      * \r
22      * @param enumeration which will be transformed to JAVA source code \r
23      */\r
24     new(Enumeration enums) {\r
25         super(enums as GeneratedType )\r
26         this.enums = enums\r
27     }\r
28     \r
29     \r
30     /**\r
31      * Generates only JAVA enumeration source code.\r
32      * \r
33      * @return string with JAVA enumeration source code\r
34      */\r
35     def generateAsInnerClass() {\r
36         return body\r
37     }\r
38     \r
39     /**\r
40      * Template method which generates enumeration body (declaration + enumeration items).\r
41      * \r
42      * @return string with the enumeration body \r
43      */\r
44     override body() '''\r
45         public enum «enums.name» {\r
46         «FOR v : enums.values SEPARATOR ",\n"»\r
47             «"    "»«v.name»(«v.value»)«\r
48         ENDFOR»;\r
49         \r
50             int value;\r
51             static java.util.Map<java.lang.Integer, «enums.name»> valueMap;\r
52 \r
53             static {\r
54                 valueMap = new java.util.HashMap<>();\r
55                 for («enums.name» enumItem : «enums.name».values())\r
56                 {\r
57                     valueMap.put(enumItem.value, enumItem);\r
58                 }\r
59             }\r
60         \r
61             private «enums.name»(int value) {\r
62                 this.value = value;\r
63             }\r
64             \r
65             /**\r
66              * @return integer value\r
67              */\r
68             public int getIntValue() {\r
69                 return value;\r
70             }\r
71 \r
72             /**\r
73              * @param valueArg\r
74              * @return corresponding «enums.name» item\r
75              */\r
76             public static «enums.name» forValue(int valueArg) {\r
77                 return valueMap.get(valueArg);\r
78             }\r
79         }\r
80     '''\r
81 }