blob: 716580ebe53e9bff20a039c08f068088c9176ff4 [file] [log] [blame]
Bharat saraswal870c56f2016-02-20 21:57:16 +05301/*
2 * Copyright 2016 Open Networking Laboratory
3 *
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 saraswal870c56f2016-02-20 21:57:16 +053020import org.onosproject.yangutils.utils.UtilConstants;
21import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +053022import org.onosproject.yangutils.utils.io.impl.YangIoUtils;
Bharat saraswal870c56f2016-02-20 21:57:16 +053023
24/**
25 * Generated methods for generated files based on the file type.
26 */
27public final class MethodsGenerator {
28
Bharat saraswal870c56f2016-02-20 21:57:16 +053029 /**
30 * Default constructor.
31 */
32 private MethodsGenerator() {
33 }
34
35 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +053036 * Returns the methods strings for builder interface.
37 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +053038 * @param name attribute name
39 * @return method string for builder interface
Bharat saraswal870c56f2016-02-20 21:57:16 +053040 */
41 public static String parseBuilderInterfaceBuildMethodString(String name) {
42
Vinod Kumar S38046502016-03-23 15:30:27 +053043 return JavaDocGen.getJavaDoc(JavaDocGen.JavaDocType.BUILD, name, false) + getBuildForInterface(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +053044 }
45
46 /**
47 * Returns getter string.
48 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +053049 * @param attr attribute info
Bharat saraswal870c56f2016-02-20 21:57:16 +053050 * @return getter string
51 */
Vinod Kumar S38046502016-03-23 15:30:27 +053052 public static String getGetterString(JavaAttributeInfo attr) {
Bharat saraswal870c56f2016-02-20 21:57:16 +053053
Vinod Kumar S38046502016-03-23 15:30:27 +053054 String returnType = getReturnType(attr);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +053055 String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
Vinod Kumar Sc4216002016-03-03 19:55:30 +053056
Vinod Kumar S38046502016-03-23 15:30:27 +053057 return JavaDocGen.getJavaDoc(JavaDocGen.JavaDocType.GETTER, attributeName, attr.isListAttr()) +
58 getGetterForInterface(attributeName, returnType, attr.isListAttr());
Bharat saraswal870c56f2016-02-20 21:57:16 +053059 }
60
61 /**
62 * Returns setter string.
63 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +053064 * @param attr attribute info
65 * @param className java class name
Bharat saraswal870c56f2016-02-20 21:57:16 +053066 * @return setter string
67 */
Vinod Kumar S38046502016-03-23 15:30:27 +053068 public static String getSetterString(JavaAttributeInfo attr, String className) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +053069
Vinod Kumar S38046502016-03-23 15:30:27 +053070 String attrType = getReturnType(attr);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +053071 String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
Bharat saraswal870c56f2016-02-20 21:57:16 +053072
Vinod Kumar S38046502016-03-23 15:30:27 +053073 return JavaDocGen.getJavaDoc(JavaDocGen.JavaDocType.SETTER, attributeName, attr.isListAttr())
74 + getSetterForInterface(attributeName, attrType, className, attr.isListAttr());
Bharat saraswal870c56f2016-02-20 21:57:16 +053075 }
76
77 /**
78 * Returns constructor method string.
79 *
80 * @param name class name
81 * @return constructor string
82 */
83 public static String getConstructorString(String name) {
84
Bharat saraswal2f00b4b2016-03-04 20:08:09 +053085 return JavaDocGen.getJavaDoc(JavaDocGen.JavaDocType.CONSTRUCTOR, name, false);
Bharat saraswal870c56f2016-02-20 21:57:16 +053086 }
87
88 /**
89 * Returns default constructor method string.
90 *
Bharat saraswal870c56f2016-02-20 21:57:16 +053091 * @param name class name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +053092 * @param modifierType modifier type
Bharat saraswal870c56f2016-02-20 21:57:16 +053093 * @return default constructor string
94 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +053095 public static String getDefaultConstructorString(String name, String modifierType) {
Bharat saraswal870c56f2016-02-20 21:57:16 +053096
Bharat saraswal2f00b4b2016-03-04 20:08:09 +053097 return JavaDocGen.getJavaDoc(JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR, name, false)
98 + getDefaultConstructor(name, modifierType);
99 }
100
101 /**
102 * Returns default constructor method string.
103 *
104 * @param attr attribute info
105 * @param className class name
106 * @return default constructor string
107 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530108 public static String getTypeDefConstructor(JavaAttributeInfo attr, String className) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530109
Vinod Kumar S38046502016-03-23 15:30:27 +0530110 String attrQuaifiedType = getReturnType(attr);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530111 String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
112
113 if (!attr.isListAttr()) {
114 return getTypeDefConstructorString(attrQuaifiedType, attributeName, className);
115 }
116 String listAttr = getListString() + attrQuaifiedType + UtilConstants.DIAMOND_CLOSE_BRACKET;
117 return getTypeDefConstructorString(listAttr, attributeName, className);
118 }
119
120 /**
121 * Returns type def's constructor for attribute.
122 *
123 * @param type data type
124 * @param name attribute name
125 * @param className class name
126 * @return setter for type def's attribute
127 */
128 private static String getTypeDefConstructorString(String type, String name, String className) {
129
130 return UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.PUBLIC + UtilConstants.SPACE
Vinod Kumar S38046502016-03-23 15:30:27 +0530131 + className + UtilConstants.OPEN_PARENTHESIS + type + UtilConstants.SPACE + UtilConstants.VALUE
132 + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET
133 + UtilConstants.NEW_LINE + UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.THIS
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530134 + UtilConstants.PERIOD + name + UtilConstants.SPACE + UtilConstants.EQUAL + UtilConstants.SPACE
Vinod Kumar S38046502016-03-23 15:30:27 +0530135 + UtilConstants.VALUE + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE
136 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.CLOSE_CURLY_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530137 }
138
139 /**
140 * Returns check not null string.
141 *
142 * @param name attribute name
143 * @return check not null string
144 */
145 public static String getCheckNotNull(String name) {
Vinod Kumar S38046502016-03-23 15:30:27 +0530146
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530147 return UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.CHECK_NOT_NULL_STRING
148 + UtilConstants.OPEN_PARENTHESIS + name + UtilConstants.COMMA + UtilConstants.SPACE + name
149 + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530150 }
151
152 /**
153 * Returns build method string.
154 *
155 * @param name class name
156 * @return build string
157 */
158 public static String getBuildString(String name) {
159
160 return UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.OVERRIDE + UtilConstants.NEW_LINE
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530161 + getBuild(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530162 }
163
164 /**
165 * Returns the getter method strings for class file.
166 *
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530167 * @param attr attribute info
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530168 * @return getter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530169 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530170 public static String getGetterForClass(JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530171
Vinod Kumar S38046502016-03-23 15:30:27 +0530172 String attrQuaifiedType = getReturnType(attr);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530173 String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
174
175 if (!attr.isListAttr()) {
176 return getGetter(attrQuaifiedType, attributeName);
177 }
178 String listAttr = getListString() + attrQuaifiedType + UtilConstants.DIAMOND_CLOSE_BRACKET;
Vinod Kumar S38046502016-03-23 15:30:27 +0530179 return getGetter(listAttr, attributeName + UtilConstants.SUFIX_S);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530180 }
181
182 /**
183 * Returns getter for attribute.
184 *
185 * @param type return type
186 * @param name attribute name
187 * @return getter for attribute
188 */
189 private static String getGetter(String type, String name) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530190
191 return UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.PUBLIC + UtilConstants.SPACE
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530192 + type + UtilConstants.SPACE + UtilConstants.GET_METHOD_PREFIX
193 + JavaIdentifierSyntax.getCaptialCase(name) + UtilConstants.OPEN_PARENTHESIS
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530194 + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET
195 + UtilConstants.NEW_LINE + UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.RETURN
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530196 + UtilConstants.SPACE + name + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530197 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530198 }
199
200 /**
201 * Returns the setter method strings for class file.
202 *
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530203 * @param attr attribute info
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530204 * @param className name of the class
205 * @return setter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530206 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530207 public static String getSetterForClass(JavaAttributeInfo attr, String className) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530208
Vinod Kumar S38046502016-03-23 15:30:27 +0530209 String attrQuaifiedType = getReturnType(attr);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530210 String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
211 if (!attr.isListAttr()) {
212 return getSetter(className, attributeName, attrQuaifiedType);
213 }
214 String listAttr = getListString() + attrQuaifiedType + UtilConstants.DIAMOND_CLOSE_BRACKET;
Vinod Kumar S38046502016-03-23 15:30:27 +0530215 return getSetter(className, attributeName + UtilConstants.SUFIX_S, listAttr);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530216 }
217
218 /**
219 * Returns setter for attribute.
220 *
221 * @param className class name
222 * @param name attribute name
223 * @param type return type
224 * @return setter for attribute
225 */
226 private static String getSetter(String className, String name, String type) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530227
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530228 return UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.PUBLIC + UtilConstants.SPACE
229 + className + UtilConstants.BUILDER + UtilConstants.SPACE + UtilConstants.SET_METHOD_PREFIX
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530230 + JavaIdentifierSyntax.getCaptialCase(name) + UtilConstants.OPEN_PARENTHESIS
231 + type + UtilConstants.SPACE + name + UtilConstants.CLOSE_PARENTHESIS
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530232 + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET + UtilConstants.NEW_LINE
233 + UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.THIS + UtilConstants.PERIOD
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530234 + name + UtilConstants.SPACE + UtilConstants.EQUAL + UtilConstants.SPACE
235 + name + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE + UtilConstants.EIGHT_SPACE_INDENTATION
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530236 + UtilConstants.RETURN + UtilConstants.SPACE + UtilConstants.THIS + UtilConstants.SEMI_COLAN
237 + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530238 }
239
240 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530241 * Returns the setter method strings for class file.
242 *
243 * @param attr attribute info
244 * @return setter method for class
245 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530246 public static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530247
Vinod Kumar S38046502016-03-23 15:30:27 +0530248 String attrQuaifiedType = getReturnType(attr);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530249 String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
250
251 if (!attr.isListAttr()) {
252 return getTypeDefSetter(attrQuaifiedType, attributeName);
253 }
254 String listAttr = getListString() + attrQuaifiedType + UtilConstants.DIAMOND_CLOSE_BRACKET;
Vinod Kumar S38046502016-03-23 15:30:27 +0530255 return getTypeDefSetter(listAttr, attributeName + UtilConstants.SUFIX_S);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530256 }
257
258 /**
259 * Returns type def's setter for attribute.
260 *
261 * @param type data type
262 * @param name attribute name
263 * @return setter for type def's attribute
264 */
265 private static String getTypeDefSetter(String type, String name) {
266
267 return UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.PUBLIC + UtilConstants.SPACE
268 + UtilConstants.VOID + UtilConstants.SPACE + UtilConstants.SET_METHOD_PREFIX
269 + JavaIdentifierSyntax.getCaptialCase(name) + UtilConstants.OPEN_PARENTHESIS
Vinod Kumar S38046502016-03-23 15:30:27 +0530270 + type + UtilConstants.SPACE + UtilConstants.VALUE + UtilConstants.CLOSE_PARENTHESIS
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530271 + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET + UtilConstants.NEW_LINE
272 + UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.THIS + UtilConstants.PERIOD
273 + name + UtilConstants.SPACE + UtilConstants.EQUAL + UtilConstants.SPACE
Vinod Kumar S38046502016-03-23 15:30:27 +0530274 + UtilConstants.VALUE + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE
275 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.CLOSE_CURLY_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530276 }
277
278 /**
279 * Returns override string.
280 *
281 * @return override string
282 */
283 public static String getOverRideString() {
Vinod Kumar S38046502016-03-23 15:30:27 +0530284
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530285 return UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
286 + UtilConstants.OVERRIDE + UtilConstants.NEW_LINE;
287 }
288
289 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530290 * Returns the getter method strings for interface file.
291 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530292 * @param yangName name of the attribute
Bharat saraswal870c56f2016-02-20 21:57:16 +0530293 * @param returnType return type of attribute
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530294 * @param isList is list attribute
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530295 * @return getter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530296 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530297 public static String getGetterForInterface(String yangName, String returnType, boolean isList) {
298
299 if (!isList) {
300 return getGetterInterfaceString(returnType, yangName);
301 }
302 String listAttr = getListString() + returnType + UtilConstants.DIAMOND_CLOSE_BRACKET;
Vinod Kumar S38046502016-03-23 15:30:27 +0530303 return getGetterInterfaceString(listAttr, yangName + UtilConstants.SUFIX_S);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530304 }
305
306 /**
307 * Returns getter for attribute in interface.
308 *
309 * @param returnType return type
310 * @param yangName attribute name
311 * @return getter for interface
312 */
313 private static String getGetterInterfaceString(String returnType, String yangName) {
314
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530315 return UtilConstants.FOUR_SPACE_INDENTATION + returnType
316 + UtilConstants.SPACE + UtilConstants.GET_METHOD_PREFIX
317 + JavaIdentifierSyntax.getCaptialCase(yangName)
318 + UtilConstants.OPEN_PARENTHESIS + UtilConstants.CLOSE_PARENTHESIS
319 + UtilConstants.SEMI_COLAN;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530320
Bharat saraswal870c56f2016-02-20 21:57:16 +0530321 }
322
323 /**
324 * Returns the setter method strings for interface file.
325 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530326 * @param attrName name of the attribute
327 * @param attrType return type of attribute
328 * @param className name of the java class being generated
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530329 * @param isList is list attribute
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530330 * @return setter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530331 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530332 public static String getSetterForInterface(String attrName, String attrType, String className, boolean isList) {
333
334 if (!isList) {
335 return getSetterInterfaceString(className, attrName, attrType);
336 }
337 String listAttr = getListString() + attrType + UtilConstants.DIAMOND_CLOSE_BRACKET;
Vinod Kumar S38046502016-03-23 15:30:27 +0530338 return getSetterInterfaceString(className, attrName + UtilConstants.SUFIX_S, listAttr);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530339 }
340
341 /**
342 * Returns setter string for interface.
343 *
344 * @param className class name
345 * @param attrName attribute name
346 * @param attrType attribute type
347 * @return setter string
348 */
349 private static String getSetterInterfaceString(String className, String attrName, String attrType) {
350
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530351 return UtilConstants.FOUR_SPACE_INDENTATION + className + UtilConstants.BUILDER
352 + UtilConstants.SPACE + UtilConstants.SET_METHOD_PREFIX
353 + JavaIdentifierSyntax.getCaptialCase(attrName) + UtilConstants.OPEN_PARENTHESIS
354 + attrType + UtilConstants.SPACE + attrName + UtilConstants.CLOSE_PARENTHESIS
355 + UtilConstants.SEMI_COLAN;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530356 }
357
358 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530359 * Returns list string.
360 *
361 * @return list string
362 */
363 private static String getListString() {
Vinod Kumar S38046502016-03-23 15:30:27 +0530364
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530365 return UtilConstants.LIST + UtilConstants.DIAMOND_OPEN_BRACKET;
366 }
367
368 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530369 * Returns return type for attribute.
370 *
371 * @param attr attribute info
372 * @return return type
373 */
374 private static String getReturnType(JavaAttributeInfo attr) {
375
376 String returnType = UtilConstants.EMPTY_STRING;
377 if (attr.isQualifiedName() && (attr.getImportInfo().getPkgInfo() != null)) {
378 returnType = attr.getImportInfo().getPkgInfo() + UtilConstants.PERIOD;
379 }
380 returnType = returnType + attr.getImportInfo().getClassInfo();
381 return returnType;
382 }
383
384 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530385 * Returns the build method strings for interface file.
386 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530387 * @param yangName name of the interface
388 * @return build method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530389 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530390 public static String getBuildForInterface(String yangName) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530391
392 return UtilConstants.FOUR_SPACE_INDENTATION + yangName + UtilConstants.SPACE + UtilConstants.BUILD
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530393 + UtilConstants.OPEN_PARENTHESIS + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SEMI_COLAN
394 + UtilConstants.NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530395 }
396
397 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530398 * Returns constructor string for impl class.
399 *
400 * @param yangName class name
401 * @return constructor string
402 */
403 public static String getConstructorStart(String yangName) {
404
405 String javadoc = MethodsGenerator.getConstructorString(yangName);
406 String constructor = UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.PUBLIC + UtilConstants.SPACE
407 + yangName + UtilConstants.IMPL + UtilConstants.OPEN_PARENTHESIS + yangName + UtilConstants.BUILDER
408 + UtilConstants.SPACE + UtilConstants.BUILDER.toLowerCase() + UtilConstants.OBJECT
409 + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET
410 + UtilConstants.NEW_LINE;
411 return javadoc + constructor;
412 }
413
414 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530415 * Returns the constructor strings for class file.
416 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530417 * @param yangName name of the class
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530418 * @param attr attribute info
Bharat saraswal870c56f2016-02-20 21:57:16 +0530419 * @return constructor for class
420 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530421 public static String getConstructor(String yangName, JavaAttributeInfo attr) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530422
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530423 String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
Vinod Kumar S38046502016-03-23 15:30:27 +0530424 if (attr.isListAttr()) {
425 attributeName = attributeName + UtilConstants.SUFIX_S;
426 }
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530427 String constructor = UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.THIS
428 + UtilConstants.PERIOD + JavaIdentifierSyntax.getCamelCase(attributeName)
Vinod Kumar S38046502016-03-23 15:30:27 +0530429 + UtilConstants.SPACE + UtilConstants.EQUAL + UtilConstants.SPACE + UtilConstants.BUILDER.toLowerCase()
430 + UtilConstants.OBJECT + UtilConstants.PERIOD + UtilConstants.GET_METHOD_PREFIX
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530431 + JavaIdentifierSyntax.getCaptialCase(JavaIdentifierSyntax.getCamelCase(attributeName))
432 + UtilConstants.OPEN_PARENTHESIS + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SEMI_COLAN
433 + UtilConstants.NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530434
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530435 return constructor;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530436 }
437
438 /**
439 * Returns the build method strings for class file.
440 *
441 * @param yangName class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530442 * @return build method string for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530443 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530444 public static String getBuild(String yangName) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530445
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530446 return UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.PUBLIC + UtilConstants.SPACE
447 + yangName + UtilConstants.SPACE + UtilConstants.BUILD + UtilConstants.OPEN_PARENTHESIS
Bharat saraswal870c56f2016-02-20 21:57:16 +0530448 + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET
449 + UtilConstants.NEW_LINE + UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.RETURN
450 + UtilConstants.SPACE + UtilConstants.NEW + UtilConstants.SPACE + yangName + UtilConstants.IMPL
451 + UtilConstants.OPEN_PARENTHESIS + UtilConstants.THIS + UtilConstants.CLOSE_PARENTHESIS
452 + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
453 + UtilConstants.CLOSE_CURLY_BRACKET;
454 }
455
456 /**
457 * Returns the Default constructor strings for class file.
458 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530459 * @param name name of the class
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530460 * @param modifierType modifier type for default constructor
Bharat saraswal870c56f2016-02-20 21:57:16 +0530461 * @return Default constructor for class
462 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530463 private static String getDefaultConstructor(String name, String modifierType) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530464
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530465 return UtilConstants.FOUR_SPACE_INDENTATION + modifierType + UtilConstants.SPACE + name
Bharat saraswal870c56f2016-02-20 21:57:16 +0530466 + UtilConstants.OPEN_PARENTHESIS + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SPACE
467 + UtilConstants.OPEN_CURLY_BRACKET + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
Vinod Kumar S38046502016-03-23 15:30:27 +0530468 + UtilConstants.CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530469 }
470
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530471 /**
472 * Returns to string method open strings.
473 *
474 * @return to string method open string
475 */
476 public static String getToStringMethodOpen() {
477
478 return getOverRideString() + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.PUBLIC + UtilConstants.SPACE
Vinod Kumar S38046502016-03-23 15:30:27 +0530479 + UtilConstants.STRING + UtilConstants.SPACE + UtilConstants.TO + UtilConstants.STRING
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530480 + UtilConstants.OPEN_PARENTHESIS + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SPACE
481 + UtilConstants.OPEN_CURLY_BRACKET + UtilConstants.NEW_LINE + UtilConstants.EIGHT_SPACE_INDENTATION
Vinod Kumar S38046502016-03-23 15:30:27 +0530482 + UtilConstants.RETURN + UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING + UtilConstants.NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530483 }
484
485 /**
486 * Returns to string methods close string.
487 *
488 * @return to string method close string
489 */
490 public static String getToStringMethodClose() {
Vinod Kumar S38046502016-03-23 15:30:27 +0530491
492 return UtilConstants.TWELVE_SPACE_INDENTATION + UtilConstants.PERIOD + UtilConstants.TO + UtilConstants.STRING
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530493 + UtilConstants.OPEN_PARENTHESIS + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SEMI_COLAN
494 + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
Vinod Kumar S38046502016-03-23 15:30:27 +0530495 + UtilConstants.CLOSE_CURLY_BRACKET + UtilConstants.NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530496 }
497
498 /**
499 * To string method for class.
500 *
501 * @param attr attribute info
502 * @return to string method
503 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530504 public static String getToStringMethod(JavaAttributeInfo attr) {
505
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530506 String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
Vinod Kumar S38046502016-03-23 15:30:27 +0530507 if (attr.isListAttr()) {
508 attributeName = attributeName + UtilConstants.SUFIX_S;
509 }
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530510 return UtilConstants.TWELVE_SPACE_INDENTATION + UtilConstants.PERIOD + UtilConstants.ADD_STRING
511 + UtilConstants.OPEN_PARENTHESIS + UtilConstants.QUOTES
512 + attributeName + UtilConstants.QUOTES + UtilConstants.COMMA + UtilConstants.SPACE + attributeName
513 + UtilConstants.CLOSE_PARENTHESIS;
514
515 }
516
517 /**
518 * Returns to hash code method open strings.
519 *
520 * @return to hash code method open string
521 */
522 public static String getHashCodeMethodOpen() {
523
524 return getOverRideString() + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.PUBLIC + UtilConstants.SPACE
525 + UtilConstants.INT + UtilConstants.SPACE + UtilConstants.HASH_CODE_STRING
526 + UtilConstants.OPEN_PARENTHESIS + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SPACE
527 + UtilConstants.OPEN_CURLY_BRACKET + UtilConstants.NEW_LINE + UtilConstants.EIGHT_SPACE_INDENTATION
Vinod Kumar S38046502016-03-23 15:30:27 +0530528 + UtilConstants.RETURN + UtilConstants.SPACE + UtilConstants.OBJECT_STRING + UtilConstants.SUFIX_S
529 + UtilConstants.PERIOD + UtilConstants.HASH + UtilConstants.OPEN_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530530 }
531
532 /**
533 * Returns to hash code methods close string.
534 *
535 * @param hashcodeString hash code string
536 * @return to hash code method close string
537 */
538 public static String getHashCodeMethodClose(String hashcodeString) {
Vinod Kumar S38046502016-03-23 15:30:27 +0530539
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530540 hashcodeString = YangIoUtils.trimAtLast(hashcodeString, UtilConstants.COMMA);
541 hashcodeString = YangIoUtils.trimAtLast(hashcodeString, UtilConstants.SPACE);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530542 return hashcodeString + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE
Vinod Kumar S38046502016-03-23 15:30:27 +0530543 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.CLOSE_CURLY_BRACKET + UtilConstants.NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530544 }
545
546 /**
547 * Hash code method for class.
548 *
549 * @param attr attribute info
550 * @return hash code method
551 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530552 public static String getHashCodeMethod(JavaAttributeInfo attr) {
553
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530554 String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
Vinod Kumar S38046502016-03-23 15:30:27 +0530555 if (attr.isListAttr()) {
556 attributeName = attributeName + UtilConstants.SUFIX_S;
557 }
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530558 return attributeName
559 + UtilConstants.COMMA + UtilConstants.SPACE;
560
561 }
562
563 /**
564 * Returns to equals method open strings.
565 *
566 * @param className class name
567 * @return to equals method open string
568 */
569 public static String getEqualsMethodOpen(String className) {
570
571 return getOverRideString() + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.PUBLIC + UtilConstants.SPACE
572 + UtilConstants.BOOLEAN + UtilConstants.SPACE + UtilConstants.EQUALS_STRING
Vinod Kumar S38046502016-03-23 15:30:27 +0530573 + UtilConstants.OPEN_PARENTHESIS + UtilConstants.OBJECT_STRING + UtilConstants.SPACE + UtilConstants.OBJ
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530574 + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET
575 + UtilConstants.NEW_LINE + getEqualsMethodsCommonIfCondition()
576 + getEqualsMethodsSpecificIfCondition(className);
577 }
578
579 /**
580 * Returns equal methods if condition string.
581 *
582 * @return if condition string
583 */
584 private static String getEqualsMethodsCommonIfCondition() {
Vinod Kumar S38046502016-03-23 15:30:27 +0530585
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530586 return UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.IF + UtilConstants.SPACE
Vinod Kumar S38046502016-03-23 15:30:27 +0530587 + UtilConstants.OPEN_PARENTHESIS + UtilConstants.THIS + UtilConstants.SPACE + UtilConstants.EQUAL
588 + UtilConstants.EQUAL + UtilConstants.SPACE + UtilConstants.OBJ + UtilConstants.CLOSE_PARENTHESIS
589 + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET + UtilConstants.NEW_LINE
590 + UtilConstants.TWELVE_SPACE_INDENTATION + UtilConstants.RETURN + UtilConstants.SPACE
591 + UtilConstants.TRUE + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530592 + UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.CLOSE_CURLY_BRACKET + UtilConstants.NEW_LINE;
593 }
594
595 /**
596 * Returns if condition for specific class object in equals method.
597 *
598 * @param className class name
599 * @return if condition string
600 */
601 private static String getEqualsMethodsSpecificIfCondition(String className) {
Vinod Kumar S38046502016-03-23 15:30:27 +0530602
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530603 return UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.IF + UtilConstants.SPACE
Vinod Kumar S38046502016-03-23 15:30:27 +0530604 + UtilConstants.OPEN_PARENTHESIS + UtilConstants.OBJ + UtilConstants.INSTANCE_OF + className
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530605 + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET
606 + UtilConstants.NEW_LINE + UtilConstants.TWELVE_SPACE_INDENTATION + className + UtilConstants.SPACE
Vinod Kumar S38046502016-03-23 15:30:27 +0530607 + UtilConstants.OTHER + UtilConstants.SPACE + UtilConstants.EQUAL + UtilConstants.SPACE
608 + UtilConstants.OPEN_PARENTHESIS + className + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SPACE
609 + UtilConstants.OBJ + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE
610 + UtilConstants.TWELVE_SPACE_INDENTATION + UtilConstants.RETURN + UtilConstants.NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530611 }
612
613 /**
614 * Returns to equals methods close string.
615 *
616 * @param equalMethodString equal method string
617 * @return to equals method close string
618 */
619 public static String getEqualsMethodClose(String equalMethodString) {
Vinod Kumar S38046502016-03-23 15:30:27 +0530620
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530621 equalMethodString = YangIoUtils.trimAtLast(equalMethodString, UtilConstants.AND);
622 equalMethodString = YangIoUtils.trimAtLast(equalMethodString, UtilConstants.AND);
623 equalMethodString = YangIoUtils.trimAtLast(equalMethodString, UtilConstants.SPACE);
624 equalMethodString = YangIoUtils.trimAtLast(equalMethodString, UtilConstants.NEW_LINE) + UtilConstants.SEMI_COLAN
625 + UtilConstants.NEW_LINE;
626 return equalMethodString + UtilConstants.EIGHT_SPACE_INDENTATION
627 + UtilConstants.CLOSE_CURLY_BRACKET + UtilConstants.NEW_LINE
628 + UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.RETURN + UtilConstants.SPACE
629 + UtilConstants.FALSE + UtilConstants.SEMI_COLAN
630 + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
Vinod Kumar S38046502016-03-23 15:30:27 +0530631 + UtilConstants.CLOSE_CURLY_BRACKET + UtilConstants.NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530632 }
633
634 /**
635 * Equals method for class.
636 *
637 * @param attr attribute info
638 * @return equals method
639 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530640 public static String getEqualsMethod(JavaAttributeInfo attr) {
641
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530642 String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
Vinod Kumar S38046502016-03-23 15:30:27 +0530643 if (attr.isListAttr()) {
644 attributeName = attributeName + UtilConstants.SUFIX_S;
645 }
646 return UtilConstants.SIXTEEN_SPACE_INDENTATION + UtilConstants.SPACE + UtilConstants.OBJECT_STRING
647 + UtilConstants.SUFIX_S + UtilConstants.PERIOD + UtilConstants.EQUALS_STRING
648 + UtilConstants.OPEN_PARENTHESIS + attributeName + UtilConstants.COMMA + UtilConstants.SPACE
649 + UtilConstants.OTHER + UtilConstants.PERIOD + attributeName + UtilConstants.CLOSE_PARENTHESIS
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530650 + UtilConstants.SPACE + UtilConstants.AND + UtilConstants.AND;
651
652 }
653
654 /**
655 * Returns of method string for class.
656 *
657 * @param name class name
658 * @param attr attribute info
659 * @return of method string
660 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530661 public static String getOfMethod(String name, JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530662
Vinod Kumar S38046502016-03-23 15:30:27 +0530663 String attrQuaifiedType = getReturnType(attr);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530664
665 return UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.PUBLIC + UtilConstants.SPACE + UtilConstants.STATIC
666 + UtilConstants.SPACE + name + UtilConstants.SPACE + UtilConstants.OF + UtilConstants.OPEN_PARENTHESIS
667 + attrQuaifiedType + UtilConstants.SPACE + UtilConstants.VALUE + UtilConstants.CLOSE_PARENTHESIS
668 + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET + UtilConstants.NEW_LINE
669 + UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.RETURN + UtilConstants.SPACE + UtilConstants.NEW
670 + UtilConstants.SPACE + name + UtilConstants.OPEN_PARENTHESIS + UtilConstants.VALUE
671 + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE
672 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.CLOSE_CURLY_BRACKET + UtilConstants.NEW_LINE;
673 }
674
Bharat saraswal870c56f2016-02-20 21:57:16 +0530675}