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