blob: f680b506fc69b7f2d51a81662a3ed33ed7af6b4c [file] [log] [blame]
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301/*
2 * Copyright 2016-present 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
19import org.onosproject.yangutils.datamodel.YangCompilerAnnotation;
20import org.onosproject.yangutils.datamodel.YangType;
21import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
22import org.onosproject.yangutils.translator.exception.TranslatorException;
23
janani bc27947a2016-10-19 01:17:40 +053024import java.util.Arrays;
25import java.util.HashSet;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053026import java.util.Map;
janani bc27947a2016-10-19 01:17:40 +053027import java.util.Set;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053028
janani bc27947a2016-10-19 01:17:40 +053029import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BOOLEAN;
30import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DECIMAL64;
31import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.EMPTY;
32import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT16;
33import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT32;
34import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT64;
35import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT8;
36import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT16;
37import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT32;
38import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT64;
39import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT8;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053040import static org.onosproject.yangutils.translator.tojava.utils.BracketType.OPEN_CLOSE_BRACKET;
41import static org.onosproject.yangutils.translator.tojava.utils.BracketType.OPEN_CLOSE_BRACKET_WITH_VALUE;
42import static org.onosproject.yangutils.translator.tojava.utils.BracketType.OPEN_CLOSE_BRACKET_WITH_VALUE_AND_RETURN_TYPE;
43import static org.onosproject.yangutils.translator.tojava.utils.MethodClassTypes.CLASS_TYPE;
44import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getIfConditionForAddToListMethod;
45import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
46import static org.onosproject.yangutils.utils.UtilConstants.AND;
Bharat saraswal54e4bab2016-10-05 23:32:14 +053047import static org.onosproject.yangutils.utils.UtilConstants.APPEND;
Bharat saraswal0663aff2016-10-18 23:16:14 +053048import static org.onosproject.yangutils.utils.UtilConstants.APP_INSTANCE;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053049import static org.onosproject.yangutils.utils.UtilConstants.AT;
50import static org.onosproject.yangutils.utils.UtilConstants.BIG_DECIMAL;
51import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
Bharat saraswal54e4bab2016-10-05 23:32:14 +053052import static org.onosproject.yangutils.utils.UtilConstants.BITSET;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053053import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
54import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
55import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
56import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_LOWER_CASE;
57import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
58import static org.onosproject.yangutils.utils.UtilConstants.BYTE_WRAPPER;
59import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
60import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
61import static org.onosproject.yangutils.utils.UtilConstants.CLASS;
62import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
63import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
64import static org.onosproject.yangutils.utils.UtilConstants.COLON;
65import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
66import static org.onosproject.yangutils.utils.UtilConstants.COMPARE_TO;
67import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT_CAPS;
68import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
69import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
70import static org.onosproject.yangutils.utils.UtilConstants.DOUBLE;
71import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
72import static org.onosproject.yangutils.utils.UtilConstants.ELSE;
73import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
74import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
Bharat saraswal0663aff2016-10-18 23:16:14 +053075import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053076import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
77import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
78import static org.onosproject.yangutils.utils.UtilConstants.EXTEND;
79import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
80import static org.onosproject.yangutils.utils.UtilConstants.FOR;
81import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
82import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
83import static org.onosproject.yangutils.utils.UtilConstants.GET;
Bharat saraswal94844d62016-10-13 13:28:03 +053084import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STATIC_STRING;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053085import static org.onosproject.yangutils.utils.UtilConstants.IF;
86import static org.onosproject.yangutils.utils.UtilConstants.IMPLEMENTS;
87import static org.onosproject.yangutils.utils.UtilConstants.IMPORT;
88import static org.onosproject.yangutils.utils.UtilConstants.IN;
89import static org.onosproject.yangutils.utils.UtilConstants.INT;
90import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
91import static org.onosproject.yangutils.utils.UtilConstants.INT_MAX_RANGE;
92import static org.onosproject.yangutils.utils.UtilConstants.INT_MIN_RANGE;
Bharat saraswal0663aff2016-10-18 23:16:14 +053093import static org.onosproject.yangutils.utils.UtilConstants.LEAF_IDENTIFIER;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053094import static org.onosproject.yangutils.utils.UtilConstants.LIST;
95import static org.onosproject.yangutils.utils.UtilConstants.LONG;
96import static org.onosproject.yangutils.utils.UtilConstants.LONG_MAX_RANGE;
97import static org.onosproject.yangutils.utils.UtilConstants.LONG_MIN_RANGE;
98import static org.onosproject.yangutils.utils.UtilConstants.LONG_WRAPPER;
Bharat saraswal54e4bab2016-10-05 23:32:14 +053099import static org.onosproject.yangutils.utils.UtilConstants.MORE_OBJ_ATTR;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530100import static org.onosproject.yangutils.utils.UtilConstants.NEW;
101import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
102import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
103import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
104import static org.onosproject.yangutils.utils.UtilConstants.OF;
105import static org.onosproject.yangutils.utils.UtilConstants.OMIT_NULL_VALUE_STRING;
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530106import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CLOSE_BRACKET_STRING;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530107import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
108import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
109import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
110import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BOOLEAN;
111import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BYTE;
112import static org.onosproject.yangutils.utils.UtilConstants.PARSE_INT;
113import static org.onosproject.yangutils.utils.UtilConstants.PARSE_LONG;
114import static org.onosproject.yangutils.utils.UtilConstants.PARSE_SHORT;
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530115import static org.onosproject.yangutils.utils.UtilConstants.PATTERN;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530116import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
117import static org.onosproject.yangutils.utils.UtilConstants.PUT;
118import static org.onosproject.yangutils.utils.UtilConstants.QUEUE;
119import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530120import static org.onosproject.yangutils.utils.UtilConstants.QUOTE_STRING;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530121import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
122import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLON;
123import static org.onosproject.yangutils.utils.UtilConstants.SET;
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530124import static org.onosproject.yangutils.utils.UtilConstants.SET_VALUE_PARA;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530125import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
126import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MAX_RANGE;
127import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MIN_RANGE;
128import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
129import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
130import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530131import static org.onosproject.yangutils.utils.UtilConstants.STRING_BUILDER;
132import static org.onosproject.yangutils.utils.UtilConstants.STRING_BUILDER_VAR;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530133import static org.onosproject.yangutils.utils.UtilConstants.THIS;
134import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
Bharat saraswal94844d62016-10-13 13:28:03 +0530135import static org.onosproject.yangutils.utils.UtilConstants.TO_STRING_METHOD;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530136import static org.onosproject.yangutils.utils.UtilConstants.TRY;
137import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
138import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_SPACE_INDENTATION;
139import static org.onosproject.yangutils.utils.UtilConstants.UINT8_MAX_RANGE;
140import static org.onosproject.yangutils.utils.UtilConstants.UINT8_MIN_RANGE;
141import static org.onosproject.yangutils.utils.UtilConstants.UINT_MAX_RANGE;
142import static org.onosproject.yangutils.utils.UtilConstants.UINT_MIN_RANGE;
143import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MAX_RANGE;
144import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MIN_RANGE;
145import static org.onosproject.yangutils.utils.UtilConstants.VALIDATE_RANGE;
146import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
Bharat saraswal94844d62016-10-13 13:28:03 +0530147import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO_MAP;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530148import static org.onosproject.yangutils.utils.UtilConstants.YANG_UTILS_TODO;
149import static org.onosproject.yangutils.utils.UtilConstants.ZERO;
150import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
151
152/**
153 * Represents string generator for translator.
154 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530155public final class StringGenerator {
156
janani bc27947a2016-10-19 01:17:40 +0530157 private static final Set<YangDataTypes> PRIMITIVE_TYPES =
158 new HashSet<>(Arrays.asList(INT8, INT16, INT32, INT64, UINT8,
159 UINT16, UINT32, UINT64, DECIMAL64,
160 BOOLEAN, EMPTY));
161
162 // No instantiation.
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530163 private StringGenerator() {
164 }
165
166 /**
167 * Returns compare to string.
168 *
169 * @return compare to string
170 */
171 static String getCompareToString() {
172 return PERIOD + COMPARE_TO;
173 }
174
175 /**
176 * Returns lesser than and equals condition.
177 *
178 * @return lesser than and equals condition
179 */
180 static String getLesserThanCondition() {
181 return SPACE + DIAMOND_OPEN_BRACKET + EQUAL + SPACE;
182 }
183
184 /**
185 * Returns greater than and equals condition.
186 *
187 * @return greater than and equals condition
188 */
189 static String getGreaterThanCondition() {
190 return SPACE + DIAMOND_CLOSE_BRACKET + EQUAL + SPACE;
191 }
192
193 /**
194 * Returns && conditional string.
195 *
196 * @param cond1 condition one
197 * @param cond2 condition two
198 * @return && conditional string
199 */
200 static String ifAndAndCondition(String cond1, String cond2) {
201 return cond1 + SPACE + AND + AND + SPACE + cond2;
202 }
203
204 /**
205 * Returns equal equal conditional string.
206 *
207 * @param cond1 condition one
208 * @param cond2 condition two
209 * @return equal equal conditional string
210 */
211 static String ifEqualEqualCondition(String cond1, String cond2) {
212 return cond1 + SPACE + EQUAL + EQUAL + SPACE + cond2;
213 }
214
215 /**
216 * Returns new instance string.
217 *
218 * @param returnType return type
219 * @param varName variable name
220 * @param space spaces
221 * @param value value
222 * @return new instance string
223 */
224 static String getNewInstance(String returnType, String varName,
225 String space, String value) {
226 return space + returnType + SPACE + varName + SPACE + EQUAL + SPACE +
Bharat saraswal0663aff2016-10-18 23:16:14 +0530227 NEW + SPACE + returnType + getOpenCloseParaWithValue(value) +
228 signatureClose();
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530229 }
230
231 /**
232 * Returns return string.
233 *
234 * @param value value to be returned
235 * @param space spaces
236 * @return return string
237 */
238 static String getReturnString(String value, String space) {
239 return space + RETURN + SPACE + value;
240 }
241
242 /**
243 * Returns new line string with spaces.
244 *
245 * @param space spaces
246 * @return new line string with spaces
247 */
248 static String getNewLineAndSpace(String space) {
249 return NEW_LINE + space;
250 }
251
252 /**
253 * Returns method close string.
254 *
255 * @param type indentation type
256 * @return method close string
257 */
Bharat saraswal94844d62016-10-13 13:28:03 +0530258 public static String methodClose(IndentationType type) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530259 switch (type) {
260 case EIGHT_SPACE:
261 return EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
262 NEW_LINE;
263 case TWELVE_SPACE:
264 return TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
265 NEW_LINE;
266 case SIXTEEN_SPACE:
267 return SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
268 NEW_LINE;
269 case TWENTY_SPACE:
270 return TWENTY_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
271 NEW_LINE;
272 case TWENTY_EIGHT_SPACE:
Bharat saraswal0663aff2016-10-18 23:16:14 +0530273 return TWENTY_SPACE_INDENTATION + EIGHT_SPACE_INDENTATION +
274 CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530275 case TWENTY_FOUR_SPACE:
Bharat saraswal0663aff2016-10-18 23:16:14 +0530276 return TWENTY_SPACE_INDENTATION + FOUR_SPACE_INDENTATION +
277 CLOSE_CURLY_BRACKET + NEW_LINE;
278 case FOUR_SPACE:
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530279 return FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
280 NEW_LINE;
281 default:
Bharat saraswal0663aff2016-10-18 23:16:14 +0530282 return CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530283 }
284 }
285
286 /**
287 * Returns body of the method.
288 *
289 * @param type type of method body
290 * @param paraName parameter name
291 * @param methodName method name
292 * @param space space to be given before body
293 * @param prefix prefix for internal method
294 * @param paramType parameter type
295 * @param isBuilderSetter is for builder setter
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530296 * @param setterVal value to set in setter
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530297 * @return body of the method
298 */
299 static String methodBody(MethodBodyTypes type, String paraName,
300 String methodName,
301 String space, String prefix,
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530302 String paramType, boolean isBuilderSetter, String setterVal) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530303 StringBuilder builder = new StringBuilder();
304 String body;
Bharat saraswal94844d62016-10-13 13:28:03 +0530305 String cond;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530306 switch (type) {
307 case GETTER:
308 return getReturnString(paraName, space);
309 case SETTER:
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530310 if (setterVal == null) {
311 setterVal = paraName;
312 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530313 body = space + THIS + PERIOD + paraName + SPACE + EQUAL + SPACE +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530314 setterVal + signatureClose();
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530315 builder.append(body);
316 if (isBuilderSetter) {
317 body = getReturnString(THIS + signatureClose(), space);
318 builder.append(body);
319 }
320 return builder.toString();
321 case BUILD:
322 return getReturnString(
Bharat saraswal0663aff2016-10-18 23:16:14 +0530323 NEW + SPACE + paraName + getOpenCloseParaWithValue(
324 THIS) + signatureClose(), space);
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530325 case CONSTRUCTOR:
326 return space + THIS + PERIOD + paraName + SPACE +
327 EQUAL + SPACE + BUILDER_LOWER_CASE + OBJECT + PERIOD +
328 prefix + methodName +
329 brackets(OPEN_CLOSE_BRACKET, null, null) +
330 signatureClose();
331 case DEFAULT_CONSTRUCTOR:
332 return EMPTY_STRING;
333 case ADD_TO_LIST:
334 return space + getIfConditionForAddToListMethod(paraName) +
335 space + paraName +
336 brackets(OPEN_CLOSE_BRACKET, null, null) + PERIOD +
Bharat saraswal0663aff2016-10-18 23:16:14 +0530337 ADD_STRING + getOpenCloseParaWithValue(VALUE) +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530338 signatureClose() + getReturnString(
339 THIS + signatureClose(), space);
340 case AUGMENTED_MAP_ADD:
Bharat saraswal94844d62016-10-13 13:28:03 +0530341 return space + YANG_AUGMENTED_INFO_MAP +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530342 PERIOD + PUT + OPEN_PARENTHESIS + CLASS +
343 OBJECT_STRING + COMMA + SPACE + VALUE +
344 CLOSE_PARENTHESIS + signatureClose();
345 case AUGMENTED_MAP_GET_VALUE:
346 return getReturnString(
Bharat saraswal0663aff2016-10-18 23:16:14 +0530347 YANG_AUGMENTED_INFO_MAP + PERIOD + GET + getOpenCloseParaWithValue(
348 CLASS + OBJECT_STRING) + signatureClose(), space);
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530349 case AUGMENTED_MAP_GETTER:
Bharat saraswal94844d62016-10-13 13:28:03 +0530350 return getReturnString(YANG_AUGMENTED_INFO_MAP +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530351 signatureClose(), space);
352 case MANAGER_METHODS:
353 body = space + YANG_UTILS_TODO + NEW_LINE;
354 builder.append(body);
355 if (paramType != null) {
356 body = getReturnString(parseTypeForReturnValue(paramType),
357 space);
358 builder.append(body)
359 .append(signatureClose());
360 }
361 return builder.toString();
362 case OF_METHOD:
363 return getReturnString(
Bharat saraswal0663aff2016-10-18 23:16:14 +0530364 NEW + SPACE + paraName + getOpenCloseParaWithValue(
365 VALUE) + signatureClose(), space);
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530366 case TO_STRING:
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530367 return getToStringMethodsAddString(space, paraName) + paraName +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530368 CLOSE_PARENTHESIS;
369 case EQUALS_METHOD:
370 default:
371 return null;
372 }
373 }
374
375 /**
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530376 * Returns to string method's add string.
377 *
378 * @param space indentation
379 * @param paraName parameter name
380 * @return to string method's add string
381 */
382 static String getToStringMethodsAddString(String space, String paraName) {
383 return space + PERIOD + ADD_STRING + OPEN_PARENTHESIS +
384 getQuotedString(paraName) + COMMA + SPACE;
385 }
386
387 /**
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530388 * Returns end of line.
389 *
390 * @return end of line
391 */
392 static String signatureClose() {
393 return SEMI_COLON + NEW_LINE;
394 }
395
Bharat saraswal0663aff2016-10-18 23:16:14 +0530396
397 /**
398 * Returns value assignment.
399 *
400 * @return value assignment
401 */
402 static String valueAssign(String param, String value, String indentation) {
403 return indentation + param + SPACE + EQUAL + SPACE + value +
404 signatureClose();
405 }
406
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530407 /**
408 * Returns method signature close for method class type.
409 *
410 * @param type method class type
411 * @return method signature close for method class type
412 */
413 static String methodSignatureClose(MethodClassTypes type) {
414 switch (type) {
415 case INTERFACE_TYPE:
416 return signatureClose();
417 case CLASS_TYPE:
418 return SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
419 default:
420 return null;
421 }
422 }
423
424 /**
425 * Returns method param.
426 *
427 * @param type type of param
428 * @param name name of param
429 * @return method param
430 */
431 private static String methodParam(String type, String name) {
432 return type + SPACE + name;
433 }
434
435 /**
436 * Returns comma followed by a space.
437 *
438 * @return comma followed by a space
439 */
440 private static String commaWithSpace() {
441 return COMMA + SPACE;
442 }
443
444 /**
445 * Returns bracket string for the given type.
446 *
447 * @param type bracket type
448 * @param value value to be added in brackets
449 * @param returnType returns type to be added for value
450 * @return bracket for the given type.
451 */
452 static String brackets(BracketType type, String value,
453 String returnType) {
454 String ret = EMPTY_STRING;
455 switch (type) {
456 case OPEN_CLOSE_BRACKET:
457 return OPEN_PARENTHESIS + CLOSE_PARENTHESIS;
458 case OPEN_CLOSE_BRACKET_WITH_VALUE:
459 return OPEN_PARENTHESIS + value + CLOSE_PARENTHESIS;
460 case OPEN_CLOSE_BRACKET_WITH_VALUE_AND_RETURN_TYPE:
461 if (returnType != null) {
462 ret = returnType + SPACE;
463 }
464 return OPEN_PARENTHESIS + ret + value +
465 CLOSE_PARENTHESIS;
466 case OPEN_BRACKET_WITH_VALUE:
467 ret = EMPTY_STRING;
468 if (returnType != null) {
469 ret = returnType + SPACE;
470 }
471 return OPEN_PARENTHESIS + ret + value +
472 COMMA;
473 case CLOSE_BRACKET_WITH_VALUE:
474 ret = EMPTY_STRING;
475 if (returnType != null) {
476 ret = returnType + SPACE;
477 }
478 return SPACE + ret + value +
479 CLOSE_PARENTHESIS;
480 case OPEN_CLOSE_DIAMOND:
481 return DIAMOND_OPEN_BRACKET + DIAMOND_CLOSE_BRACKET;
482 case OPEN_CLOSE_DIAMOND_WITH_VALUE:
483 return DIAMOND_OPEN_BRACKET + value + DIAMOND_CLOSE_BRACKET;
484 default:
485 return null;
486 }
487 }
488
489 /**
490 * Returns method signature for multi attribute methods.
491 *
492 * @param methodName method name
493 * @param prefix prefix for method
494 * @param modifier modifier for method
495 * @param methodReturnType method's return type
496 * @param params parameters
497 * @param type type of method
498 * @return method signature for multi attribute methods
499 */
500 static String multiAttrMethodSignature(String methodName, String
501 prefix, String modifier, String methodReturnType,
502 Map<String, String> params,
503 MethodClassTypes type) {
504 StringBuilder methodBuilder = new StringBuilder(FOUR_SPACE_INDENTATION);
505 String method = EMPTY_STRING;
506 if (modifier != null) {
507 method = modifier + SPACE;
508 }
509 methodBuilder.append(method);
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530510 if (prefix == null) {
511 prefix = EMPTY_STRING;
512 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530513 if (methodReturnType != null) {
514 method = methodReturnType + SPACE + prefix + methodName;
515 } else {
516 method = prefix + methodName;
517 }
518 //Append method beginning.
519 methodBuilder.append(method)
520 .append(OPEN_PARENTHESIS);
521 for (Map.Entry<String, String> param : params.entrySet()) {
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530522 methodBuilder.append(methodParam(param.getValue(), param.getKey()));
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530523 methodBuilder.append(commaWithSpace());
524 }
525 String para = methodBuilder.toString();
526 String[] array = {SPACE, COMMA};
527 para = trimAtLast(para, array);
528 methodBuilder = new StringBuilder(para)
529 .append(CLOSE_PARENTHESIS)
530 .append(methodSignatureClose(type));
531
532 return methodBuilder.toString();
533 }
534
535 /**
536 * Returns method signature for interface and implementation classes.
537 *
538 * @param methodName name of the method
539 * @param prefix prefix which needs to be added for method
540 * @param modifier modifier which needs to be added for method
541 * @param paraVal value which needs to be added as parameter
542 * @param methodReturnType returns type to be added for method
543 * @param paraReturnType return type to be added for parameter
544 * @param type method class type
545 * @return method signature for interface and implementation classes
546 */
547 static String methodSignature(
548 String methodName, String prefix, String modifier, String paraVal,
549 String methodReturnType, String paraReturnType,
550 MethodClassTypes type) {
551 StringBuilder methodBuilder = new StringBuilder(FOUR_SPACE_INDENTATION);
552 String method = EMPTY_STRING;
553 if (modifier != null) {
554 method = modifier + SPACE;
555 }
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530556 if (prefix == null) {
557 prefix = EMPTY_STRING;
558 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530559 methodBuilder.append(method);
560 if (methodReturnType != null) {
561 method = methodReturnType + SPACE + prefix + methodName;
562 } else {
563 method = prefix + methodName;
564 }
565 //Append method beginning.
566 methodBuilder.append(method);
567
568 if (paraVal != null) {
569 methodBuilder.append(brackets(
570 OPEN_CLOSE_BRACKET_WITH_VALUE_AND_RETURN_TYPE,
571 paraVal, paraReturnType));
572 } else {
573 methodBuilder.append(brackets(OPEN_CLOSE_BRACKET, null,
574 null));
575 }
576
577 methodBuilder.append(methodSignatureClose(type));
578
579 return methodBuilder.toString();
580 }
581
582 /**
583 * Returns list attribute.
584 *
585 * @param attrType attribute type
586 * @param compilerAnnotation compiler annotations
587 * @return list attribute
588 */
589
590 static String getListAttribute(String attrType,
591 YangCompilerAnnotation compilerAnnotation) {
592 String listAttr;
593 if (compilerAnnotation != null &&
594 compilerAnnotation.getYangAppDataStructure() != null) {
595 switch (compilerAnnotation.getYangAppDataStructure()
596 .getDataStructure()) {
597 case QUEUE: {
598 listAttr = QUEUE + DIAMOND_OPEN_BRACKET + attrType +
599 DIAMOND_CLOSE_BRACKET;
600 break;
601 }
602 case SET: {
603 listAttr = SET + DIAMOND_OPEN_BRACKET + attrType +
604 DIAMOND_CLOSE_BRACKET;
605 break;
606 }
607 case LIST: {
608 listAttr = getListString() + attrType +
609 DIAMOND_CLOSE_BRACKET;
610 break;
611 }
612 default: {
613 listAttr = getListString() + attrType +
614 DIAMOND_CLOSE_BRACKET;
615 }
616 }
617 } else {
618 listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
619 }
620 return listAttr;
621 }
622
623 /**
624 * Returns getters for value and select leaf.
625 *
626 * @return getters for value and select leaf
627 */
Bharat saraswal94844d62016-10-13 13:28:03 +0530628 static String getIsValueLeafSet() {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530629 return "\n" +
630 " @Override\n" +
631 " public boolean isLeafValueSet(LeafIdentifier leaf) {\n" +
Bharat saraswal94844d62016-10-13 13:28:03 +0530632 " return valueLeafFlags.get(leaf.getLeafIndex());\n" +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530633 " }\n" +
Bharat saraswal94844d62016-10-13 13:28:03 +0530634 "\n";
635 }
636
637 /**
638 * Returns is select leaf set.
639 *
640 * @return is select leaf set
641 */
642 static String getIsSelectLeafSet() {
643 return " @Override\n" +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530644 " public boolean isSelectLeaf(LeafIdentifier leaf) {\n" +
Bharat saraswal94844d62016-10-13 13:28:03 +0530645 " return selectLeafFlags.get(leaf.getLeafIndex());\n" +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530646 " }\n";
647 }
648
649 /**
650 * Returns getter methods for operation attributes.
651 *
652 * @return getter methods for operation attributes
653 */
Bharat saraswal94844d62016-10-13 13:28:03 +0530654 static String getValueLeafGetters() {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530655 return "\n" +
656 " /**\n" +
657 " * Returns the valueLeafFlags.\n" +
658 " *\n" +
659 " * @return value of valueLeafFlags\n" +
660 " */\n" +
661 " public BitSet getValueLeafFlags() {\n" +
662 " return valueLeafFlags;\n" +
663 " }\n" +
Bharat saraswal94844d62016-10-13 13:28:03 +0530664 "\n";
665 }
666
667 /**
668 * Returns getter methods for operation attributes.
669 *
670 * @return getter methods for operation attributes
671 */
672 static String getSelectLeafGetters() {
673 return " /**\n" +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530674 " * Returns the selectLeafFlags.\n" +
675 " *\n" +
676 " * @return value of selectLeafFlags\n" +
677 " */\n" +
678 " public BitSet getSelectLeafFlags() {\n" +
679 " return selectLeafFlags;\n" +
680 " }\n" +
681 "\n";
682 }
683
684 /**
685 * Returns interface leaf identifier enum method.
686 *
687 * @return interface leaf identifier enum method
688 */
689 static String getInterfaceLeafIdEnumMethods() {
690 return "\n\n private int leafIndex;\n" +
691 "\n" +
692 " public int getLeafIndex() {\n" +
693 " return leafIndex;\n" +
694 " }\n" +
695 "\n" +
696 " LeafIdentifier(int value) {\n" +
697 " this.leafIndex = value;\n" +
698 " }\n" +
699 " }\n";
700 }
701
702 /**
703 * Returns if condition string for typedef constructor.
704 *
705 * @param type type of conflict
706 * @param addFirst true int/long need to be added first
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530707 * @param val value to set
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530708 * @return if condition string for typedef constructor
709 */
710 static String ifConditionForIntInTypeDefConstructor(ValidatorTypeForUnionTypes type,
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530711 boolean addFirst, String val) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530712 String condition =
713 EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS +
714 VALIDATE_RANGE + OPEN_PARENTHESIS;
715
716 switch (type) {
717 case INT_TYPE_CONFLICT:
718 if (addFirst) {
719 condition = condition + INT_MIN_RANGE + COMMA + SPACE +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530720 INT_MAX_RANGE + COMMA + SPACE + val;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530721 } else {
722 condition = condition + UINT_MIN_RANGE + COMMA + SPACE +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530723 UINT_MAX_RANGE + COMMA + SPACE + val;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530724 }
725 break;
726 case LONG_TYPE_CONFLICT:
727 if (addFirst) {
728 condition = condition + LONG_MIN_RANGE + COMMA + SPACE +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530729 LONG_MAX_RANGE + COMMA + SPACE + val;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530730 } else {
731 condition = condition + ULONG_MIN_RANGE + COMMA + SPACE +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530732 ULONG_MAX_RANGE + COMMA + SPACE + val;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530733 }
734 break;
735 case SHORT_TYPE_CONFLICT:
736 if (addFirst) {
737 condition = condition + SHORT_MIN_RANGE + COMMA + SPACE +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530738 SHORT_MAX_RANGE + COMMA + SPACE + val;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530739 } else {
740 condition = condition + UINT8_MIN_RANGE + COMMA + SPACE +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530741 UINT8_MAX_RANGE + COMMA + SPACE + val;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530742 }
743 break;
744 default:
745 return null;
746 }
747
748 return condition + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
749 OPEN_CURLY_BRACKET + NEW_LINE;
750 }
751
752 /**
753 * Returns from string method parsed string.
754 *
755 * @param targetDataType target data type
756 * @param yangType YANG type
757 * @return parsed string
758 */
759 static String getParseFromStringMethod(String targetDataType,
760 YangType<?> yangType) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530761
janani bc27947a2016-10-19 01:17:40 +0530762 YangDataTypes type = yangType.getDataType();
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530763 switch (type) {
764 case INT8:
765 return BYTE_WRAPPER + PERIOD + PARSE_BYTE;
janani bc27947a2016-10-19 01:17:40 +0530766
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530767 case INT16:
768 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
janani bc27947a2016-10-19 01:17:40 +0530769
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530770 case INT32:
771 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
janani bc27947a2016-10-19 01:17:40 +0530772
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530773 case INT64:
774 return LONG_WRAPPER + PERIOD + PARSE_LONG;
janani bc27947a2016-10-19 01:17:40 +0530775
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530776 case UINT8:
777 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
janani bc27947a2016-10-19 01:17:40 +0530778
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530779 case UINT16:
780 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
janani bc27947a2016-10-19 01:17:40 +0530781
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530782 case UINT32:
783 return LONG_WRAPPER + PERIOD + PARSE_LONG;
janani bc27947a2016-10-19 01:17:40 +0530784
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530785 case UINT64:
786 return NEW + SPACE + BIG_INTEGER;
janani bc27947a2016-10-19 01:17:40 +0530787
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530788 case DECIMAL64:
789 return NEW + SPACE + BIG_DECIMAL;
janani bc27947a2016-10-19 01:17:40 +0530790
791 case INSTANCE_IDENTIFIER:
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530792 case STRING:
793 case IDENTITYREF:
794 return EMPTY_STRING;
janani bc27947a2016-10-19 01:17:40 +0530795
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530796 case EMPTY:
797 case BOOLEAN:
798 return BOOLEAN_WRAPPER + PERIOD + PARSE_BOOLEAN;
janani bc27947a2016-10-19 01:17:40 +0530799
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530800 case ENUMERATION:
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530801 return targetDataType + PERIOD + OF;
janani bc27947a2016-10-19 01:17:40 +0530802
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530803 case DERIVED:
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530804 case UNION:
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530805 return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
janani bc27947a2016-10-19 01:17:40 +0530806
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530807 default:
janani bc27947a2016-10-19 01:17:40 +0530808 throw new TranslatorException(
809 "Given data type is not supported. " +
810 yangType.getDataTypeName() + " in " +
811 yangType.getLineNumber() + " at " +
812 yangType.getCharPosition() + " in " +
813 yangType.getFileName());
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530814 }
815 }
816
817 /**
818 * Returns sub string with catch statement for union's from string method.
819 *
820 * @return sub string with catch statement for union's from string method
821 */
822 static String getCatchSubString() {
823 return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE +
824 brackets(OPEN_CLOSE_BRACKET_WITH_VALUE_AND_RETURN_TYPE, EXCEPTION_VAR,
825 EXCEPTION) + SPACE + OPEN_CURLY_BRACKET;
826 }
827
828 /**
829 * Returns sub string with return statement for union's from string method.
830 *
831 * @return sub string with return statement for union's from string method
832 */
833 static String getReturnOfSubString() {
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530834 return getReturnString(OF, TWELVE_SPACE_INDENTATION) +
Bharat saraswal0663aff2016-10-18 23:16:14 +0530835 getOpenCloseParaWithValue(TMP_VAL) + signatureClose();
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530836 }
837
838 /**
839 * Returns sub string with try statement for union's from string method.
840 *
841 * @return sub string with try statement for union's from string method
842 */
843 static String getTrySubString() {
844 return TRY + SPACE + OPEN_CURLY_BRACKET;
845 }
846
847 /*
848 * Returns omit null value string.
849 *
850 * @return omit null value string
851 */
852 static String getOmitNullValueString() {
853 return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING +
854 NEW_LINE;
855 }
856
857 /**
858 * Returns collection's iterator method.
859 *
860 * @param indentation indentation
861 * @param loopVar loop variable
862 * @param collection collection
863 * @return collection's iterator method
864 */
865 static String getCollectionIteratorForLoopBegin(String indentation,
866 String loopVar,
867 String collection) {
868 return indentation + FOR + SPACE + OPEN_PARENTHESIS + loopVar + SPACE +
869 COLON + SPACE + collection + CLOSE_PARENTHESIS + SPACE +
870 OPEN_CURLY_BRACKET + NEW_LINE;
871 }
872
873 /**
874 * Returns if else condition's signature.
875 *
876 * @param indentation indentation
877 * @param condition conditions
878 * @return if else condition's signature
879 */
880 static String getElseIfConditionBegin(String indentation,
881 String condition) {
Bharat saraswalc2fd3222016-10-19 16:10:27 +0530882 return indentation + CLOSE_CURLY_BRACKET + ELSE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530883 getIfConditionBegin(EMPTY_STRING, condition);
884 }
885
886 /**
887 * Returns if condition's signature.
888 *
889 * @param indentation indentation
890 * @param condition conditions
891 * @return if condition's signature
892 */
893 static String getIfConditionBegin(String indentation, String condition) {
Bharat saraswal0663aff2016-10-18 23:16:14 +0530894 return indentation + IF + SPACE + getOpenCloseParaWithValue(condition) +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530895 methodSignatureClose(CLASS_TYPE);
896 }
897
898 /**
janani bc27947a2016-10-19 01:17:40 +0530899 * Returns true, if the data type is primitive; false otherwise.
900 *
901 * @param dataType data type
902 * @return true if the data type is primitive; false otherwise
903 */
904 public static boolean isPrimitiveDataType(YangDataTypes dataType) {
905 return PRIMITIVE_TYPES.contains(dataType);
906 }
907
908 /**
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530909 * Returns list string.
910 *
911 * @return list string
912 */
913 private static String getListString() {
914 return LIST + DIAMOND_OPEN_BRACKET;
915 }
916
917 /**
918 * Returns override string.
919 *
920 * @return override string
921 */
922 public static String getOverRideString() {
923 return NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE;
924 }
925
926 /**
927 * Returns value leaf flag setter.
928 *
Bharat saraswal0663aff2016-10-18 23:16:14 +0530929 * @param name name of leaf
930 * @param flag flag to set values
931 * @param indentation indentation
932 * @param prefix prefix of method
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530933 * @return value leaf flag setter
934 */
Bharat saraswal0663aff2016-10-18 23:16:14 +0530935 static String getLeafFlagSetString(String name, String flag, String indentation, String prefix) {
936 return indentation + flag + PERIOD + prefix +
937 getOpenCloseParaWithValue(LEAF_IDENTIFIER + PERIOD + name
938 .toUpperCase() + ".getLeafIndex()");
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530939 }
940
941 /*Provides string to return for type.*/
942 private static String parseTypeForReturnValue(String type) {
943 switch (type) {
944 case BYTE:
945 case INT:
946 case SHORT:
947 case LONG:
948 case DOUBLE:
949 return ZERO;
950 case BOOLEAN_DATA_TYPE:
951 return FALSE;
952 default:
953 return null;
954 }
955 }
956
957 /**
958 * Returns check not null string.
959 *
960 * @param name attribute name
961 * @return check not null string
962 */
963 static String getCheckNotNull(String name) {
964 return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING +
965 OPEN_PARENTHESIS + name + COMMA + SPACE + name +
966 CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE;
967 }
968
969 /**
970 * Returns definition close string.
971 *
972 * @return definition close string
973 */
974 private static String defCloseString() {
Bharat saraswal94844d62016-10-13 13:28:03 +0530975 return SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530976 }
977
978 /**
979 * Returns default class definition for java file when extends a
980 * interface.
981 *
982 * @param classType class type
983 * @param name name of class
984 * @param modifier modifier for class
985 * @param extend extends class name
986 * @return class definition
987 */
988 static String getDefaultDefinitionWithExtends(String classType,
989 String name, String
990 modifier,
991 String extend) {
992 String mod = EMPTY_STRING;
993 if (modifier != null) {
994 mod = modifier + SPACE;
995 }
996 return mod + classType + SPACE + name + SPACE + EXTEND + SPACE
997 + extend + defCloseString();
998 }
999
1000 /**
1001 * Returns default class definition for java file when implements a
1002 * interface.
1003 *
1004 * @param classType class type
1005 * @param name name of class
1006 * @param modifier modifier for class
1007 * @param impl implements class name
1008 * @return class definition
1009 */
1010 static String getDefaultDefinitionWithImpl(String classType,
1011 String name, String
1012 modifier,
1013 String impl) {
1014 String mod = EMPTY_STRING;
1015 if (modifier != null) {
1016 mod = modifier + SPACE;
1017 }
1018 return mod + classType + SPACE + name + SPACE + IMPLEMENTS +
1019 SPACE + impl + defCloseString();
1020 }
1021
1022 /**
1023 * Returns default class definition for java file.
1024 *
1025 * @param classType class type
1026 * @param name name of class
1027 * @param modifier modifier for class
1028 * @return class definition
1029 */
1030 static String getDefaultDefinition(String classType,
1031 String name, String modifier) {
1032 String mod = EMPTY_STRING;
1033 if (modifier != null) {
1034 mod = modifier + SPACE;
1035 }
1036 return mod + classType + SPACE + name + defCloseString();
1037 }
1038
1039 /**
1040 * Returns string for service class.
1041 *
1042 * @param name1 name of even listener class
1043 * @param name2 name of even class
1044 * @return listener service string for service class
1045 */
1046 static String getEventExtendsString(String name1, String type,
1047 String name2) {
1048 StringBuilder builder = new StringBuilder();
1049 builder.append(type).append(DIAMOND_OPEN_BRACKET).append(name1)
1050 .append(COMMA).append(SPACE).append(name2).append
1051 (DIAMOND_CLOSE_BRACKET);
1052 return builder.toString();
1053 }
1054
1055 /**
1056 * Returns import string.
1057 *
1058 * @param pkg package
1059 * @param cls class
1060 * @return import string
1061 */
1062 public static String getImportString(String pkg, String cls) {
1063 StringBuilder builder = new StringBuilder()
1064 .append(IMPORT).append(pkg).append(PERIOD).append(cls)
1065 .append(signatureClose());
1066 return builder.toString();
1067 }
1068
1069 /**
1070 * Returns static modifier string.
1071 *
1072 * @param modifier modifier
1073 * @return static modifier string
1074 */
1075 static String getSpecificModifier(String modifier, String keyWord) {
1076 return new StringBuilder(modifier).append(SPACE).append(keyWord)
1077 .toString();
1078 }
1079
1080 /**
1081 * Returns builder string for class definition.
1082 *
1083 * @param yangName class name
1084 * @return builder string for class definition
1085 */
1086 static String getBuilderImplStringClassDef(String yangName) {
1087 return new StringBuilder(yangName).append(PERIOD).append(yangName)
1088 .append(BUILDER).toString();
1089 }
1090
1091 /**
1092 * Returns default name string.
1093 *
1094 * @param yangName class name
1095 * @return default name string
1096 */
1097 static String getDefaultName(String yangName) {
1098 return new StringBuilder(DEFAULT_CAPS).append(yangName).toString();
1099 }
1100
1101 /**
1102 * Returns suffixed name string.
1103 *
1104 * @param yangName class name
1105 * @param suffix suffix to append to name
1106 * @return suffixed name string
1107 */
1108 static String getSuffixedName(String yangName, String suffix) {
1109 return new StringBuilder(yangName).append(suffix).toString();
1110 }
1111
1112 /**
1113 * Returns error msg string.
1114 *
1115 * @param msg message
1116 * @param name name of node
1117 * @param line line number
1118 * @param position char position
1119 * @param fileName file name
1120 * @return error message string
1121 */
1122 static String getErrorMsg(String msg, String name, int line, int position,
1123 String fileName) {
1124 return new StringBuilder().append(msg).append(name).append(IN)
1125 .append(line).append(AT).append(position).append(IN)
1126 .append(fileName).toString();
1127 }
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301128
1129 /**
1130 * Returns string builder attribute string;
1131 *
1132 * @param init first param to be appended to string builder
1133 * @param space indentation space
1134 * @return string builder attribute
1135 */
1136 static String getStringBuilderAttr(String init, String space) {
1137 StringBuilder builder = new StringBuilder(space);
1138 builder.append(STRING_BUILDER).append(SPACE).append(STRING_BUILDER_VAR)
1139 .append(SPACE).append(EQUAL).append(SPACE).append(NEW)
1140 .append(SPACE).append(STRING_BUILDER).append(
Bharat saraswal0663aff2016-10-18 23:16:14 +05301141 getOpenCloseParaWithValue(getQuotedString(init)))
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301142 .append(signatureClose());
1143 return builder.toString();
1144 }
1145
1146 /**
1147 * Returns quoted string.
1148 *
1149 * @param name name to be quoted
1150 * @return quoted string
1151 */
1152 static String getQuotedString(String name) {
1153 return QUOTES + name + QUOTES;
1154 }
1155
1156 /**
1157 * Returns string builder's append string.
1158 *
1159 * @param append data to be append
1160 * @param space indentation
1161 * @return string builder's append string
1162 */
1163 static String getStringBuilderAppendString(String append, String space) {
1164 return space + STRING_BUILDER_VAR + PERIOD + APPEND + OPEN_PARENTHESIS +
1165 append + CLOSE_PARENTHESIS + signatureClose();
1166 }
1167
1168 /**
1169 * Returns pattern quote string.
1170 *
1171 * @param type type for pattern is needed
1172 * @return pattern quote string
1173 */
1174 static String getPatternQuoteString(String type) {
Bharat saraswal0663aff2016-10-18 23:16:14 +05301175 return PATTERN + PERIOD + QUOTE_STRING + getOpenCloseParaWithValue(
1176 getQuotedString(type));
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301177 }
1178
1179 /**
1180 * Returns bitset attribute.
1181 *
1182 * @param indentation indentation
1183 * @return bitset attribute
1184 */
1185 static String getBitSetAttr(String indentation) {
1186 StringBuilder builder = new StringBuilder(indentation);
1187 return builder.append(BITSET).append(SPACE).append(TMP_VAL)
1188 .append(SPACE).append(EQUAL).append(SPACE).append(NEW)
1189 .append(SPACE).append(BITSET).append(OPEN_CLOSE_BRACKET_STRING)
1190 .append(signatureClose()).toString();
1191 }
1192
1193 /**
1194 * Returns for loop string
1195 *
1196 * @param space indentation
1197 * @param type data type
1198 * @param var variable
1199 * @param data data variable/collection
1200 * @return for loop string
1201 */
1202 static String getForLoopString(String space, String type, String var,
1203 String data) {
1204 return space + FOR + SPACE + OPEN_PARENTHESIS + type + SPACE + var +
1205 SPACE + COLON + SPACE + data + CLOSE_PARENTHESIS +
1206 methodSignatureClose(CLASS_TYPE);
1207 }
1208
1209 /**
1210 * Returns set value parameter's get string for union to string method.
1211 *
1212 * @param count count of type
1213 * @return get string
1214 */
1215 static String getSetValueParaCondition(int count) {
Bharat saraswal0663aff2016-10-18 23:16:14 +05301216 return SET_VALUE_PARA + PERIOD + GET + getOpenCloseParaWithValue(
1217 count + EMPTY_STRING);
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301218 }
1219
1220 /**
1221 * Returns more object attr for union to string method.
1222 *
Bharat saraswal94844d62016-10-13 13:28:03 +05301223 * @param name name of generate class
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301224 * @return more object attr for union to string method
1225 */
Bharat saraswal94844d62016-10-13 13:28:03 +05301226 static String getMoreObjectAttr(String name) {
1227 String cls = name + PERIOD + CLASS;
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301228 StringBuilder attr = new StringBuilder(EIGHT_SPACE_INDENTATION);
1229 String[] array = {NEW_LINE};
Bharat saraswal94844d62016-10-13 13:28:03 +05301230 attr.append(MORE_OBJ_ATTR).append(GOOGLE_MORE_OBJECT_METHOD_STATIC_STRING)
Bharat saraswal0663aff2016-10-18 23:16:14 +05301231 .append(getOpenCloseParaWithValue(cls)).append(NEW_LINE)
1232 .append(FOUR_SPACE_INDENTATION).append(trimAtLast(
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301233 getOmitNullValueString(), array)).append(signatureClose());
1234 return attr.toString();
1235 }
Bharat saraswal94844d62016-10-13 13:28:03 +05301236
1237 /**
1238 * Returns to string call.
1239 *
1240 * @param name name of attribute
1241 * @return to string call for attribute
1242 */
1243 static String getToStringCall(String name) {
1244 return name + PERIOD +
1245 TO_STRING_METHOD + OPEN_CLOSE_BRACKET_STRING;
1246 }
Bharat saraswal0663aff2016-10-18 23:16:14 +05301247
1248 /**
1249 * Returns value in brackets.
1250 *
1251 * @param name value
1252 * @return value in brackets
1253 */
1254 static String getOpenCloseParaWithValue(String name) {
1255 return brackets(OPEN_CLOSE_BRACKET_WITH_VALUE, name, null);
1256 }
1257
1258 /**
1259 * Returns equals comparision.
1260 *
1261 * @param para1 param
1262 * @param para2 param
1263 * @return equals comparision
1264 */
1265 static String getTwoParaEqualsString(String para1, String para2) {
1266 return para1 + PERIOD + EQUALS_STRING + getOpenCloseParaWithValue(para2);
1267 }
1268
1269 /**
1270 * Returns equal equal condition.
1271 *
1272 * @param para param
1273 * @param val value
1274 * @return equal equal condition
1275 */
1276 static String getEqualEqualString(String para, String val) {
1277 return para + SPACE + EQUAL + EQUAL + SPACE + val;
1278 }
1279
1280 /**
1281 * Returns app instance method call.
1282 *
1283 * @param name attr name
1284 * @return app instance method call
1285 */
1286 static String getAppInstanceAttrString(String name) {
1287 return APP_INSTANCE + PERIOD + name + OPEN_CLOSE_BRACKET_STRING;
1288 }
1289
1290 /**
1291 * Returns qualified name.
1292 *
1293 * @param pkg package
1294 * @param cls class info
1295 * @return qualified name
1296 */
1297 static String getQualifiedString(String pkg, String cls) {
1298 return pkg + PERIOD + cls;
1299 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301300}