blob: 333361f4c37d2264f24dd0224dd7eed94893d782 [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
Vinod Kumar S38046502016-03-23 15:30:27 +053022import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053023import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
Bharat saraswale2d51d62016-03-23 19:40:35 +053024
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053025import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053026import static org.onosproject.yangutils.translator.tojava.utils.AttributesJavaDataType.getParseFromStringMethod;
Bharat saraswale2d51d62016-03-23 19:40:35 +053027import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
janani b4a6711a2016-05-17 13:12:22 +053028import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCapitalCase;
Bharat saraswal2f11f652016-03-25 18:19:46 +053029import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getSmallCase;
Bharat saraswale2d51d62016-03-23 19:40:35 +053030import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
31import static org.onosproject.yangutils.utils.UtilConstants.AND;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053032import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTATION;
33import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +053034import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
35import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
36import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
Bharat saraswalc0e04842016-05-12 13:16:57 +053037import static org.onosproject.yangutils.utils.UtilConstants.CASE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053038import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +053039import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053040import static org.onosproject.yangutils.utils.UtilConstants.CLEAR;
Bharat saraswale2d51d62016-03-23 19:40:35 +053041import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
42import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
Bharat saraswalc0e04842016-05-12 13:16:57 +053043import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
Bharat saraswale2d51d62016-03-23 19:40:35 +053044import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
Bharat saraswalc0e04842016-05-12 13:16:57 +053045import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
Bharat saraswale2d51d62016-03-23 19:40:35 +053046import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
47import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
48import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
49import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
50import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
51import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053052import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
53import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
Bharat saraswale2d51d62016-03-23 19:40:35 +053054import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
55import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053056import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
57import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
Bharat saraswale2d51d62016-03-23 19:40:35 +053058import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
59import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
60import static org.onosproject.yangutils.utils.UtilConstants.HASH;
61import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
62import static org.onosproject.yangutils.utils.UtilConstants.IF;
63import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
64import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
65import static org.onosproject.yangutils.utils.UtilConstants.INT;
66import static org.onosproject.yangutils.utils.UtilConstants.LIST;
67import static org.onosproject.yangutils.utils.UtilConstants.NEW;
68import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053069import static org.onosproject.yangutils.utils.UtilConstants.NULL;
Bharat saraswale2d51d62016-03-23 19:40:35 +053070import static org.onosproject.yangutils.utils.UtilConstants.OBJ;
71import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
72import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
73import static org.onosproject.yangutils.utils.UtilConstants.OF;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053074import static org.onosproject.yangutils.utils.UtilConstants.OMIT_NULL_VALUE_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +053075import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
76import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
77import static org.onosproject.yangutils.utils.UtilConstants.OTHER;
78import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
79import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
80import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
81import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
82import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
Gaurav Agrawal56527662016-04-20 15:49:17 +053083import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
Bharat saraswale2d51d62016-03-23 19:40:35 +053084import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
85import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
86import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
87import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
88import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
89import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
90import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
Bharat saraswalc0e04842016-05-12 13:16:57 +053091import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +053092import static org.onosproject.yangutils.utils.UtilConstants.THIS;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053093import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
Bharat saraswale2d51d62016-03-23 19:40:35 +053094import static org.onosproject.yangutils.utils.UtilConstants.TO;
95import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053096import static org.onosproject.yangutils.utils.UtilConstants.TRY;
Bharat saraswale2d51d62016-03-23 19:40:35 +053097import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
98import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
99import static org.onosproject.yangutils.utils.UtilConstants.VOID;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530100import static org.onosproject.yangutils.utils.UtilConstants.YANG_UTILS_TODO;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530101import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
102import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
103import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530104import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.FROM_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530105import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530106import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.MANAGER_SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530107import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530108import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530109import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530110import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530111import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530112
113/**
Bharat saraswald9822e92016-04-05 15:13:44 +0530114 * Represents generator for methods of generated files based on the file type.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530115 */
116public final class MethodsGenerator {
117
Bharat saraswal870c56f2016-02-20 21:57:16 +0530118 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530119 * Creates an instance of method generator.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530120 */
121 private MethodsGenerator() {
122 }
123
124 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530125 * Returns the methods strings for builder interface.
126 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530127 * @param name attribute name
128 * @return method string for builder interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530129 */
130 public static String parseBuilderInterfaceBuildMethodString(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530131 return getJavaDoc(BUILD_METHOD, name, false) + getBuildForInterface(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530132 }
133
134 /**
135 * Returns getter string.
136 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530137 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530138 * @param generatedJavaFiles generated java files
Bharat saraswal870c56f2016-02-20 21:57:16 +0530139 * @return getter string
140 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530141 public static String getGetterString(JavaAttributeInfo attr, int generatedJavaFiles) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530142
Vinod Kumar S38046502016-03-23 15:30:27 +0530143 String returnType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530144 String attributeName = attr.getAttributeName();
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530145
Bharat saraswale2d51d62016-03-23 19:40:35 +0530146 return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr())
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530147 + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530148 }
149
150 /**
151 * Returns setter string.
152 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530153 * @param attr attribute info
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530154 * @param className java class name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530155 * @param generatedJavaFiles generated java files
Bharat saraswal870c56f2016-02-20 21:57:16 +0530156 * @return setter string
157 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530158 public static String getSetterString(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530159
Vinod Kumar S38046502016-03-23 15:30:27 +0530160 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530161 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530162 JavaDocGen.JavaDocType type;
163 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
164 type = MANAGER_SETTER_METHOD;
165 } else {
166 type = SETTER_METHOD;
167 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530168
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530169 return getJavaDoc(type, attributeName, attr.isListAttr())
170 + getSetterForInterface(attributeName, attrType, className, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530171 }
172
173 /**
174 * Returns constructor method string.
175 *
176 * @param name class name
177 * @return constructor string
178 */
179 public static String getConstructorString(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530180 return getJavaDoc(CONSTRUCTOR, name, false);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530181 }
182
183 /**
184 * Returns default constructor method string.
185 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530186 * @param name class name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530187 * @param modifierType modifier type
Bharat saraswal870c56f2016-02-20 21:57:16 +0530188 * @return default constructor string
189 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530190 public static String getDefaultConstructorString(String name, String modifierType) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530191 return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false) + getDefaultConstructor(name, modifierType)
192 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530193 }
194
195 /**
196 * Returns check not null string.
197 *
198 * @param name attribute name
199 * @return check not null string
200 */
201 public static String getCheckNotNull(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530202 return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING + OPEN_PARENTHESIS + name + COMMA + SPACE + name
203 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530204 }
205
206 /**
207 * Returns build method string.
208 *
209 * @param name class name
210 * @return build string
211 */
212 public static String getBuildString(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530213 return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530214 }
215
216 /**
217 * Returns the getter method strings for class file.
218 *
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530219 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530220 * @param generatedJavaFiles for the type of java file being generated
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530221 * @return getter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530222 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530223 public static String getGetterForClass(JavaAttributeInfo attr, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530224
Vinod Kumar S38046502016-03-23 15:30:27 +0530225 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530226 String attributeName = attr.getAttributeName();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530227
228 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530229 return getGetter(attrQuaifiedType, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530230 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530231 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530232 return getGetter(listAttr, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530233 }
234
235 /**
236 * Returns getter for attribute.
237 *
238 * @param type return type
239 * @param name attribute name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530240 * @param generatedJavaFiles generated java files
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530241 * @return getter for attribute
242 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530243 public static String getGetter(String type, String name, int generatedJavaFiles) {
244 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
janani b4a6711a2016-05-17 13:12:22 +0530245 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCapitalCase(name)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530246 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
247 EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION +
248 RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
249 } else {
250 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + name
251 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
252 EIGHT_SPACE_INDENTATION + RETURN + SPACE + name + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
253 + CLOSE_CURLY_BRACKET;
254 }
255
Bharat saraswal870c56f2016-02-20 21:57:16 +0530256 }
257
258 /**
259 * Returns the setter method strings for class file.
260 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530261 * @param attr attribute info
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530262 * @param className name of the class
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530263 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530264 * @return setter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530265 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530266 public static String getSetterForClass(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530267
Vinod Kumar S38046502016-03-23 15:30:27 +0530268 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530269 String attributeName = attr.getAttributeName();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530270 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530271 return getSetter(className, attributeName, attrQuaifiedType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530272 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530273 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530274 return getSetter(className, attributeName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530275 }
276
277 /**
278 * Returns setter for attribute.
279 *
280 * @param className class name
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530281 * @param name attribute name
282 * @param type return type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530283 * @return setter for attribute
284 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530285 private static String getSetter(String className, String name, String type, int generatedJavaFiles) {
286 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
287 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX
janani b4a6711a2016-05-17 13:12:22 +0530288 + getCapitalCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530289 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO +
290 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
291 } else {
292 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE +
293 name + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
294 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL +
295 SPACE + name + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + THIS +
296 SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
297 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530298 }
299
300 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530301 * Returns the setter method strings for class file.
302 *
303 * @param attr attribute info
304 * @return setter method for class
305 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530306 public static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530307
Vinod Kumar S38046502016-03-23 15:30:27 +0530308 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530309 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530310 return getTypeDefSetter(attrQuaifiedType, attributeName);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530311 }
312
313 /**
314 * Returns type def's setter for attribute.
315 *
316 * @param type data type
317 * @param name attribute name
318 * @return setter for type def's attribute
319 */
320 private static String getTypeDefSetter(String type, String name) {
janani b4a6711a2016-05-17 13:12:22 +0530321 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(name)
Bharat saraswale2d51d62016-03-23 19:40:35 +0530322 + OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
323 + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE
324 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530325 }
326
327 /**
328 * Returns override string.
329 *
330 * @return override string
331 */
332 public static String getOverRideString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530333 return NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530334 }
335
336 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530337 * Returns the getter method strings for interface file.
338 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530339 * @param yangName name of the attribute
Bharat saraswal870c56f2016-02-20 21:57:16 +0530340 * @param returnType return type of attribute
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530341 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530342 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530343 * @return getter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530344 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530345 public static String getGetterForInterface(String yangName, String returnType, boolean isList,
346 int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530347
348 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530349 return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530350 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530351 String listAttr = getListString() + returnType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530352 return getGetterInterfaceString(listAttr, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530353 }
354
355 /**
356 * Returns getter for attribute in interface.
357 *
358 * @param returnType return type
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530359 * @param yangName attribute name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530360 * @return getter for interface
361 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530362 private static String getGetterInterfaceString(String returnType, String yangName,
363 int generatedJavaFiles) {
364 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
janani b4a6711a2016-05-17 13:12:22 +0530365 return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCapitalCase(yangName)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530366 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
367 } else {
368 return FOUR_SPACE_INDENTATION + returnType + SPACE + yangName
369 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
370 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530371 }
372
373 /**
374 * Returns the setter method strings for interface file.
375 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530376 * @param attrName name of the attribute
377 * @param attrType return type of attribute
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530378 * @param className name of the java class being generated
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530379 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530380 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530381 * @return setter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530382 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530383 public static String getSetterForInterface(String attrName, String attrType, String className,
384 boolean isList, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530385
386 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530387 return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530388 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530389 String listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530390 return getSetterInterfaceString(className, attrName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530391 }
392
393 /**
394 * Returns setter string for interface.
395 *
396 * @param className class name
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530397 * @param attrName attribute name
398 * @param attrType attribute type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530399 * @return setter string
400 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530401 private static String getSetterInterfaceString(String className, String attrName, String attrType,
402 int generatedJavaFiles) {
403 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
404
janani b4a6711a2016-05-17 13:12:22 +0530405 return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(attrName)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530406 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
407 } else {
408 return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + attrName
409 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
410 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530411 }
412
413 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530414 * Returns list string.
415 *
416 * @return list string
417 */
418 private static String getListString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530419 return LIST + DIAMOND_OPEN_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530420 }
421
422 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530423 * Returns return type for attribute.
424 *
425 * @param attr attribute info
426 * @return return type
427 */
428 private static String getReturnType(JavaAttributeInfo attr) {
429
Bharat saraswale2d51d62016-03-23 19:40:35 +0530430 String returnType = EMPTY_STRING;
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530431 if (attr.isQualifiedName() && attr.getImportInfo().getPkgInfo() != null) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530432 returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
Vinod Kumar S38046502016-03-23 15:30:27 +0530433 }
434 returnType = returnType + attr.getImportInfo().getClassInfo();
435 return returnType;
436 }
437
438 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530439 * Returns the build method strings for interface file.
440 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530441 * @param yangName name of the interface
442 * @return build method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530443 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530444 public static String getBuildForInterface(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530445 return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
446 + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530447 }
448
449 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530450 * Returns constructor string for impl class.
451 *
452 * @param yangName class name
453 * @return constructor string
454 */
455 public static String getConstructorStart(String yangName) {
456
Bharat saraswale2d51d62016-03-23 19:40:35 +0530457 String javadoc = getConstructorString(yangName);
458 String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + IMPL + OPEN_PARENTHESIS + yangName
459 + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
460 + NEW_LINE;
Vinod Kumar S38046502016-03-23 15:30:27 +0530461 return javadoc + constructor;
462 }
463
464 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530465 * Returns the constructor strings for class file.
466 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530467 * @param yangName name of the class
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530468 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530469 * @param generatedJavaFiles generated java files
Bharat saraswal870c56f2016-02-20 21:57:16 +0530470 * @return constructor for class
471 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530472 public static String getConstructor(String yangName, JavaAttributeInfo attr, int generatedJavaFiles) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530473
janani b4a6711a2016-05-17 13:12:22 +0530474 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530475 String constructor;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530476
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530477 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
478 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD + getCamelCase(attributeName, null) + SPACE + EQUAL
479 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
janani b4a6711a2016-05-17 13:12:22 +0530480 + getCapitalCase(getCamelCase(attributeName, null)) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530481 SEMI_COLAN
482 + NEW_LINE;
483 } else {
484 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD + getCamelCase(attributeName, null) + SPACE + EQUAL
485 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + getCamelCase(attributeName, null) +
486 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
487 + NEW_LINE;
488 }
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530489 return constructor;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530490 }
491
492 /**
Gaurav Agrawal56527662016-04-20 15:49:17 +0530493 * Returns the rpc strings for service interface.
494 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530495 * @param rpcName name of the rpc
496 * @param inputName name of input
Gaurav Agrawal56527662016-04-20 15:49:17 +0530497 * @param outputName name of output
498 * @return rpc method string
499 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530500 public static String getRpcServiceMethod(String rpcName, String inputName, String outputName) {
Gaurav Agrawal56527662016-04-20 15:49:17 +0530501
janani b4a6711a2016-05-17 13:12:22 +0530502 rpcName = getCamelCase(rpcName, null);
503 inputName = getCapitalCase(inputName);
Bharat saraswalc0e04842016-05-12 13:16:57 +0530504 if (!outputName.equals(VOID)) {
janani b4a6711a2016-05-17 13:12:22 +0530505 outputName = getCapitalCase(outputName);
Bharat saraswalc0e04842016-05-12 13:16:57 +0530506 }
507 return FOUR_SPACE_INDENTATION + outputName + SPACE + rpcName + OPEN_PARENTHESIS + inputName + SPACE
508 + RPC_INPUT_VAR_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530509 }
510
511 /**
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530512 * Returns the rpc strings for manager impl.
513 *
514 * @param rpcName name of the rpc
515 * @param inputName name of input
516 * @param outputName name of output
517 * @return rpc method string
518 */
519 public static String getRpcManagerMethod(String rpcName, String inputName, String outputName) {
520
janani b4a6711a2016-05-17 13:12:22 +0530521 rpcName = getCamelCase(rpcName, null);
522 inputName = getCapitalCase(inputName);
Bharat saraswalc0e04842016-05-12 13:16:57 +0530523 if (!outputName.equals(VOID)) {
janani b4a6711a2016-05-17 13:12:22 +0530524 outputName = getCapitalCase(outputName);
Bharat saraswalc0e04842016-05-12 13:16:57 +0530525 }
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530526
Bharat saraswalc0e04842016-05-12 13:16:57 +0530527 String method =
528 getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName
529 + OPEN_PARENTHESIS + inputName + SPACE + RPC_INPUT_VAR_NAME + CLOSE_PARENTHESIS + SPACE
530 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530531 if (!outputName.contentEquals(VOID)) {
532 method += EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE;
533 }
534 method += FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
535
536 return method;
537 }
538
539 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530540 * Returns the build method strings for class file.
541 *
542 * @param yangName class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530543 * @return build method string for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530544 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530545 public static String getBuild(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530546 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
547 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE
548 + yangName + IMPL + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
549 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530550 }
551
552 /**
553 * Returns the Default constructor strings for class file.
554 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530555 * @param name name of the class
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530556 * @param modifierType modifier type for default constructor
Bharat saraswal870c56f2016-02-20 21:57:16 +0530557 * @return Default constructor for class
558 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530559 private static String getDefaultConstructor(String name, String modifierType) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530560 return FOUR_SPACE_INDENTATION + modifierType + SPACE + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
561 + OPEN_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530562 }
563
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530564 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530565 * Returns to string method's open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530566 *
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530567 * @return string method's open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530568 */
569 public static String getToStringMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530570 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STRING_DATA_TYPE + SPACE + TO
571 + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
572 + EIGHT_SPACE_INDENTATION + RETURN + GOOGLE_MORE_OBJECT_METHOD_STRING + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530573 }
574
575 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530576 * Returns omit null value string.
577 *
578 * @return omit null value string
579 */
580 public static String getOmitNullValueString() {
581 return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING + NEW_LINE;
582 }
583
584 /**
585 * Returns to string method's close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530586 *
587 * @return to string method close string
588 */
589 public static String getToStringMethodClose() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530590 return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
591 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530592 }
593
594 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530595 * Returns to string method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530596 *
597 * @param attr attribute info
598 * @return to string method
599 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530600 public static String getToStringMethod(JavaAttributeInfo attr) {
601
janani b4a6711a2016-05-17 13:12:22 +0530602 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530603 return TWELVE_SPACE_INDENTATION + PERIOD + ADD_STRING + OPEN_PARENTHESIS + QUOTES + attributeName + QUOTES
604 + COMMA + SPACE + attributeName + CLOSE_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530605 }
606
607 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530608 * Returns from string method's open string.
609 *
610 * @param className name of the class
611 * @return from string method's open string
612 */
613 public static String getFromStringMethodSignature(String className) {
Bharat saraswalc0e04842016-05-12 13:16:57 +0530614 return getJavaDoc(FROM_METHOD, className, false) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530615 + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS + STRING_DATA_TYPE + SPACE
616 + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
617 }
618
619 /**
620 * Return from string method's close string.
621 *
622 * @return from string method's close string
623 */
624 public static String getFromStringMethodClose() {
625 return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
626 CLOSE_CURLY_BRACKET + NEW_LINE;
627 }
628
629 /**
630 * Return from string method's body string.
631 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530632 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530633 * @param fromStringAttributeInfo attribute info for the from string
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530634 * wrapper type
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530635 * @return from string method's body string
636 */
637 public static String getFromStringMethod(JavaAttributeInfo attr,
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530638 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530639
640 return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
641 + getParsedSubString(attr, fromStringAttributeInfo) + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
642 + getReturnOfSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION + getCatchSubString()
643 + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
644 }
645
646 /**
647 * Returns sub string with try statement for union's from string method.
648 *
649 * @return sub string with try statement for union's from string method
650 */
651 public static String getTrySubString() {
652 return TRY + SPACE + OPEN_CURLY_BRACKET;
653 }
654
655 /**
656 * Returns sub string with return statement for union's from string method.
657 *
658 * @return sub string with return statement for union's from string method
659 */
660 public static String getReturnOfSubString() {
661 return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL + CLOSE_PARENTHESIS + SEMI_COLAN;
662 }
663
664 /**
665 * Returns sub string with catch statement for union's from string method.
666 *
667 * @return sub string with catch statement for union's from string method
668 */
669 public static String getCatchSubString() {
670 return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS + EXCEPTION + SPACE + EXCEPTION_VAR
671 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
672 }
673
674 /**
675 * Returns sub string with parsed statement for union's from string method.
676 *
677 * @param attr attribute info
678 * @return sub string with parsed statement for union's from string method
679 */
680 private static String getParsedSubString(JavaAttributeInfo attr,
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530681 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530682
683 String targetDataType = getReturnType(attr);
684 String parseFromStringMethod = getParseFromStringMethod(targetDataType,
685 fromStringAttributeInfo.getAttributeType());
686 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + parseFromStringMethod
687 + OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS;
688 }
689
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530690 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530691 * Returns hash code method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530692 *
Bharat saraswald9822e92016-04-05 15:13:44 +0530693 * @return hash code method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530694 */
695 public static String getHashCodeMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530696 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + INT + SPACE + HASH_CODE_STRING
697 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
698 + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530699 }
700
701 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530702 * Returns hash code methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530703 *
704 * @param hashcodeString hash code string
705 * @return to hash code method close string
706 */
707 public static String getHashCodeMethodClose(String hashcodeString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530708 hashcodeString = trimAtLast(hashcodeString, COMMA);
709 hashcodeString = trimAtLast(hashcodeString, SPACE);
710 return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
711 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530712 }
713
714 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530715 * Returns hash code method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530716 *
717 * @param attr attribute info
718 * @return hash code method
719 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530720 public static String getHashCodeMethod(JavaAttributeInfo attr) {
janani b4a6711a2016-05-17 13:12:22 +0530721 return attr.getAttributeName() + COMMA + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530722 }
723
724 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530725 * Returns equals method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530726 *
727 * @param className class name
Bharat saraswald9822e92016-04-05 15:13:44 +0530728 * @return equals method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530729 */
730 public static String getEqualsMethodOpen(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530731 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE + EQUALS_STRING
732 + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + OBJ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
733 + NEW_LINE + getEqualsMethodsCommonIfCondition() + getEqualsMethodsSpecificIfCondition(className);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530734 }
735
736 /**
737 * Returns equal methods if condition string.
738 *
739 * @return if condition string
740 */
741 private static String getEqualsMethodsCommonIfCondition() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530742 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + THIS + SPACE + EQUAL + EQUAL + SPACE + OBJ
743 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + SPACE
744 + TRUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530745 }
746
747 /**
748 * Returns if condition for specific class object in equals method.
749 *
750 * @param className class name
751 * @return if condition string
752 */
753 private static String getEqualsMethodsSpecificIfCondition(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530754 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + OBJ + INSTANCE_OF + className
755 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + className
756 + SPACE + OTHER + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS + className + CLOSE_PARENTHESIS + SPACE
757 + OBJ + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530758 }
759
760 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530761 * Returns equals methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530762 *
763 * @param equalMethodString equal method string
Bharat saraswald9822e92016-04-05 15:13:44 +0530764 * @return equals method close string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530765 */
766 public static String getEqualsMethodClose(String equalMethodString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530767 equalMethodString = trimAtLast(equalMethodString, AND);
768 equalMethodString = trimAtLast(equalMethodString, AND);
769 equalMethodString = trimAtLast(equalMethodString, SPACE);
770 equalMethodString = trimAtLast(equalMethodString, NEW_LINE) + SEMI_COLAN + NEW_LINE;
771 return equalMethodString + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
772 + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
773 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530774 }
775
776 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530777 * Returns equals method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530778 *
779 * @param attr attribute info
780 * @return equals method
781 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530782 public static String getEqualsMethod(JavaAttributeInfo attr) {
783
janani b4a6711a2016-05-17 13:12:22 +0530784 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530785 return SIXTEEN_SPACE_INDENTATION + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS
786 + attributeName + COMMA + SPACE + OTHER + PERIOD + attributeName + CLOSE_PARENTHESIS + SPACE + AND
787 + AND;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530788 }
789
790 /**
791 * Returns of method string for class.
792 *
793 * @param name class name
794 * @param attr attribute info
795 * @return of method string
796 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530797 public static String getOfMethod(String name, JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530798
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530799 String attrQualifiedType = getReturnType(attr);
800
Bharat saraswale2d51d62016-03-23 19:40:35 +0530801 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name + SPACE + OF + OPEN_PARENTHESIS
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530802 + attrQualifiedType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Bharat saraswale2d51d62016-03-23 19:40:35 +0530803 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name + OPEN_PARENTHESIS + VALUE
804 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530805 }
806
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530807 /**
808 * Returns implementation of add augmentation method of HasAugmentation class.
809 *
810 * @return implementation of add augmentation method of HasAugmentation class
811 */
812 public static String getAddAugmentInfoMethodImpl() {
813 String method = FOUR_SPACE_INDENTATION;
814 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + ADD_STRING
815 + AUGMENTATION + OPEN_PARENTHESIS + AUGMENTED_INFO + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
816 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST
817 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + ADD_STRING + OPEN_PARENTHESIS + VALUE
818 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
819
820 return method;
821 }
822
823 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530824 * Returns of method's string and java doc for special type.
825 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530826 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530827 * @param generatedJavaClassName class name
828 * @return of method's string and java doc for special type
829 */
830 public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName) {
831
832 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530833 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530834
835 return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " + attrName, false)
836 + getOfMethodString(attrType, generatedJavaClassName);
837 }
838
839 /**
840 * Returns of method's string.
841 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530842 * @param type data type
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530843 * @param className class name
844 * @return of method's string
845 */
846 private static String getOfMethodString(String type, String className) {
847
848 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + className + SPACE + OF + OPEN_PARENTHESIS
849 + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
850 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + className + OPEN_PARENTHESIS + VALUE
851 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
852 }
853
854 /**
855 * Returns string and java doc for constructor of type class.
856 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530857 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530858 * @param generatedJavaClassName class name
859 * @return string and java doc for constructor of type class
860 */
861 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName) {
862
863 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530864 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530865
866 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName, false)
867 + getTypeConstructorString(attrType, attrName, generatedJavaClassName);
868 }
869
870 /**
871 * Returns type constructor string.
872 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530873 * @param type data type
874 * @param name attribute name
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530875 * @param className class name
876 * @return type constructor string
877 */
878 private static String getTypeConstructorString(String type, String name, String className) {
879
880 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
881 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
882 + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
883 + CLOSE_CURLY_BRACKET;
884 }
885
886 /**
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530887 * Returns implementation of get augment info list method of HasAugmentation class.
888 *
889 * @return implementation of get augment info list method of HasAugmentation class
890 */
891 public static String getAugmentInfoListImpl() {
892
893 String method = FOUR_SPACE_INDENTATION;
894 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + LIST + DIAMOND_OPEN_BRACKET
895 + AUGMENTED_INFO + DIAMOND_CLOSE_BRACKET + SPACE + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST
896 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
897 + RETURN + SPACE + getSmallCase(AUGMENTED_INFO) + LIST + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
898 + CLOSE_CURLY_BRACKET;
899 return method;
900 }
901
902 /**
903 * Returns implementation of remove augmentation method of HasAugmentation class.
904 *
905 * @return implementation of remove augmentation method of HasAugmentation class
906 */
907 public static String getRemoveAugmentationImpl() {
908 String method = FOUR_SPACE_INDENTATION;
909 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + "remove"
910 + AUGMENTATION + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
911 + EIGHT_SPACE_INDENTATION + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST + OPEN_PARENTHESIS
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530912 + CLOSE_PARENTHESIS + PERIOD + CLEAR + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530913 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
914 return method;
915 }
916
Bharat saraswald72411a2016-04-19 01:00:16 +0530917 /**
918 * Returns enum's constructor.
919 *
920 * @param className enum's class name
921 * @return enum's constructor
922 */
923 public static String getEnumsConstrcutor(String className) {
924 return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
925 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
926 + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
927 }
Bharat saraswalc0e04842016-05-12 13:16:57 +0530928
929 /**
930 * Returns of method for enum class.
931 *
932 * @param className class name
933 * @param attr java attribute
934 * @param enumMap enum's sets map
935 * @param enumList enum's sets list
936 * @return of method
937 */
938 public static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
939 Map<String, Integer> enumMap, List<String> enumList) {
940 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530941 String attrName = attr.getAttributeName();
Bharat saraswalc0e04842016-05-12 13:16:57 +0530942
janani b4a6711a2016-05-17 13:12:22 +0530943 String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + getCapitalCase(className) + SPACE
944 + OF + OPEN_PARENTHESIS
Bharat saraswalc0e04842016-05-12 13:16:57 +0530945 + attrType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
946 + EIGHT_SPACE_INDENTATION + SWITCH + SPACE + OPEN_PARENTHESIS + VALUE
947 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
948 int value = 0;
949 for (String str : enumList) {
950
951 value = enumMap.get(str);
952 method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value + COLAN + NEW_LINE
janani b4a6711a2016-05-17 13:12:22 +0530953 + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + getCapitalCase(className) + PERIOD
Bharat saraswalc0e04842016-05-12 13:16:57 +0530954 + str + SEMI_COLAN + NEW_LINE;
955 }
956 method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLAN + NEW_LINE + SIXTEEN_SPACE_INDENTATION
957 + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
958 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
959
janani b4a6711a2016-05-17 13:12:22 +0530960 return getJavaDoc(OF_METHOD, getCapitalCase(className) + " for type " + attrName, false) + method;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530961 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530962}