blob: ec1296f4f783c7ef656a51aef3a45934313403a3 [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;
Bharat saraswale2d51d62016-03-23 19:40:35 +053020
Gaurav Agrawal338735b2016-04-18 18:53:11 +053021import static org.onosproject.yangutils.translator.tojava.utils.AttributesJavaDataType.getParseFromStringMethod;
Bharat saraswale2d51d62016-03-23 19:40:35 +053022import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
23import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCaptialCase;
Bharat saraswal2f11f652016-03-25 18:19:46 +053024import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getSmallCase;
Bharat saraswale2d51d62016-03-23 19:40:35 +053025import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
26import static org.onosproject.yangutils.utils.UtilConstants.AND;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053027import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTATION;
28import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +053029import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
30import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
31import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053032import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +053033import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053034import static org.onosproject.yangutils.utils.UtilConstants.CLEAR;
Bharat saraswale2d51d62016-03-23 19:40:35 +053035import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
36import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
37import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
38import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
39import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
40import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
41import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
42import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
43import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053044import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
45import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
Bharat saraswale2d51d62016-03-23 19:40:35 +053046import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
47import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053048import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
49import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
Bharat saraswale2d51d62016-03-23 19:40:35 +053050import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
51import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
52import static org.onosproject.yangutils.utils.UtilConstants.HASH;
53import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
54import static org.onosproject.yangutils.utils.UtilConstants.IF;
55import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
56import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
57import static org.onosproject.yangutils.utils.UtilConstants.INT;
58import static org.onosproject.yangutils.utils.UtilConstants.LIST;
59import static org.onosproject.yangutils.utils.UtilConstants.NEW;
60import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053061import static org.onosproject.yangutils.utils.UtilConstants.NULL;
Bharat saraswale2d51d62016-03-23 19:40:35 +053062import static org.onosproject.yangutils.utils.UtilConstants.OBJ;
63import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
64import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
65import static org.onosproject.yangutils.utils.UtilConstants.OF;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053066import static org.onosproject.yangutils.utils.UtilConstants.OMIT_NULL_VALUE_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +053067import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
68import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
69import static org.onosproject.yangutils.utils.UtilConstants.OTHER;
70import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
71import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
72import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
73import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
74import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
75import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
76import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
77import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
78import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
79import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
80import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
81import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
82import static org.onosproject.yangutils.utils.UtilConstants.THIS;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053083import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
Bharat saraswale2d51d62016-03-23 19:40:35 +053084import static org.onosproject.yangutils.utils.UtilConstants.TO;
85import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053086import static org.onosproject.yangutils.utils.UtilConstants.TRY;
Bharat saraswale2d51d62016-03-23 19:40:35 +053087import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
88import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
89import static org.onosproject.yangutils.utils.UtilConstants.VOID;
Bharat saraswale2d51d62016-03-23 19:40:35 +053090import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
91import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
92import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
93import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053094import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +053095import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053096import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
97import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.UNION_FROM_METHOD;
98import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
Bharat saraswale2d51d62016-03-23 19:40:35 +053099import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530100
101/**
Bharat saraswald9822e92016-04-05 15:13:44 +0530102 * Represents generator for methods of generated files based on the file type.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530103 */
104public final class MethodsGenerator {
105
Bharat saraswal870c56f2016-02-20 21:57:16 +0530106 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530107 * Creates an instance of method generator.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530108 */
109 private MethodsGenerator() {
110 }
111
112 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530113 * Returns the methods strings for builder interface.
114 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530115 * @param name attribute name
116 * @return method string for builder interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530117 */
118 public static String parseBuilderInterfaceBuildMethodString(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530119 return getJavaDoc(BUILD_METHOD, name, false) + getBuildForInterface(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530120 }
121
122 /**
123 * Returns getter string.
124 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530125 * @param attr attribute info
Bharat saraswal870c56f2016-02-20 21:57:16 +0530126 * @return getter string
127 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530128 public static String getGetterString(JavaAttributeInfo attr) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530129
Vinod Kumar S38046502016-03-23 15:30:27 +0530130 String returnType = getReturnType(attr);
Bharat saraswal2f11f652016-03-25 18:19:46 +0530131 String attributeName = getSmallCase(attr.getAttributeName());
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530132
Bharat saraswale2d51d62016-03-23 19:40:35 +0530133 return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr())
134 + getGetterForInterface(attributeName, returnType, attr.isListAttr());
Bharat saraswal870c56f2016-02-20 21:57:16 +0530135 }
136
137 /**
138 * Returns setter string.
139 *
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530140 * @param attr attribute info
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530141 * @param className java class name
Bharat saraswal870c56f2016-02-20 21:57:16 +0530142 * @return setter string
143 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530144 public static String getSetterString(JavaAttributeInfo attr, String className) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530145
Vinod Kumar S38046502016-03-23 15:30:27 +0530146 String attrType = getReturnType(attr);
Bharat saraswal2f11f652016-03-25 18:19:46 +0530147 String attributeName = getSmallCase(attr.getAttributeName());
Bharat saraswal870c56f2016-02-20 21:57:16 +0530148
Bharat saraswale2d51d62016-03-23 19:40:35 +0530149 return getJavaDoc(SETTER_METHOD, attributeName, attr.isListAttr())
Vinod Kumar S38046502016-03-23 15:30:27 +0530150 + getSetterForInterface(attributeName, attrType, className, attr.isListAttr());
Bharat saraswal870c56f2016-02-20 21:57:16 +0530151 }
152
153 /**
154 * Returns constructor method string.
155 *
156 * @param name class name
157 * @return constructor string
158 */
159 public static String getConstructorString(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530160 return getJavaDoc(CONSTRUCTOR, name, false);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530161 }
162
163 /**
164 * Returns default constructor method string.
165 *
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530166 * @param name class name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530167 * @param modifierType modifier type
Bharat saraswal870c56f2016-02-20 21:57:16 +0530168 * @return default constructor string
169 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530170 public static String getDefaultConstructorString(String name, String modifierType) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530171 return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false) + getDefaultConstructor(name, modifierType)
172 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530173 }
174
175 /**
176 * Returns check not null string.
177 *
178 * @param name attribute name
179 * @return check not null string
180 */
181 public static String getCheckNotNull(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530182 return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING + OPEN_PARENTHESIS + name + COMMA + SPACE + name
183 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530184 }
185
186 /**
187 * Returns build method string.
188 *
189 * @param name class name
190 * @return build string
191 */
192 public static String getBuildString(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530193 return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530194 }
195
196 /**
197 * Returns the getter method strings for class file.
198 *
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530199 * @param attr attribute info
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530200 * @return getter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530201 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530202 public static String getGetterForClass(JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530203
Vinod Kumar S38046502016-03-23 15:30:27 +0530204 String attrQuaifiedType = getReturnType(attr);
Bharat saraswal2f11f652016-03-25 18:19:46 +0530205 String attributeName = getSmallCase(attr.getAttributeName());
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530206
207 if (!attr.isListAttr()) {
208 return getGetter(attrQuaifiedType, attributeName);
209 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530210 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
211 return getGetter(listAttr, attributeName);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530212 }
213
214 /**
215 * Returns getter for attribute.
216 *
217 * @param type return type
218 * @param name attribute name
219 * @return getter for attribute
220 */
221 private static String getGetter(String type, String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530222 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCaptialCase(name)
223 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
224 + RETURN + SPACE + name + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530225 }
226
227 /**
228 * Returns the setter method strings for class file.
229 *
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530230 * @param attr attribute info
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530231 * @param className name of the class
232 * @return setter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530233 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530234 public static String getSetterForClass(JavaAttributeInfo attr, String className) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530235
Vinod Kumar S38046502016-03-23 15:30:27 +0530236 String attrQuaifiedType = getReturnType(attr);
Bharat saraswal2f11f652016-03-25 18:19:46 +0530237 String attributeName = getSmallCase(attr.getAttributeName());
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530238 if (!attr.isListAttr()) {
239 return getSetter(className, attributeName, attrQuaifiedType);
240 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530241 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
242 return getSetter(className, attributeName, listAttr);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530243 }
244
245 /**
246 * Returns setter for attribute.
247 *
248 * @param className class name
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530249 * @param name attribute name
250 * @param type return type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530251 * @return setter for attribute
252 */
253 private static String getSetter(String className, String name, String type) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530254 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE + SET_METHOD_PREFIX
255 + getCaptialCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
256 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE
257 + name + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + THIS + SEMI_COLAN
258 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530259 }
260
261 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530262 * Returns the setter method strings for class file.
263 *
264 * @param attr attribute info
265 * @return setter method for class
266 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530267 public static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530268
Vinod Kumar S38046502016-03-23 15:30:27 +0530269 String attrQuaifiedType = getReturnType(attr);
Bharat saraswal2f11f652016-03-25 18:19:46 +0530270 String attributeName = getSmallCase(attr.getAttributeName());
Bharat saraswale2d51d62016-03-23 19:40:35 +0530271 return getTypeDefSetter(attrQuaifiedType, attributeName);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530272 }
273
274 /**
275 * Returns type def's setter for attribute.
276 *
277 * @param type data type
278 * @param name attribute name
279 * @return setter for type def's attribute
280 */
281 private static String getTypeDefSetter(String type, String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530282 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX + getCaptialCase(name)
283 + OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
284 + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE
285 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530286 }
287
288 /**
289 * Returns override string.
290 *
291 * @return override string
292 */
293 public static String getOverRideString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530294 return NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530295 }
296
297 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530298 * Returns the getter method strings for interface file.
299 *
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530300 * @param yangName name of the attribute
Bharat saraswal870c56f2016-02-20 21:57:16 +0530301 * @param returnType return type of attribute
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530302 * @param isList is list attribute
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530303 * @return getter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530304 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530305 public static String getGetterForInterface(String yangName, String returnType, boolean isList) {
306
307 if (!isList) {
308 return getGetterInterfaceString(returnType, yangName);
309 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530310 String listAttr = getListString() + returnType + DIAMOND_CLOSE_BRACKET;
311 return getGetterInterfaceString(listAttr, yangName);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530312 }
313
314 /**
315 * Returns getter for attribute in interface.
316 *
317 * @param returnType return type
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530318 * @param yangName attribute name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530319 * @return getter for interface
320 */
321 private static String getGetterInterfaceString(String returnType, String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530322 return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCaptialCase(yangName)
323 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530324 }
325
326 /**
327 * Returns the setter method strings for interface file.
328 *
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530329 * @param attrName name of the attribute
330 * @param attrType return type of attribute
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530331 * @param className name of the java class being generated
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530332 * @param isList is list attribute
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530333 * @return setter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530334 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530335 public static String getSetterForInterface(String attrName, String attrType, String className, boolean isList) {
336
337 if (!isList) {
338 return getSetterInterfaceString(className, attrName, attrType);
339 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530340 String listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
341 return getSetterInterfaceString(className, attrName, listAttr);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530342 }
343
344 /**
345 * Returns setter string for interface.
346 *
347 * @param className class name
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530348 * @param attrName attribute name
349 * @param attrType attribute type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530350 * @return setter string
351 */
352 private static String getSetterInterfaceString(String className, String attrName, String attrType) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530353 return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + SET_METHOD_PREFIX + getCaptialCase(attrName)
354 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530355 }
356
357 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530358 * Returns list string.
359 *
360 * @return list string
361 */
362 private static String getListString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530363 return LIST + DIAMOND_OPEN_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530364 }
365
366 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530367 * Returns return type for attribute.
368 *
369 * @param attr attribute info
370 * @return return type
371 */
372 private static String getReturnType(JavaAttributeInfo attr) {
373
Bharat saraswale2d51d62016-03-23 19:40:35 +0530374 String returnType = EMPTY_STRING;
Vinod Kumar S38046502016-03-23 15:30:27 +0530375 if (attr.isQualifiedName() && (attr.getImportInfo().getPkgInfo() != null)) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530376 returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
Vinod Kumar S38046502016-03-23 15:30:27 +0530377 }
378 returnType = returnType + attr.getImportInfo().getClassInfo();
379 return returnType;
380 }
381
382 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530383 * Returns the build method strings for interface file.
384 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530385 * @param yangName name of the interface
386 * @return build method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530387 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530388 public static String getBuildForInterface(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530389 return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
390 + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530391 }
392
393 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530394 * Returns constructor string for impl class.
395 *
396 * @param yangName class name
397 * @return constructor string
398 */
399 public static String getConstructorStart(String yangName) {
400
Bharat saraswale2d51d62016-03-23 19:40:35 +0530401 String javadoc = getConstructorString(yangName);
402 String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + IMPL + OPEN_PARENTHESIS + yangName
403 + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
404 + NEW_LINE;
Vinod Kumar S38046502016-03-23 15:30:27 +0530405 return javadoc + constructor;
406 }
407
408 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530409 * Returns the constructor strings for class file.
410 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530411 * @param yangName name of the class
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530412 * @param attr attribute info
Bharat saraswal870c56f2016-02-20 21:57:16 +0530413 * @return constructor for class
414 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530415 public static String getConstructor(String yangName, JavaAttributeInfo attr) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530416
Bharat saraswal2f11f652016-03-25 18:19:46 +0530417 String attributeName = getSmallCase(attr.getAttributeName());
Bharat saraswale2d51d62016-03-23 19:40:35 +0530418
janani bde4ffab2016-04-15 16:18:30 +0530419 String constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD + getCamelCase(attributeName, null) + SPACE + EQUAL
Bharat saraswale2d51d62016-03-23 19:40:35 +0530420 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
janani bde4ffab2016-04-15 16:18:30 +0530421 + getCaptialCase(getCamelCase(attributeName, null)) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
Bharat saraswale2d51d62016-03-23 19:40:35 +0530422 + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530423
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530424 return constructor;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530425 }
426
427 /**
428 * Returns the build method strings for class file.
429 *
430 * @param yangName class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530431 * @return build method string for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530432 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530433 public static String getBuild(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530434 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
435 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE
436 + yangName + IMPL + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
437 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530438 }
439
440 /**
441 * Returns the Default constructor strings for class file.
442 *
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530443 * @param name name of the class
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530444 * @param modifierType modifier type for default constructor
Bharat saraswal870c56f2016-02-20 21:57:16 +0530445 * @return Default constructor for class
446 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530447 private static String getDefaultConstructor(String name, String modifierType) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530448 return FOUR_SPACE_INDENTATION + modifierType + SPACE + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
449 + OPEN_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530450 }
451
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530452 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530453 * Returns to string method's open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530454 *
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530455 * @return string method's open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530456 */
457 public static String getToStringMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530458 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STRING_DATA_TYPE + SPACE + TO
459 + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
460 + EIGHT_SPACE_INDENTATION + RETURN + GOOGLE_MORE_OBJECT_METHOD_STRING + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530461 }
462
463 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530464 * Returns omit null value string.
465 *
466 * @return omit null value string
467 */
468 public static String getOmitNullValueString() {
469 return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING + NEW_LINE;
470 }
471
472 /**
473 * Returns to string method's close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530474 *
475 * @return to string method close string
476 */
477 public static String getToStringMethodClose() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530478 return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
479 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530480 }
481
482 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530483 * Returns to string method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530484 *
485 * @param attr attribute info
486 * @return to string method
487 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530488 public static String getToStringMethod(JavaAttributeInfo attr) {
489
Bharat saraswal2f11f652016-03-25 18:19:46 +0530490 String attributeName = getSmallCase(attr.getAttributeName());
Bharat saraswale2d51d62016-03-23 19:40:35 +0530491 return TWELVE_SPACE_INDENTATION + PERIOD + ADD_STRING + OPEN_PARENTHESIS + QUOTES + attributeName + QUOTES
492 + COMMA + SPACE + attributeName + CLOSE_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530493 }
494
495 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530496 * Returns from string method's open string.
497 *
498 * @param className name of the class
499 * @return from string method's open string
500 */
501 public static String getFromStringMethodSignature(String className) {
502 return getJavaDoc(UNION_FROM_METHOD, className, false) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
503 + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS + STRING_DATA_TYPE + SPACE
504 + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
505 }
506
507 /**
508 * Return from string method's close string.
509 *
510 * @return from string method's close string
511 */
512 public static String getFromStringMethodClose() {
513 return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
514 CLOSE_CURLY_BRACKET + NEW_LINE;
515 }
516
517 /**
518 * Return from string method's body string.
519 *
520 * @param attr attribute info
521 * @param fromStringAttributeInfo attribute info for the from string
522 * wrapper type
523 * @return from string method's body string
524 */
525 public static String getFromStringMethod(JavaAttributeInfo attr,
526 JavaAttributeInfo fromStringAttributeInfo) {
527
528 return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
529 + getParsedSubString(attr, fromStringAttributeInfo) + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
530 + getReturnOfSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION + getCatchSubString()
531 + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
532 }
533
534 /**
535 * Returns sub string with try statement for union's from string method.
536 *
537 * @return sub string with try statement for union's from string method
538 */
539 public static String getTrySubString() {
540 return TRY + SPACE + OPEN_CURLY_BRACKET;
541 }
542
543 /**
544 * Returns sub string with return statement for union's from string method.
545 *
546 * @return sub string with return statement for union's from string method
547 */
548 public static String getReturnOfSubString() {
549 return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL + CLOSE_PARENTHESIS + SEMI_COLAN;
550 }
551
552 /**
553 * Returns sub string with catch statement for union's from string method.
554 *
555 * @return sub string with catch statement for union's from string method
556 */
557 public static String getCatchSubString() {
558 return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS + EXCEPTION + SPACE + EXCEPTION_VAR
559 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
560 }
561
562 /**
563 * Returns sub string with parsed statement for union's from string method.
564 *
565 * @param attr attribute info
566 * @return sub string with parsed statement for union's from string method
567 */
568 private static String getParsedSubString(JavaAttributeInfo attr,
569 JavaAttributeInfo fromStringAttributeInfo) {
570
571 String targetDataType = getReturnType(attr);
572 String parseFromStringMethod = getParseFromStringMethod(targetDataType,
573 fromStringAttributeInfo.getAttributeType());
574 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + parseFromStringMethod
575 + OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS;
576 }
577
578
579 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530580 * Returns hash code method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530581 *
Bharat saraswald9822e92016-04-05 15:13:44 +0530582 * @return hash code method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530583 */
584 public static String getHashCodeMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530585 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + INT + SPACE + HASH_CODE_STRING
586 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
587 + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530588 }
589
590 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530591 * Returns hash code methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530592 *
593 * @param hashcodeString hash code string
594 * @return to hash code method close string
595 */
596 public static String getHashCodeMethodClose(String hashcodeString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530597 hashcodeString = trimAtLast(hashcodeString, COMMA);
598 hashcodeString = trimAtLast(hashcodeString, SPACE);
599 return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
600 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530601 }
602
603 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530604 * Returns hash code method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530605 *
606 * @param attr attribute info
607 * @return hash code method
608 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530609 public static String getHashCodeMethod(JavaAttributeInfo attr) {
Bharat saraswal2f11f652016-03-25 18:19:46 +0530610 return getSmallCase(attr.getAttributeName()) + COMMA + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530611 }
612
613 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530614 * Returns equals method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530615 *
616 * @param className class name
Bharat saraswald9822e92016-04-05 15:13:44 +0530617 * @return equals method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530618 */
619 public static String getEqualsMethodOpen(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530620 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE + EQUALS_STRING
621 + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + OBJ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
622 + NEW_LINE + getEqualsMethodsCommonIfCondition() + getEqualsMethodsSpecificIfCondition(className);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530623 }
624
625 /**
626 * Returns equal methods if condition string.
627 *
628 * @return if condition string
629 */
630 private static String getEqualsMethodsCommonIfCondition() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530631 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + THIS + SPACE + EQUAL + EQUAL + SPACE + OBJ
632 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + SPACE
633 + TRUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530634 }
635
636 /**
637 * Returns if condition for specific class object in equals method.
638 *
639 * @param className class name
640 * @return if condition string
641 */
642 private static String getEqualsMethodsSpecificIfCondition(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530643 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + OBJ + INSTANCE_OF + className
644 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + className
645 + SPACE + OTHER + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS + className + CLOSE_PARENTHESIS + SPACE
646 + OBJ + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530647 }
648
649 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530650 * Returns equals methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530651 *
652 * @param equalMethodString equal method string
Bharat saraswald9822e92016-04-05 15:13:44 +0530653 * @return equals method close string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530654 */
655 public static String getEqualsMethodClose(String equalMethodString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530656 equalMethodString = trimAtLast(equalMethodString, AND);
657 equalMethodString = trimAtLast(equalMethodString, AND);
658 equalMethodString = trimAtLast(equalMethodString, SPACE);
659 equalMethodString = trimAtLast(equalMethodString, NEW_LINE) + SEMI_COLAN + NEW_LINE;
660 return equalMethodString + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
661 + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
662 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530663 }
664
665 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530666 * Returns equals method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530667 *
668 * @param attr attribute info
669 * @return equals method
670 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530671 public static String getEqualsMethod(JavaAttributeInfo attr) {
672
Bharat saraswal2f11f652016-03-25 18:19:46 +0530673 String attributeName = getSmallCase(attr.getAttributeName());
Bharat saraswale2d51d62016-03-23 19:40:35 +0530674 return SIXTEEN_SPACE_INDENTATION + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS
675 + attributeName + COMMA + SPACE + OTHER + PERIOD + attributeName + CLOSE_PARENTHESIS + SPACE + AND
676 + AND;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530677 }
678
679 /**
680 * Returns of method string for class.
681 *
682 * @param name class name
683 * @param attr attribute info
684 * @return of method string
685 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530686 public static String getOfMethod(String name, JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530687
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530688 String attrQualifiedType = getReturnType(attr);
689
Bharat saraswale2d51d62016-03-23 19:40:35 +0530690 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name + SPACE + OF + OPEN_PARENTHESIS
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530691 + attrQualifiedType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Bharat saraswale2d51d62016-03-23 19:40:35 +0530692 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name + OPEN_PARENTHESIS + VALUE
693 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530694 }
695
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530696 /**
697 * Returns implementation of add augmentation method of HasAugmentation class.
698 *
699 * @return implementation of add augmentation method of HasAugmentation class
700 */
701 public static String getAddAugmentInfoMethodImpl() {
702 String method = FOUR_SPACE_INDENTATION;
703 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + ADD_STRING
704 + AUGMENTATION + OPEN_PARENTHESIS + AUGMENTED_INFO + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
705 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST
706 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + ADD_STRING + OPEN_PARENTHESIS + VALUE
707 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
708
709 return method;
710 }
711
712 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530713 * Returns of method's string and java doc for special type.
714 *
715 * @param attr attribute info
716 * @param generatedJavaClassName class name
717 * @return of method's string and java doc for special type
718 */
719 public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName) {
720
721 String attrType = getReturnType(attr);
722 String attrName = getSmallCase(attr.getAttributeName());
723
724 return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " + attrName, false)
725 + getOfMethodString(attrType, generatedJavaClassName);
726 }
727
728 /**
729 * Returns of method's string.
730 *
731 * @param type data type
732 * @param className class name
733 * @return of method's string
734 */
735 private static String getOfMethodString(String type, String className) {
736
737 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + className + SPACE + OF + OPEN_PARENTHESIS
738 + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
739 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + className + OPEN_PARENTHESIS + VALUE
740 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
741 }
742
743 /**
744 * Returns string and java doc for constructor of type class.
745 *
746 * @param attr attribute info
747 * @param generatedJavaClassName class name
748 * @return string and java doc for constructor of type class
749 */
750 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName) {
751
752 String attrType = getReturnType(attr);
753 String attrName = getSmallCase(attr.getAttributeName());
754
755 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName, false)
756 + getTypeConstructorString(attrType, attrName, generatedJavaClassName);
757 }
758
759 /**
760 * Returns type constructor string.
761 *
762 * @param type data type
763 * @param name attribute name
764 * @param className class name
765 * @return type constructor string
766 */
767 private static String getTypeConstructorString(String type, String name, String className) {
768
769 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
770 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
771 + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
772 + CLOSE_CURLY_BRACKET;
773 }
774
775 /**
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530776 * Returns implementation of get augment info list method of HasAugmentation class.
777 *
778 * @return implementation of get augment info list method of HasAugmentation class
779 */
780 public static String getAugmentInfoListImpl() {
781
782 String method = FOUR_SPACE_INDENTATION;
783 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + LIST + DIAMOND_OPEN_BRACKET
784 + AUGMENTED_INFO + DIAMOND_CLOSE_BRACKET + SPACE + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST
785 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
786 + RETURN + SPACE + getSmallCase(AUGMENTED_INFO) + LIST + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
787 + CLOSE_CURLY_BRACKET;
788 return method;
789 }
790
791 /**
792 * Returns implementation of remove augmentation method of HasAugmentation class.
793 *
794 * @return implementation of remove augmentation method of HasAugmentation class
795 */
796 public static String getRemoveAugmentationImpl() {
797 String method = FOUR_SPACE_INDENTATION;
798 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + "remove"
799 + AUGMENTATION + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
800 + EIGHT_SPACE_INDENTATION + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST + OPEN_PARENTHESIS
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530801 + CLOSE_PARENTHESIS + PERIOD + CLEAR + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530802 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
803 return method;
804 }
805
Bharat saraswal870c56f2016-02-20 21:57:16 +0530806}