Merge "Changed generation of POST operation block"
[mdsal.git] / code-generator / binding-java-api-generator / src / main / java / org / opendaylight / yangtools / sal / java / api / generator / EnumTemplate.xtend
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.yangtools.sal.java.api.generator\r
9 \r
10 import org.opendaylight.yangtools.sal.binding.model.api.Enumeration\r
11 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType\r
12 \r
13 /**\r
14  * Template for generating JAVA enumeration type. \r
15  */\r
16 class EnumTemplate extends BaseTemplate {\r
17 \r
18     \r
19     /**\r
20      * Enumeration which will be transformed to JAVA source code for enumeration\r
21      */\r
22     val Enumeration enums\r
23     \r
24     /**\r
25      * Constructs instance of this class with concrete <code>enums</code>.\r
26      * \r
27      * @param enums enumeration which will be transformed to JAVA source code \r
28      */\r
29     new(Enumeration enums) {\r
30         super(enums as GeneratedType )\r
31         this.enums = enums\r
32     }\r
33     \r
34     \r
35     /**\r
36      * Generates only JAVA enumeration source code.\r
37      * \r
38      * @return string with JAVA enumeration source code\r
39      */\r
40     def generateAsInnerClass() {\r
41         return body\r
42     }\r
43     \r
44     /**\r
45      * Template method which generates enumeration body (declaration + enumeration items).\r
46      * \r
47      * @return string with the enumeration body \r
48      */\r
49     override body() '''\r
50         public enum «enums.name» {\r
51         «FOR v : enums.values SEPARATOR ",\n"»\r
52             «"    "»«v.name»(«v.value»)«\r
53         ENDFOR»;\r
54         \r
55             int value;\r
56             static java.util.Map<java.lang.Integer, «enums.name»> valueMap;\r
57 \r
58             static {\r
59                 valueMap = new java.util.HashMap<>();\r
60                 for («enums.name» enumItem : «enums.name».values())\r
61                 {\r
62                     valueMap.put(enumItem.value, enumItem);\r
63                 }\r
64             }\r
65         \r
66             private «enums.name»(int value) {\r
67                 this.value = value;\r
68             }\r
69             \r
70             /**\r
71              * @return integer value\r
72              */\r
73             public int getIntValue() {\r
74                 return value;\r
75             }\r
76 \r
77             /**\r
78              * @param valueArg\r
79              * @return corresponding «enums.name» item\r
80              */\r
81             public static «enums.name» forValue(int valueArg) {\r
82                 return valueMap.get(valueArg);\r
83             }\r
84         }\r
85     '''\r
86 }