blob: c4da89a7137e731f037b3427f9b2d6cf106a311b [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
Vinod Kumar S38046502016-03-23 15:30:27 +053019import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053020import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
Bharat saraswale2d51d62016-03-23 19:40:35 +053021
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053022import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053023import static org.onosproject.yangutils.translator.tojava.utils.AttributesJavaDataType.getParseFromStringMethod;
Bharat saraswale2d51d62016-03-23 19:40:35 +053024import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
25import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCaptialCase;
Bharat saraswal2f11f652016-03-25 18:19:46 +053026import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getSmallCase;
Bharat saraswale2d51d62016-03-23 19:40:35 +053027import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
28import static org.onosproject.yangutils.utils.UtilConstants.AND;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053029import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTATION;
30import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +053031import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
32import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
33import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053034import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +053035import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053036import static org.onosproject.yangutils.utils.UtilConstants.CLEAR;
Bharat saraswale2d51d62016-03-23 19:40:35 +053037import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
38import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
39import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
40import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
41import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
42import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
43import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
44import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
45import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053046import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
47import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
Bharat saraswale2d51d62016-03-23 19:40:35 +053048import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
49import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053050import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
51import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
Bharat saraswale2d51d62016-03-23 19:40:35 +053052import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
53import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
54import static org.onosproject.yangutils.utils.UtilConstants.HASH;
55import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
56import static org.onosproject.yangutils.utils.UtilConstants.IF;
57import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
58import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
59import static org.onosproject.yangutils.utils.UtilConstants.INT;
60import static org.onosproject.yangutils.utils.UtilConstants.LIST;
61import static org.onosproject.yangutils.utils.UtilConstants.NEW;
62import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053063import static org.onosproject.yangutils.utils.UtilConstants.NULL;
Bharat saraswale2d51d62016-03-23 19:40:35 +053064import static org.onosproject.yangutils.utils.UtilConstants.OBJ;
65import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
66import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
67import static org.onosproject.yangutils.utils.UtilConstants.OF;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053068import static org.onosproject.yangutils.utils.UtilConstants.OMIT_NULL_VALUE_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +053069import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
70import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
71import static org.onosproject.yangutils.utils.UtilConstants.OTHER;
72import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
73import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
74import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
75import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
76import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
Gaurav Agrawal56527662016-04-20 15:49:17 +053077import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
Bharat saraswale2d51d62016-03-23 19:40:35 +053078import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
79import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
80import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
81import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
82import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
83import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
84import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
85import static org.onosproject.yangutils.utils.UtilConstants.THIS;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053086import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
Bharat saraswale2d51d62016-03-23 19:40:35 +053087import static org.onosproject.yangutils.utils.UtilConstants.TO;
88import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053089import static org.onosproject.yangutils.utils.UtilConstants.TRY;
Bharat saraswale2d51d62016-03-23 19:40:35 +053090import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
91import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
92import static org.onosproject.yangutils.utils.UtilConstants.VOID;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053093import static org.onosproject.yangutils.utils.UtilConstants.YANG_UTILS_TODO;
Bharat saraswale2d51d62016-03-23 19:40:35 +053094import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
95import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
96import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
Gaurav Agrawal56527662016-04-20 15:49:17 +053097import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.FROM_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +053098import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053099import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.MANAGER_SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530100import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530101import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530102import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530103import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530104import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530105
106/**
Bharat saraswald9822e92016-04-05 15:13:44 +0530107 * Represents generator for methods of generated files based on the file type.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530108 */
109public final class MethodsGenerator {
110
Bharat saraswal870c56f2016-02-20 21:57:16 +0530111 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530112 * Creates an instance of method generator.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530113 */
114 private MethodsGenerator() {
115 }
116
117 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530118 * Returns the methods strings for builder interface.
119 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530120 * @param name attribute name
121 * @return method string for builder interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530122 */
123 public static String parseBuilderInterfaceBuildMethodString(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530124 return getJavaDoc(BUILD_METHOD, name, false) + getBuildForInterface(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530125 }
126
127 /**
128 * Returns getter string.
129 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530130 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530131 * @param generatedJavaFiles generated java files
Bharat saraswal870c56f2016-02-20 21:57:16 +0530132 * @return getter string
133 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530134 public static String getGetterString(JavaAttributeInfo attr, int generatedJavaFiles) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530135
Vinod Kumar S38046502016-03-23 15:30:27 +0530136 String returnType = getReturnType(attr);
Bharat saraswal2f11f652016-03-25 18:19:46 +0530137 String attributeName = getSmallCase(attr.getAttributeName());
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530138
Bharat saraswale2d51d62016-03-23 19:40:35 +0530139 return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr())
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530140 + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530141 }
142
143 /**
144 * Returns setter string.
145 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530146 * @param attr attribute info
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530147 * @param className java class name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530148 * @param generatedJavaFiles generated java files
Bharat saraswal870c56f2016-02-20 21:57:16 +0530149 * @return setter string
150 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530151 public static String getSetterString(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530152
Vinod Kumar S38046502016-03-23 15:30:27 +0530153 String attrType = getReturnType(attr);
Bharat saraswal2f11f652016-03-25 18:19:46 +0530154 String attributeName = getSmallCase(attr.getAttributeName());
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530155 JavaDocGen.JavaDocType type;
156 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
157 type = MANAGER_SETTER_METHOD;
158 } else {
159 type = SETTER_METHOD;
160 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530161
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530162 return getJavaDoc(type, attributeName, attr.isListAttr())
163 + getSetterForInterface(attributeName, attrType, className, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530164 }
165
166 /**
167 * Returns constructor method string.
168 *
169 * @param name class name
170 * @return constructor string
171 */
172 public static String getConstructorString(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530173 return getJavaDoc(CONSTRUCTOR, name, false);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530174 }
175
176 /**
177 * Returns default constructor method string.
178 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530179 * @param name class name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530180 * @param modifierType modifier type
Bharat saraswal870c56f2016-02-20 21:57:16 +0530181 * @return default constructor string
182 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530183 public static String getDefaultConstructorString(String name, String modifierType) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530184 return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false) + getDefaultConstructor(name, modifierType)
185 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530186 }
187
188 /**
189 * Returns check not null string.
190 *
191 * @param name attribute name
192 * @return check not null string
193 */
194 public static String getCheckNotNull(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530195 return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING + OPEN_PARENTHESIS + name + COMMA + SPACE + name
196 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530197 }
198
199 /**
200 * Returns build method string.
201 *
202 * @param name class name
203 * @return build string
204 */
205 public static String getBuildString(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530206 return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530207 }
208
209 /**
210 * Returns the getter method strings for class file.
211 *
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530212 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530213 * @param generatedJavaFiles for the type of java file being generated
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530214 * @return getter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530215 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530216 public static String getGetterForClass(JavaAttributeInfo attr, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530217
Vinod Kumar S38046502016-03-23 15:30:27 +0530218 String attrQuaifiedType = getReturnType(attr);
Bharat saraswal2f11f652016-03-25 18:19:46 +0530219 String attributeName = getSmallCase(attr.getAttributeName());
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530220
221 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530222 return getGetter(attrQuaifiedType, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530223 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530224 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530225 return getGetter(listAttr, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530226 }
227
228 /**
229 * Returns getter for attribute.
230 *
231 * @param type return type
232 * @param name attribute name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530233 * @param generatedJavaFiles generated java files
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530234 * @return getter for attribute
235 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530236 public static String getGetter(String type, String name, int generatedJavaFiles) {
237 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
238 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCaptialCase(name)
239 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
240 EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION +
241 RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
242 } else {
243 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + name
244 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
245 EIGHT_SPACE_INDENTATION + RETURN + SPACE + name + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
246 + CLOSE_CURLY_BRACKET;
247 }
248
Bharat saraswal870c56f2016-02-20 21:57:16 +0530249 }
250
251 /**
252 * Returns the setter method strings for class file.
253 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530254 * @param attr attribute info
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530255 * @param className name of the class
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530256 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530257 * @return setter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530258 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530259 public static String getSetterForClass(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530260
Vinod Kumar S38046502016-03-23 15:30:27 +0530261 String attrQuaifiedType = getReturnType(attr);
Bharat saraswal2f11f652016-03-25 18:19:46 +0530262 String attributeName = getSmallCase(attr.getAttributeName());
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530263 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530264 return getSetter(className, attributeName, attrQuaifiedType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530265 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530266 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530267 return getSetter(className, attributeName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530268 }
269
270 /**
271 * Returns setter for attribute.
272 *
273 * @param className class name
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530274 * @param name attribute name
275 * @param type return type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530276 * @return setter for attribute
277 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530278 private static String getSetter(String className, String name, String type, int generatedJavaFiles) {
279 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
280 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX
281 + getCaptialCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
282 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO +
283 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
284 } else {
285 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE +
286 name + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
287 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL +
288 SPACE + name + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + THIS +
289 SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
290 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530291 }
292
293 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530294 * Returns the setter method strings for class file.
295 *
296 * @param attr attribute info
297 * @return setter method for class
298 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530299 public static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530300
Vinod Kumar S38046502016-03-23 15:30:27 +0530301 String attrQuaifiedType = getReturnType(attr);
Bharat saraswal2f11f652016-03-25 18:19:46 +0530302 String attributeName = getSmallCase(attr.getAttributeName());
Bharat saraswale2d51d62016-03-23 19:40:35 +0530303 return getTypeDefSetter(attrQuaifiedType, attributeName);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530304 }
305
306 /**
307 * Returns type def's setter for attribute.
308 *
309 * @param type data type
310 * @param name attribute name
311 * @return setter for type def's attribute
312 */
313 private static String getTypeDefSetter(String type, String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530314 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX + getCaptialCase(name)
315 + OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
316 + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE
317 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530318 }
319
320 /**
321 * Returns override string.
322 *
323 * @return override string
324 */
325 public static String getOverRideString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530326 return NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530327 }
328
329 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530330 * Returns the getter method strings for interface file.
331 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530332 * @param yangName name of the attribute
Bharat saraswal870c56f2016-02-20 21:57:16 +0530333 * @param returnType return type of attribute
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530334 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530335 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530336 * @return getter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530337 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530338 public static String getGetterForInterface(String yangName, String returnType, boolean isList,
339 int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530340
341 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530342 return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530343 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530344 String listAttr = getListString() + returnType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530345 return getGetterInterfaceString(listAttr, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530346 }
347
348 /**
349 * Returns getter for attribute in interface.
350 *
351 * @param returnType return type
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530352 * @param yangName attribute name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530353 * @return getter for interface
354 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530355 private static String getGetterInterfaceString(String returnType, String yangName,
356 int generatedJavaFiles) {
357 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
358 return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCaptialCase(yangName)
359 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
360 } else {
361 return FOUR_SPACE_INDENTATION + returnType + SPACE + yangName
362 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
363 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530364 }
365
366 /**
367 * Returns the setter method strings for interface file.
368 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530369 * @param attrName name of the attribute
370 * @param attrType return type of attribute
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530371 * @param className name of the java class being generated
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530372 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530373 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530374 * @return setter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530375 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530376 public static String getSetterForInterface(String attrName, String attrType, String className,
377 boolean isList, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530378
379 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530380 return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530381 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530382 String listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530383 return getSetterInterfaceString(className, attrName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530384 }
385
386 /**
387 * Returns setter string for interface.
388 *
389 * @param className class name
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530390 * @param attrName attribute name
391 * @param attrType attribute type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530392 * @return setter string
393 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530394 private static String getSetterInterfaceString(String className, String attrName, String attrType,
395 int generatedJavaFiles) {
396 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
397
398 return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCaptialCase(attrName)
399 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
400 } else {
401 return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + attrName
402 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
403 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530404 }
405
406 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530407 * Returns list string.
408 *
409 * @return list string
410 */
411 private static String getListString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530412 return LIST + DIAMOND_OPEN_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530413 }
414
415 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530416 * Returns return type for attribute.
417 *
418 * @param attr attribute info
419 * @return return type
420 */
421 private static String getReturnType(JavaAttributeInfo attr) {
422
Bharat saraswale2d51d62016-03-23 19:40:35 +0530423 String returnType = EMPTY_STRING;
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530424 if (attr.isQualifiedName() && attr.getImportInfo().getPkgInfo() != null) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530425 returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
Vinod Kumar S38046502016-03-23 15:30:27 +0530426 }
427 returnType = returnType + attr.getImportInfo().getClassInfo();
428 return returnType;
429 }
430
431 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530432 * Returns the build method strings for interface file.
433 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530434 * @param yangName name of the interface
435 * @return build method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530436 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530437 public static String getBuildForInterface(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530438 return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
439 + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530440 }
441
442 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530443 * Returns constructor string for impl class.
444 *
445 * @param yangName class name
446 * @return constructor string
447 */
448 public static String getConstructorStart(String yangName) {
449
Bharat saraswale2d51d62016-03-23 19:40:35 +0530450 String javadoc = getConstructorString(yangName);
451 String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + IMPL + OPEN_PARENTHESIS + yangName
452 + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
453 + NEW_LINE;
Vinod Kumar S38046502016-03-23 15:30:27 +0530454 return javadoc + constructor;
455 }
456
457 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530458 * Returns the constructor strings for class file.
459 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530460 * @param yangName name of the class
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530461 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530462 * @param generatedJavaFiles generated java files
Bharat saraswal870c56f2016-02-20 21:57:16 +0530463 * @return constructor for class
464 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530465 public static String getConstructor(String yangName, JavaAttributeInfo attr, int generatedJavaFiles) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530466
Bharat saraswal2f11f652016-03-25 18:19:46 +0530467 String attributeName = getSmallCase(attr.getAttributeName());
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530468 String constructor;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530469
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530470 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
471 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD + getCamelCase(attributeName, null) + SPACE + EQUAL
472 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
473 + getCaptialCase(getCamelCase(attributeName, null)) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
474 SEMI_COLAN
475 + NEW_LINE;
476 } else {
477 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD + getCamelCase(attributeName, null) + SPACE + EQUAL
478 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + getCamelCase(attributeName, null) +
479 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
480 + NEW_LINE;
481 }
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530482 return constructor;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530483 }
484
485 /**
Gaurav Agrawal56527662016-04-20 15:49:17 +0530486 * Returns the rpc strings for service interface.
487 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530488 * @param rpcName name of the rpc
489 * @param inputName name of input
Gaurav Agrawal56527662016-04-20 15:49:17 +0530490 * @param outputName name of output
491 * @return rpc method string
492 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530493 public static String getRpcServiceMethod(String rpcName, String inputName, String outputName) {
Gaurav Agrawal56527662016-04-20 15:49:17 +0530494
495 rpcName = getSmallCase(getCamelCase(rpcName, null));
496 inputName = getCaptialCase(inputName);
497 outputName = getCaptialCase(outputName);
498
499 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName + OPEN_PARENTHESIS
500 + inputName + SPACE + RPC_INPUT_VAR_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
501 }
502
503 /**
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530504 * Returns the rpc strings for manager impl.
505 *
506 * @param rpcName name of the rpc
507 * @param inputName name of input
508 * @param outputName name of output
509 * @return rpc method string
510 */
511 public static String getRpcManagerMethod(String rpcName, String inputName, String outputName) {
512
513 rpcName = getSmallCase(getCamelCase(rpcName, null));
514 inputName = getCaptialCase(inputName);
515 outputName = getCaptialCase(outputName);
516
517 String method = getOverRideString() +
518 FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName + OPEN_PARENTHESIS
519 + inputName + SPACE + RPC_INPUT_VAR_NAME + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
520 + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE;
521 if (!outputName.contentEquals(VOID)) {
522 method += EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE;
523 }
524 method += FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
525
526 return method;
527 }
528
529 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530530 * Returns the build method strings for class file.
531 *
532 * @param yangName class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530533 * @return build method string for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530534 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530535 public static String getBuild(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530536 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
537 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE
538 + yangName + IMPL + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
539 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530540 }
541
542 /**
543 * Returns the Default constructor strings for class file.
544 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530545 * @param name name of the class
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530546 * @param modifierType modifier type for default constructor
Bharat saraswal870c56f2016-02-20 21:57:16 +0530547 * @return Default constructor for class
548 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530549 private static String getDefaultConstructor(String name, String modifierType) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530550 return FOUR_SPACE_INDENTATION + modifierType + SPACE + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
551 + OPEN_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530552 }
553
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530554 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530555 * Returns to string method's open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530556 *
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530557 * @return string method's open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530558 */
559 public static String getToStringMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530560 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STRING_DATA_TYPE + SPACE + TO
561 + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
562 + EIGHT_SPACE_INDENTATION + RETURN + GOOGLE_MORE_OBJECT_METHOD_STRING + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530563 }
564
565 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530566 * Returns omit null value string.
567 *
568 * @return omit null value string
569 */
570 public static String getOmitNullValueString() {
571 return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING + NEW_LINE;
572 }
573
574 /**
575 * Returns to string method's close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530576 *
577 * @return to string method close string
578 */
579 public static String getToStringMethodClose() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530580 return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
581 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530582 }
583
584 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530585 * Returns to string method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530586 *
587 * @param attr attribute info
588 * @return to string method
589 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530590 public static String getToStringMethod(JavaAttributeInfo attr) {
591
Bharat saraswal2f11f652016-03-25 18:19:46 +0530592 String attributeName = getSmallCase(attr.getAttributeName());
Bharat saraswale2d51d62016-03-23 19:40:35 +0530593 return TWELVE_SPACE_INDENTATION + PERIOD + ADD_STRING + OPEN_PARENTHESIS + QUOTES + attributeName + QUOTES
594 + COMMA + SPACE + attributeName + CLOSE_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530595 }
596
597 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530598 * Returns from string method's open string.
599 *
600 * @param className name of the class
601 * @return from string method's open string
602 */
603 public static String getFromStringMethodSignature(String className) {
Gaurav Agrawal56527662016-04-20 15:49:17 +0530604 return getJavaDoc(FROM_METHOD, className, false) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530605 + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS + STRING_DATA_TYPE + SPACE
606 + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
607 }
608
609 /**
610 * Return from string method's close string.
611 *
612 * @return from string method's close string
613 */
614 public static String getFromStringMethodClose() {
615 return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
616 CLOSE_CURLY_BRACKET + NEW_LINE;
617 }
618
619 /**
620 * Return from string method's body string.
621 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530622 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530623 * @param fromStringAttributeInfo attribute info for the from string
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530624 * wrapper type
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530625 * @return from string method's body string
626 */
627 public static String getFromStringMethod(JavaAttributeInfo attr,
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530628 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530629
630 return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
631 + getParsedSubString(attr, fromStringAttributeInfo) + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
632 + getReturnOfSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION + getCatchSubString()
633 + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
634 }
635
636 /**
637 * Returns sub string with try statement for union's from string method.
638 *
639 * @return sub string with try statement for union's from string method
640 */
641 public static String getTrySubString() {
642 return TRY + SPACE + OPEN_CURLY_BRACKET;
643 }
644
645 /**
646 * Returns sub string with return statement for union's from string method.
647 *
648 * @return sub string with return statement for union's from string method
649 */
650 public static String getReturnOfSubString() {
651 return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL + CLOSE_PARENTHESIS + SEMI_COLAN;
652 }
653
654 /**
655 * Returns sub string with catch statement for union's from string method.
656 *
657 * @return sub string with catch statement for union's from string method
658 */
659 public static String getCatchSubString() {
660 return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS + EXCEPTION + SPACE + EXCEPTION_VAR
661 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
662 }
663
664 /**
665 * Returns sub string with parsed statement for union's from string method.
666 *
667 * @param attr attribute info
668 * @return sub string with parsed statement for union's from string method
669 */
670 private static String getParsedSubString(JavaAttributeInfo attr,
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530671 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530672
673 String targetDataType = getReturnType(attr);
674 String parseFromStringMethod = getParseFromStringMethod(targetDataType,
675 fromStringAttributeInfo.getAttributeType());
676 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + parseFromStringMethod
677 + OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS;
678 }
679
680
681 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530682 * Returns hash code method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530683 *
Bharat saraswald9822e92016-04-05 15:13:44 +0530684 * @return hash code method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530685 */
686 public static String getHashCodeMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530687 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + INT + SPACE + HASH_CODE_STRING
688 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
689 + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530690 }
691
692 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530693 * Returns hash code methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530694 *
695 * @param hashcodeString hash code string
696 * @return to hash code method close string
697 */
698 public static String getHashCodeMethodClose(String hashcodeString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530699 hashcodeString = trimAtLast(hashcodeString, COMMA);
700 hashcodeString = trimAtLast(hashcodeString, SPACE);
701 return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
702 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530703 }
704
705 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530706 * Returns hash code method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530707 *
708 * @param attr attribute info
709 * @return hash code method
710 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530711 public static String getHashCodeMethod(JavaAttributeInfo attr) {
Bharat saraswal2f11f652016-03-25 18:19:46 +0530712 return getSmallCase(attr.getAttributeName()) + COMMA + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530713 }
714
715 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530716 * Returns equals method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530717 *
718 * @param className class name
Bharat saraswald9822e92016-04-05 15:13:44 +0530719 * @return equals method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530720 */
721 public static String getEqualsMethodOpen(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530722 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE + EQUALS_STRING
723 + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + OBJ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
724 + NEW_LINE + getEqualsMethodsCommonIfCondition() + getEqualsMethodsSpecificIfCondition(className);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530725 }
726
727 /**
728 * Returns equal methods if condition string.
729 *
730 * @return if condition string
731 */
732 private static String getEqualsMethodsCommonIfCondition() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530733 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + THIS + SPACE + EQUAL + EQUAL + SPACE + OBJ
734 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + SPACE
735 + TRUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530736 }
737
738 /**
739 * Returns if condition for specific class object in equals method.
740 *
741 * @param className class name
742 * @return if condition string
743 */
744 private static String getEqualsMethodsSpecificIfCondition(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530745 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + OBJ + INSTANCE_OF + className
746 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + className
747 + SPACE + OTHER + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS + className + CLOSE_PARENTHESIS + SPACE
748 + OBJ + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530749 }
750
751 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530752 * Returns equals methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530753 *
754 * @param equalMethodString equal method string
Bharat saraswald9822e92016-04-05 15:13:44 +0530755 * @return equals method close string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530756 */
757 public static String getEqualsMethodClose(String equalMethodString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530758 equalMethodString = trimAtLast(equalMethodString, AND);
759 equalMethodString = trimAtLast(equalMethodString, AND);
760 equalMethodString = trimAtLast(equalMethodString, SPACE);
761 equalMethodString = trimAtLast(equalMethodString, NEW_LINE) + SEMI_COLAN + NEW_LINE;
762 return equalMethodString + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
763 + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
764 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530765 }
766
767 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530768 * Returns equals method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530769 *
770 * @param attr attribute info
771 * @return equals method
772 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530773 public static String getEqualsMethod(JavaAttributeInfo attr) {
774
Bharat saraswal2f11f652016-03-25 18:19:46 +0530775 String attributeName = getSmallCase(attr.getAttributeName());
Bharat saraswale2d51d62016-03-23 19:40:35 +0530776 return SIXTEEN_SPACE_INDENTATION + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS
777 + attributeName + COMMA + SPACE + OTHER + PERIOD + attributeName + CLOSE_PARENTHESIS + SPACE + AND
778 + AND;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530779 }
780
781 /**
782 * Returns of method string for class.
783 *
784 * @param name class name
785 * @param attr attribute info
786 * @return of method string
787 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530788 public static String getOfMethod(String name, JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530789
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530790 String attrQualifiedType = getReturnType(attr);
791
Bharat saraswale2d51d62016-03-23 19:40:35 +0530792 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name + SPACE + OF + OPEN_PARENTHESIS
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530793 + attrQualifiedType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Bharat saraswale2d51d62016-03-23 19:40:35 +0530794 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name + OPEN_PARENTHESIS + VALUE
795 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530796 }
797
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530798 /**
799 * Returns implementation of add augmentation method of HasAugmentation class.
800 *
801 * @return implementation of add augmentation method of HasAugmentation class
802 */
803 public static String getAddAugmentInfoMethodImpl() {
804 String method = FOUR_SPACE_INDENTATION;
805 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + ADD_STRING
806 + AUGMENTATION + OPEN_PARENTHESIS + AUGMENTED_INFO + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
807 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST
808 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + ADD_STRING + OPEN_PARENTHESIS + VALUE
809 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
810
811 return method;
812 }
813
814 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530815 * Returns of method's string and java doc for special type.
816 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530817 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530818 * @param generatedJavaClassName class name
819 * @return of method's string and java doc for special type
820 */
821 public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName) {
822
823 String attrType = getReturnType(attr);
824 String attrName = getSmallCase(attr.getAttributeName());
825
826 return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " + attrName, false)
827 + getOfMethodString(attrType, generatedJavaClassName);
828 }
829
830 /**
831 * Returns of method's string.
832 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530833 * @param type data type
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530834 * @param className class name
835 * @return of method's string
836 */
837 private static String getOfMethodString(String type, String className) {
838
839 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + className + SPACE + OF + OPEN_PARENTHESIS
840 + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
841 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + className + OPEN_PARENTHESIS + VALUE
842 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
843 }
844
845 /**
846 * Returns string and java doc for constructor of type class.
847 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530848 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530849 * @param generatedJavaClassName class name
850 * @return string and java doc for constructor of type class
851 */
852 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName) {
853
854 String attrType = getReturnType(attr);
855 String attrName = getSmallCase(attr.getAttributeName());
856
857 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName, false)
858 + getTypeConstructorString(attrType, attrName, generatedJavaClassName);
859 }
860
861 /**
862 * Returns type constructor string.
863 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530864 * @param type data type
865 * @param name attribute name
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530866 * @param className class name
867 * @return type constructor string
868 */
869 private static String getTypeConstructorString(String type, String name, String className) {
870
871 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
872 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
873 + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
874 + CLOSE_CURLY_BRACKET;
875 }
876
877 /**
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530878 * Returns implementation of get augment info list method of HasAugmentation class.
879 *
880 * @return implementation of get augment info list method of HasAugmentation class
881 */
882 public static String getAugmentInfoListImpl() {
883
884 String method = FOUR_SPACE_INDENTATION;
885 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + LIST + DIAMOND_OPEN_BRACKET
886 + AUGMENTED_INFO + DIAMOND_CLOSE_BRACKET + SPACE + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST
887 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
888 + RETURN + SPACE + getSmallCase(AUGMENTED_INFO) + LIST + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
889 + CLOSE_CURLY_BRACKET;
890 return method;
891 }
892
893 /**
894 * Returns implementation of remove augmentation method of HasAugmentation class.
895 *
896 * @return implementation of remove augmentation method of HasAugmentation class
897 */
898 public static String getRemoveAugmentationImpl() {
899 String method = FOUR_SPACE_INDENTATION;
900 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + "remove"
901 + AUGMENTATION + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
902 + EIGHT_SPACE_INDENTATION + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST + OPEN_PARENTHESIS
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530903 + CLOSE_PARENTHESIS + PERIOD + CLEAR + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530904 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
905 return method;
906 }
907
Bharat saraswald72411a2016-04-19 01:00:16 +0530908 /**
909 * Returns enum's constructor.
910 *
911 * @param className enum's class name
912 * @return enum's constructor
913 */
914 public static String getEnumsConstrcutor(String className) {
915 return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
916 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
917 + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
918 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530919}