blob: cd0a98e43e790260f3f6d4d92131286fb6506989 [file] [log] [blame]
Bharat saraswal870c56f2016-02-20 21:57:16 +05301/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2016-present Open Networking Laboratory
Bharat saraswal870c56f2016-02-20 21:57:16 +05303 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.onosproject.yangutils.translator.tojava.utils;
18
Bharat saraswalc0e04842016-05-12 13:16:57 +053019import java.util.List;
20import java.util.Map;
21
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053022import org.onosproject.yangutils.datamodel.YangNode;
23import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
24import org.onosproject.yangutils.translator.exception.TranslatorException;
Vinod Kumar S38046502016-03-23 15:30:27 +053025import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053026import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaAugment;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053027import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
Bharat saraswale2d51d62016-03-23 19:40:35 +053028
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053029import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053030import static org.onosproject.yangutils.translator.tojava.utils.AttributesJavaDataType.getParseFromStringMethod;
Bharat saraswale2d51d62016-03-23 19:40:35 +053031import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
janani b4a6711a2016-05-17 13:12:22 +053032import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCapitalCase;
Bharat saraswal2f11f652016-03-25 18:19:46 +053033import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getSmallCase;
Bharat saraswale2d51d62016-03-23 19:40:35 +053034import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
35import static org.onosproject.yangutils.utils.UtilConstants.AND;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053036import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTABLE;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053037import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTATION;
38import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +053039import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
40import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
41import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053042import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
Bharat saraswalc0e04842016-05-12 13:16:57 +053043import static org.onosproject.yangutils.utils.UtilConstants.CASE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053044import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +053045import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053046import static org.onosproject.yangutils.utils.UtilConstants.CLEAR;
Bharat saraswale2d51d62016-03-23 19:40:35 +053047import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
48import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
Bharat saraswalc0e04842016-05-12 13:16:57 +053049import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
Bharat saraswale2d51d62016-03-23 19:40:35 +053050import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
Bharat saraswalc0e04842016-05-12 13:16:57 +053051import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
Bharat saraswale2d51d62016-03-23 19:40:35 +053052import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
53import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
54import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
55import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
56import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
57import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053058import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
59import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
Bharat saraswale2d51d62016-03-23 19:40:35 +053060import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
61import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053062import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
63import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
Bharat saraswale2d51d62016-03-23 19:40:35 +053064import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
65import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
66import static org.onosproject.yangutils.utils.UtilConstants.HASH;
67import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
68import static org.onosproject.yangutils.utils.UtilConstants.IF;
69import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
70import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
71import static org.onosproject.yangutils.utils.UtilConstants.INT;
72import static org.onosproject.yangutils.utils.UtilConstants.LIST;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053073import static org.onosproject.yangutils.utils.UtilConstants.LONG;
Bharat saraswale2d51d62016-03-23 19:40:35 +053074import static org.onosproject.yangutils.utils.UtilConstants.NEW;
75import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053076import static org.onosproject.yangutils.utils.UtilConstants.NULL;
Bharat saraswale2d51d62016-03-23 19:40:35 +053077import static org.onosproject.yangutils.utils.UtilConstants.OBJ;
78import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
79import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
80import static org.onosproject.yangutils.utils.UtilConstants.OF;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053081import static org.onosproject.yangutils.utils.UtilConstants.OMIT_NULL_VALUE_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +053082import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
83import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
84import static org.onosproject.yangutils.utils.UtilConstants.OTHER;
85import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
86import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
87import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
88import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
89import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
Gaurav Agrawal56527662016-04-20 15:49:17 +053090import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
Bharat saraswale2d51d62016-03-23 19:40:35 +053091import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
92import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053093import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
Bharat saraswale2d51d62016-03-23 19:40:35 +053094import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
95import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
96import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
97import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
98import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
Bharat saraswalc0e04842016-05-12 13:16:57 +053099import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530100import static org.onosproject.yangutils.utils.UtilConstants.THIS;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530101import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530102import static org.onosproject.yangutils.utils.UtilConstants.TO;
103import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530104import static org.onosproject.yangutils.utils.UtilConstants.TRY;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530105import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
106import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
107import static org.onosproject.yangutils.utils.UtilConstants.VOID;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530108import static org.onosproject.yangutils.utils.UtilConstants.YANG_UTILS_TODO;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530109import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
110import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
111import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530112import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.FROM_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530113import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530114import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.MANAGER_SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530115import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530116import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530117import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530118import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530119import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530120
121/**
Bharat saraswald9822e92016-04-05 15:13:44 +0530122 * Represents generator for methods of generated files based on the file type.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530123 */
124public final class MethodsGenerator {
125
Bharat saraswal870c56f2016-02-20 21:57:16 +0530126 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530127 * Creates an instance of method generator.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530128 */
129 private MethodsGenerator() {
130 }
131
132 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530133 * Returns the methods strings for builder interface.
134 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530135 * @param name attribute name
136 * @return method string for builder interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530137 */
138 public static String parseBuilderInterfaceBuildMethodString(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530139 return getJavaDoc(BUILD_METHOD, name, false) + getBuildForInterface(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530140 }
141
142 /**
143 * Returns getter string.
144 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530145 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530146 * @param generatedJavaFiles generated java files
Bharat saraswal870c56f2016-02-20 21:57:16 +0530147 * @return getter string
148 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530149 public static String getGetterString(JavaAttributeInfo attr, int generatedJavaFiles) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530150
Vinod Kumar S38046502016-03-23 15:30:27 +0530151 String returnType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530152 String attributeName = attr.getAttributeName();
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530153
Bharat saraswale2d51d62016-03-23 19:40:35 +0530154 return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr())
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530155 + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530156 }
157
158 /**
159 * Returns setter string.
160 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530161 * @param attr attribute info
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530162 * @param className java class name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530163 * @param generatedJavaFiles generated java files
Bharat saraswal870c56f2016-02-20 21:57:16 +0530164 * @return setter string
165 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530166 public static String getSetterString(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530167
Vinod Kumar S38046502016-03-23 15:30:27 +0530168 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530169 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530170 JavaDocGen.JavaDocType type;
171 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
172 type = MANAGER_SETTER_METHOD;
173 } else {
174 type = SETTER_METHOD;
175 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530176
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530177 return getJavaDoc(type, attributeName, attr.isListAttr())
178 + getSetterForInterface(attributeName, attrType, className, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530179 }
180
181 /**
182 * Returns constructor method string.
183 *
184 * @param name class name
185 * @return constructor string
186 */
187 public static String getConstructorString(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530188 return getJavaDoc(CONSTRUCTOR, name, false);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530189 }
190
191 /**
192 * Returns default constructor method string.
193 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530194 * @param name class name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530195 * @param modifierType modifier type
Bharat saraswal870c56f2016-02-20 21:57:16 +0530196 * @return default constructor string
197 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530198 public static String getDefaultConstructorString(String name, String modifierType) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530199 return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false) + getDefaultConstructor(name, modifierType)
200 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530201 }
202
203 /**
204 * Returns check not null string.
205 *
206 * @param name attribute name
207 * @return check not null string
208 */
209 public static String getCheckNotNull(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530210 return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING + OPEN_PARENTHESIS + name + COMMA + SPACE + name
211 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530212 }
213
214 /**
215 * Returns build method string.
216 *
217 * @param name class name
218 * @return build string
219 */
220 public static String getBuildString(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530221 return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530222 }
223
224 /**
225 * Returns the getter method strings for class file.
226 *
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530227 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530228 * @param generatedJavaFiles for the type of java file being generated
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530229 * @return getter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530230 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530231 public static String getGetterForClass(JavaAttributeInfo attr, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530232
Vinod Kumar S38046502016-03-23 15:30:27 +0530233 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530234 String attributeName = attr.getAttributeName();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530235
236 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530237 return getGetter(attrQuaifiedType, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530238 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530239 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530240 return getGetter(listAttr, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530241 }
242
243 /**
244 * Returns getter for attribute.
245 *
246 * @param type return type
247 * @param name attribute name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530248 * @param generatedJavaFiles generated java files
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530249 * @return getter for attribute
250 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530251 public static String getGetter(String type, String name, int generatedJavaFiles) {
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530252 String ret = parseTypeForGetter(type);
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530253 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
janani b4a6711a2016-05-17 13:12:22 +0530254 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCapitalCase(name)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530255 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
256 EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION +
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530257 RETURN + SPACE + ret + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530258 } else {
259 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + name
260 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
261 EIGHT_SPACE_INDENTATION + RETURN + SPACE + name + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
262 + CLOSE_CURLY_BRACKET;
263 }
264
Bharat saraswal870c56f2016-02-20 21:57:16 +0530265 }
266
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530267 /*Provides string to return for type.*/
268 private static String parseTypeForGetter(String type) {
269 switch (type) {
270 case BYTE:
271 case INT:
272 case SHORT:
273 case LONG:
274 return "0";
275 case BOOLEAN_DATA_TYPE:
276 return FALSE;
277 default:
278 return null;
279 }
280 }
281
Bharat saraswal870c56f2016-02-20 21:57:16 +0530282 /**
283 * Returns the setter method strings for class file.
284 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530285 * @param attr attribute info
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530286 * @param className name of the class
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530287 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530288 * @return setter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530289 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530290 public static String getSetterForClass(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530291
Vinod Kumar S38046502016-03-23 15:30:27 +0530292 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530293 String attributeName = attr.getAttributeName();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530294 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530295 return getSetter(className, attributeName, attrQuaifiedType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530296 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530297 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530298 return getSetter(className, attributeName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530299 }
300
301 /**
302 * Returns setter for attribute.
303 *
304 * @param className class name
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530305 * @param name attribute name
306 * @param type return type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530307 * @return setter for attribute
308 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530309 private static String getSetter(String className, String name, String type, int generatedJavaFiles) {
310 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
311 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX
janani b4a6711a2016-05-17 13:12:22 +0530312 + getCapitalCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530313 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO +
314 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
315 } else {
316 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE +
317 name + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
318 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL +
319 SPACE + name + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + THIS +
320 SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
321 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530322 }
323
324 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530325 * Returns the setter method strings for class file.
326 *
327 * @param attr attribute info
328 * @return setter method for class
329 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530330 public static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530331
Vinod Kumar S38046502016-03-23 15:30:27 +0530332 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530333 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530334 return getTypeDefSetter(attrQuaifiedType, attributeName);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530335 }
336
337 /**
338 * Returns type def's setter for attribute.
339 *
340 * @param type data type
341 * @param name attribute name
342 * @return setter for type def's attribute
343 */
344 private static String getTypeDefSetter(String type, String name) {
janani b4a6711a2016-05-17 13:12:22 +0530345 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(name)
Bharat saraswale2d51d62016-03-23 19:40:35 +0530346 + OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
347 + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE
348 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530349 }
350
351 /**
352 * Returns override string.
353 *
354 * @return override string
355 */
356 public static String getOverRideString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530357 return NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530358 }
359
360 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530361 * Returns the getter method strings for interface file.
362 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530363 * @param yangName name of the attribute
Bharat saraswal870c56f2016-02-20 21:57:16 +0530364 * @param returnType return type of attribute
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530365 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530366 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530367 * @return getter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530368 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530369 public static String getGetterForInterface(String yangName, String returnType, boolean isList,
370 int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530371
372 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530373 return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530374 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530375 String listAttr = getListString() + returnType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530376 return getGetterInterfaceString(listAttr, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530377 }
378
379 /**
380 * Returns getter for attribute in interface.
381 *
382 * @param returnType return type
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530383 * @param yangName attribute name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530384 * @return getter for interface
385 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530386 private static String getGetterInterfaceString(String returnType, String yangName,
387 int generatedJavaFiles) {
388 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
janani b4a6711a2016-05-17 13:12:22 +0530389 return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCapitalCase(yangName)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530390 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
391 } else {
392 return FOUR_SPACE_INDENTATION + returnType + SPACE + yangName
393 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
394 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530395 }
396
397 /**
398 * Returns the setter method strings for interface file.
399 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530400 * @param attrName name of the attribute
401 * @param attrType return type of attribute
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530402 * @param className name of the java class being generated
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530403 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530404 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530405 * @return setter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530406 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530407 public static String getSetterForInterface(String attrName, String attrType, String className,
408 boolean isList, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530409
410 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530411 return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530412 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530413 String listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530414 return getSetterInterfaceString(className, attrName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530415 }
416
417 /**
418 * Returns setter string for interface.
419 *
420 * @param className class name
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530421 * @param attrName attribute name
422 * @param attrType attribute type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530423 * @return setter string
424 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530425 private static String getSetterInterfaceString(String className, String attrName, String attrType,
426 int generatedJavaFiles) {
427 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
428
janani b4a6711a2016-05-17 13:12:22 +0530429 return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(attrName)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530430 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
431 } else {
432 return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + attrName
433 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
434 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530435 }
436
437 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530438 * Returns list string.
439 *
440 * @return list string
441 */
442 private static String getListString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530443 return LIST + DIAMOND_OPEN_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530444 }
445
446 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530447 * Returns return type for attribute.
448 *
449 * @param attr attribute info
450 * @return return type
451 */
452 private static String getReturnType(JavaAttributeInfo attr) {
453
Bharat saraswale2d51d62016-03-23 19:40:35 +0530454 String returnType = EMPTY_STRING;
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530455 if (attr.isQualifiedName() && attr.getImportInfo().getPkgInfo() != null) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530456 returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
Vinod Kumar S38046502016-03-23 15:30:27 +0530457 }
458 returnType = returnType + attr.getImportInfo().getClassInfo();
459 return returnType;
460 }
461
462 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530463 * Returns the build method strings for interface file.
464 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530465 * @param yangName name of the interface
466 * @return build method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530467 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530468 public static String getBuildForInterface(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530469 return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
470 + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530471 }
472
473 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530474 * Returns constructor string for impl class.
475 *
476 * @param yangName class name
477 * @return constructor string
478 */
479 public static String getConstructorStart(String yangName) {
480
Bharat saraswale2d51d62016-03-23 19:40:35 +0530481 String javadoc = getConstructorString(yangName);
482 String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + IMPL + OPEN_PARENTHESIS + yangName
483 + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
484 + NEW_LINE;
Vinod Kumar S38046502016-03-23 15:30:27 +0530485 return javadoc + constructor;
486 }
487
488 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530489 * Returns the constructor strings for class file.
490 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530491 * @param yangName name of the class
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530492 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530493 * @param generatedJavaFiles generated java files
Bharat saraswal870c56f2016-02-20 21:57:16 +0530494 * @return constructor for class
495 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530496 public static String getConstructor(String yangName, JavaAttributeInfo attr, int generatedJavaFiles) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530497
janani b4a6711a2016-05-17 13:12:22 +0530498 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530499 String constructor;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530500
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530501 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
502 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD + getCamelCase(attributeName, null) + SPACE + EQUAL
503 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
janani b4a6711a2016-05-17 13:12:22 +0530504 + getCapitalCase(getCamelCase(attributeName, null)) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530505 SEMI_COLAN
506 + NEW_LINE;
507 } else {
508 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD + getCamelCase(attributeName, null) + SPACE + EQUAL
509 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + getCamelCase(attributeName, null) +
510 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
511 + NEW_LINE;
512 }
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530513 return constructor;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530514 }
515
516 /**
Gaurav Agrawal56527662016-04-20 15:49:17 +0530517 * Returns the rpc strings for service interface.
518 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530519 * @param rpcName name of the rpc
520 * @param inputName name of input
Gaurav Agrawal56527662016-04-20 15:49:17 +0530521 * @param outputName name of output
522 * @return rpc method string
523 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530524 public static String getRpcServiceMethod(String rpcName, String inputName, String outputName) {
Gaurav Agrawal56527662016-04-20 15:49:17 +0530525
janani b4a6711a2016-05-17 13:12:22 +0530526 rpcName = getCamelCase(rpcName, null);
527 inputName = getCapitalCase(inputName);
Bharat saraswalc0e04842016-05-12 13:16:57 +0530528 if (!outputName.equals(VOID)) {
janani b4a6711a2016-05-17 13:12:22 +0530529 outputName = getCapitalCase(outputName);
Bharat saraswalc0e04842016-05-12 13:16:57 +0530530 }
531 return FOUR_SPACE_INDENTATION + outputName + SPACE + rpcName + OPEN_PARENTHESIS + inputName + SPACE
532 + RPC_INPUT_VAR_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530533 }
534
535 /**
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530536 * Returns the rpc strings for manager impl.
537 *
538 * @param rpcName name of the rpc
539 * @param inputName name of input
540 * @param outputName name of output
541 * @return rpc method string
542 */
543 public static String getRpcManagerMethod(String rpcName, String inputName, String outputName) {
544
janani b4a6711a2016-05-17 13:12:22 +0530545 rpcName = getCamelCase(rpcName, null);
546 inputName = getCapitalCase(inputName);
Bharat saraswalc0e04842016-05-12 13:16:57 +0530547 if (!outputName.equals(VOID)) {
janani b4a6711a2016-05-17 13:12:22 +0530548 outputName = getCapitalCase(outputName);
Bharat saraswalc0e04842016-05-12 13:16:57 +0530549 }
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530550
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530551 String method = getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName
552 + OPEN_PARENTHESIS + inputName + SPACE + RPC_INPUT_VAR_NAME + CLOSE_PARENTHESIS + SPACE
553 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530554 if (!outputName.contentEquals(VOID)) {
555 method += EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE;
556 }
557 method += FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
558
559 return method;
560 }
561
562 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530563 * Returns the build method strings for class file.
564 *
565 * @param yangName class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530566 * @return build method string for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530567 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530568 public static String getBuild(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530569 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
570 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE
571 + yangName + IMPL + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
572 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530573 }
574
575 /**
576 * Returns the Default constructor strings for class file.
577 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530578 * @param name name of the class
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530579 * @param modifierType modifier type for default constructor
Bharat saraswal870c56f2016-02-20 21:57:16 +0530580 * @return Default constructor for class
581 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530582 private static String getDefaultConstructor(String name, String modifierType) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530583 return FOUR_SPACE_INDENTATION + modifierType + SPACE + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
584 + OPEN_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530585 }
586
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530587 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530588 * Returns to string method's open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530589 *
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530590 * @return string method's open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530591 */
592 public static String getToStringMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530593 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STRING_DATA_TYPE + SPACE + TO
594 + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
595 + EIGHT_SPACE_INDENTATION + RETURN + GOOGLE_MORE_OBJECT_METHOD_STRING + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530596 }
597
598 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530599 * Returns omit null value string.
600 *
601 * @return omit null value string
602 */
603 public static String getOmitNullValueString() {
604 return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING + NEW_LINE;
605 }
606
607 /**
608 * Returns to string method's close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530609 *
610 * @return to string method close string
611 */
612 public static String getToStringMethodClose() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530613 return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
614 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530615 }
616
617 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530618 * Returns to string method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530619 *
620 * @param attr attribute info
621 * @return to string method
622 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530623 public static String getToStringMethod(JavaAttributeInfo attr) {
624
janani b4a6711a2016-05-17 13:12:22 +0530625 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530626 return TWELVE_SPACE_INDENTATION + PERIOD + ADD_STRING + OPEN_PARENTHESIS + QUOTES + attributeName + QUOTES
627 + COMMA + SPACE + attributeName + CLOSE_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530628 }
629
630 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530631 * Returns from string method's open string.
632 *
633 * @param className name of the class
634 * @return from string method's open string
635 */
636 public static String getFromStringMethodSignature(String className) {
Bharat saraswalc0e04842016-05-12 13:16:57 +0530637 return getJavaDoc(FROM_METHOD, className, false) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530638 + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS + STRING_DATA_TYPE + SPACE
639 + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
640 }
641
642 /**
643 * Return from string method's close string.
644 *
645 * @return from string method's close string
646 */
647 public static String getFromStringMethodClose() {
648 return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
649 CLOSE_CURLY_BRACKET + NEW_LINE;
650 }
651
652 /**
653 * Return from string method's body string.
654 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530655 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530656 * @param fromStringAttributeInfo attribute info for the from string
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530657 * wrapper type
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530658 * @return from string method's body string
659 */
660 public static String getFromStringMethod(JavaAttributeInfo attr,
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530661 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530662
663 return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
664 + getParsedSubString(attr, fromStringAttributeInfo) + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
665 + getReturnOfSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION + getCatchSubString()
666 + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
667 }
668
669 /**
670 * Returns sub string with try statement for union's from string method.
671 *
672 * @return sub string with try statement for union's from string method
673 */
674 public static String getTrySubString() {
675 return TRY + SPACE + OPEN_CURLY_BRACKET;
676 }
677
678 /**
679 * Returns sub string with return statement for union's from string method.
680 *
681 * @return sub string with return statement for union's from string method
682 */
683 public static String getReturnOfSubString() {
684 return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL + CLOSE_PARENTHESIS + SEMI_COLAN;
685 }
686
687 /**
688 * Returns sub string with catch statement for union's from string method.
689 *
690 * @return sub string with catch statement for union's from string method
691 */
692 public static String getCatchSubString() {
693 return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS + EXCEPTION + SPACE + EXCEPTION_VAR
694 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
695 }
696
697 /**
698 * Returns sub string with parsed statement for union's from string method.
699 *
700 * @param attr attribute info
701 * @return sub string with parsed statement for union's from string method
702 */
703 private static String getParsedSubString(JavaAttributeInfo attr,
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530704 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530705
706 String targetDataType = getReturnType(attr);
707 String parseFromStringMethod = getParseFromStringMethod(targetDataType,
708 fromStringAttributeInfo.getAttributeType());
709 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + parseFromStringMethod
710 + OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS;
711 }
712
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530713 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530714 * Returns hash code method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530715 *
Bharat saraswald9822e92016-04-05 15:13:44 +0530716 * @return hash code method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530717 */
718 public static String getHashCodeMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530719 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + INT + SPACE + HASH_CODE_STRING
720 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
721 + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530722 }
723
724 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530725 * Returns hash code methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530726 *
727 * @param hashcodeString hash code string
728 * @return to hash code method close string
729 */
730 public static String getHashCodeMethodClose(String hashcodeString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530731 hashcodeString = trimAtLast(hashcodeString, COMMA);
732 hashcodeString = trimAtLast(hashcodeString, SPACE);
733 return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
734 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530735 }
736
737 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530738 * Returns hash code method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530739 *
740 * @param attr attribute info
741 * @return hash code method
742 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530743 public static String getHashCodeMethod(JavaAttributeInfo attr) {
janani b4a6711a2016-05-17 13:12:22 +0530744 return attr.getAttributeName() + COMMA + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530745 }
746
747 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530748 * Returns equals method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530749 *
750 * @param className class name
Bharat saraswald9822e92016-04-05 15:13:44 +0530751 * @return equals method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530752 */
753 public static String getEqualsMethodOpen(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530754 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE + EQUALS_STRING
755 + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + OBJ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
756 + NEW_LINE + getEqualsMethodsCommonIfCondition() + getEqualsMethodsSpecificIfCondition(className);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530757 }
758
759 /**
760 * Returns equal methods if condition string.
761 *
762 * @return if condition string
763 */
764 private static String getEqualsMethodsCommonIfCondition() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530765 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + THIS + SPACE + EQUAL + EQUAL + SPACE + OBJ
766 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + SPACE
767 + TRUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530768 }
769
770 /**
771 * Returns if condition for specific class object in equals method.
772 *
773 * @param className class name
774 * @return if condition string
775 */
776 private static String getEqualsMethodsSpecificIfCondition(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530777 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + OBJ + INSTANCE_OF + className
778 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + className
779 + SPACE + OTHER + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS + className + CLOSE_PARENTHESIS + SPACE
780 + OBJ + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530781 }
782
783 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530784 * Returns equals methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530785 *
786 * @param equalMethodString equal method string
Bharat saraswald9822e92016-04-05 15:13:44 +0530787 * @return equals method close string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530788 */
789 public static String getEqualsMethodClose(String equalMethodString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530790 equalMethodString = trimAtLast(equalMethodString, AND);
791 equalMethodString = trimAtLast(equalMethodString, AND);
792 equalMethodString = trimAtLast(equalMethodString, SPACE);
793 equalMethodString = trimAtLast(equalMethodString, NEW_LINE) + SEMI_COLAN + NEW_LINE;
794 return equalMethodString + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
795 + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
796 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530797 }
798
799 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530800 * Returns equals method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530801 *
802 * @param attr attribute info
803 * @return equals method
804 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530805 public static String getEqualsMethod(JavaAttributeInfo attr) {
806
janani b4a6711a2016-05-17 13:12:22 +0530807 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530808 return SIXTEEN_SPACE_INDENTATION + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS
809 + attributeName + COMMA + SPACE + OTHER + PERIOD + attributeName + CLOSE_PARENTHESIS + SPACE + AND
810 + AND;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530811 }
812
813 /**
814 * Returns of method string for class.
815 *
816 * @param name class name
817 * @param attr attribute info
818 * @return of method string
819 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530820 public static String getOfMethod(String name, JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530821
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530822 String attrQualifiedType = getReturnType(attr);
823
Bharat saraswale2d51d62016-03-23 19:40:35 +0530824 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name + SPACE + OF + OPEN_PARENTHESIS
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530825 + attrQualifiedType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Bharat saraswale2d51d62016-03-23 19:40:35 +0530826 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name + OPEN_PARENTHESIS + VALUE
827 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530828 }
829
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530830 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530831 * Returns of method's string and java doc for special type.
832 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530833 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530834 * @param generatedJavaClassName class name
835 * @return of method's string and java doc for special type
836 */
837 public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName) {
838
839 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530840 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530841
842 return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " + attrName, false)
843 + getOfMethodString(attrType, generatedJavaClassName);
844 }
845
846 /**
847 * Returns of method's string.
848 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530849 * @param type data type
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530850 * @param className class name
851 * @return of method's string
852 */
853 private static String getOfMethodString(String type, String className) {
854
855 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + className + SPACE + OF + OPEN_PARENTHESIS
856 + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
857 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + className + OPEN_PARENTHESIS + VALUE
858 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
859 }
860
861 /**
862 * Returns string and java doc for constructor of type class.
863 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530864 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530865 * @param generatedJavaClassName class name
866 * @return string and java doc for constructor of type class
867 */
868 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName) {
869
870 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530871 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530872
873 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName, false)
874 + getTypeConstructorString(attrType, attrName, generatedJavaClassName);
875 }
876
877 /**
878 * Returns type constructor string.
879 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530880 * @param type data type
881 * @param name attribute name
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530882 * @param className class name
883 * @return type constructor string
884 */
885 private static String getTypeConstructorString(String type, String name, String className) {
886
887 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
888 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
889 + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
890 + CLOSE_CURLY_BRACKET;
891 }
892
893 /**
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530894 * Returns implementation of add augmentation method of AugmentationHolder class.
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530895 *
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530896 * @return implementation of add augmentation method of AugmentationHolder class
897 */
898 public static String getAddAugmentInfoMethodImpl() {
899 String method = FOUR_SPACE_INDENTATION;
900 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + ADD_STRING
901 + AUGMENTATION + OPEN_PARENTHESIS + AUGMENTED_INFO + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
902 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST
903 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + ADD_STRING + OPEN_PARENTHESIS + VALUE
904 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
905
906 return method;
907 }
908
909 /**
910 * Returns implementation of get augment info list method of AugmentationHolder class.
911 *
912 * @return implementation of get augment info list method of AugmentationHolder class
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530913 */
914 public static String getAugmentInfoListImpl() {
915
916 String method = FOUR_SPACE_INDENTATION;
917 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + LIST + DIAMOND_OPEN_BRACKET
918 + AUGMENTED_INFO + DIAMOND_CLOSE_BRACKET + SPACE + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST
919 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
920 + RETURN + SPACE + getSmallCase(AUGMENTED_INFO) + LIST + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
921 + CLOSE_CURLY_BRACKET;
922 return method;
923 }
924
925 /**
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530926 * Returns implementation of remove augmentation method of AugmentationHolder class.
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530927 *
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530928 * @return implementation of remove augmentation method of AugmentationHolder class
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530929 */
930 public static String getRemoveAugmentationImpl() {
931 String method = FOUR_SPACE_INDENTATION;
932 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + "remove"
933 + AUGMENTATION + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
934 + EIGHT_SPACE_INDENTATION + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST + OPEN_PARENTHESIS
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530935 + CLOSE_PARENTHESIS + PERIOD + CLEAR + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530936 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
937 return method;
938 }
939
Bharat saraswald72411a2016-04-19 01:00:16 +0530940 /**
941 * Returns enum's constructor.
942 *
943 * @param className enum's class name
944 * @return enum's constructor
945 */
946 public static String getEnumsConstrcutor(String className) {
947 return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
948 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
949 + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
950 }
Bharat saraswalc0e04842016-05-12 13:16:57 +0530951
952 /**
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530953 * Provides string to be added in augment node's constructor.
954 *
955 * @param curNode current YANG node
956 * @return constructors string
957 */
958 public static String getAugmentsAddToAugmentedMethod(YangNode curNode) {
959
960 if (!(curNode instanceof YangJavaAugment)) {
961 throw new TranslatorException("current node should be of type augment node.");
962 }
963 YangJavaAugment augment = (YangJavaAugment) curNode;
964 List<YangNodeIdentifier> targetNodes = augment.getTargetNode();
965
966 String name = targetNodes.get(targetNodes.size() - 1).getName();
967 String captialCase = getCapitalCase(name);
968 String smallCase = getSmallCase(captialCase);
969 return EIGHT_SPACE_INDENTATION + captialCase + IMPL + SPACE + smallCase + IMPL + SPACE + EQUAL + SPACE
970 + NEW + SPACE + captialCase + BUILDER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + NEW + SPACE
971 + captialCase + IMPL + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
972 + EIGHT_SPACE_INDENTATION + smallCase + IMPL + PERIOD + ADD_STRING + AUGMENTATION
973 + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
974
975 }
976
977 private static String getAugmentsAddToAugmentedMethodStart() {
978 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + ADD_STRING + AUGMENTABLE + OPEN_PARENTHESIS
979 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
980 }
981
982 /**
Bharat saraswalc0e04842016-05-12 13:16:57 +0530983 * Returns of method for enum class.
984 *
985 * @param className class name
986 * @param attr java attribute
987 * @param enumMap enum's sets map
988 * @param enumList enum's sets list
989 * @return of method
990 */
991 public static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
992 Map<String, Integer> enumMap, List<String> enumList) {
993 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530994 String attrName = attr.getAttributeName();
Bharat saraswalc0e04842016-05-12 13:16:57 +0530995
janani b4a6711a2016-05-17 13:12:22 +0530996 String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + getCapitalCase(className) + SPACE
997 + OF + OPEN_PARENTHESIS
Bharat saraswalc0e04842016-05-12 13:16:57 +0530998 + attrType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
999 + EIGHT_SPACE_INDENTATION + SWITCH + SPACE + OPEN_PARENTHESIS + VALUE
1000 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1001 int value = 0;
1002 for (String str : enumList) {
1003
1004 value = enumMap.get(str);
1005 method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value + COLAN + NEW_LINE
janani b4a6711a2016-05-17 13:12:22 +05301006 + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + getCapitalCase(className) + PERIOD
Bharat saraswalc0e04842016-05-12 13:16:57 +05301007 + str + SEMI_COLAN + NEW_LINE;
1008 }
1009 method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLAN + NEW_LINE + SIXTEEN_SPACE_INDENTATION
1010 + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1011 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1012
janani b4a6711a2016-05-17 13:12:22 +05301013 return getJavaDoc(OF_METHOD, getCapitalCase(className) + " for type " + attrName, false) + method;
Bharat saraswalc0e04842016-05-12 13:16:57 +05301014 }
Bharat saraswal870c56f2016-02-20 21:57:16 +05301015}