blob: 5fc99c047fef91985a1e19a1698eeab94374f55e [file] [log] [blame]
Bharat saraswal97459962016-02-20 21:57:16 +05301/*
Brian O'Connor0f7908b2016-04-09 01:19:45 -07002 * Copyright 2016-present Open Networking Laboratory
Bharat saraswal97459962016-02-20 21:57:16 +05303 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.onosproject.yangutils.translator.tojava.utils;
18
Bharat saraswal0663aff2016-10-18 23:16:14 +053019import org.onosproject.yangutils.datamodel.InvalidOpTypeHolder;
Bharat saraswal039f59c2016-07-14 21:57:13 +053020import org.onosproject.yangutils.datamodel.YangAtomicPath;
Gaurav Agrawal8a147522016-08-10 13:43:01 +053021import org.onosproject.yangutils.datamodel.YangCompilerAnnotation;
Bharat saraswal748fc3c2016-09-06 16:38:20 +053022import org.onosproject.yangutils.datamodel.YangEnum;
23import org.onosproject.yangutils.datamodel.YangEnumeration;
Bharat saraswal94844d62016-10-13 13:28:03 +053024import org.onosproject.yangutils.datamodel.YangLeafRef;
Bharat saraswalaf413b82016-07-14 15:18:20 +053025import org.onosproject.yangutils.datamodel.YangNode;
Bharat saraswal54e4bab2016-10-05 23:32:14 +053026import org.onosproject.yangutils.datamodel.YangType;
janani b0e4e8ae2016-07-13 21:06:41 +053027import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
Vinod Kumar S9f26ae52016-03-23 15:30:27 +053028import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
Bharat saraswal039f59c2016-07-14 21:57:13 +053029import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
Gaurav Agrawal8a147522016-08-10 13:43:01 +053030import org.onosproject.yangutils.utils.io.YangPluginConfig;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +053031import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
Bharat saraswal84366c52016-03-23 19:40:35 +053032
Bharat saraswal9fab16b2016-09-23 23:27:24 +053033import java.util.LinkedHashMap;
Gaurav Agrawal3b57f362016-09-07 13:16:35 +053034import java.util.List;
35
Bharat saraswal715d3fc2016-05-17 19:59:16 +053036import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +053037import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
Bharat saraswal54e4bab2016-10-05 23:32:14 +053038import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053039import static org.onosproject.yangutils.translator.tojava.utils.BracketType.OPEN_CLOSE_BRACKET;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053040import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.EIGHT_SPACE;
41import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.FOUR_SPACE;
Bharat saraswal54e4bab2016-10-05 23:32:14 +053042import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.TWELVE_SPACE;
Gaurav Agrawal3b57f362016-09-07 13:16:35 +053043import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getAugmentedClassNameForDataMethods;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053044import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getCurNodeName;
Bharat saraswal039f59c2016-07-14 21:57:13 +053045import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getSetOfNodeIdentifiers;
Bharat saraswal748fc3c2016-09-06 16:38:20 +053046import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053047import static org.onosproject.yangutils.translator.tojava.utils.MethodBodyTypes.AUGMENTED_MAP_ADD;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053048import static org.onosproject.yangutils.translator.tojava.utils.MethodBodyTypes.AUGMENTED_MAP_GET_VALUE;
49import static org.onosproject.yangutils.translator.tojava.utils.MethodBodyTypes.GETTER;
50import static org.onosproject.yangutils.translator.tojava.utils.MethodBodyTypes.MANAGER_METHODS;
51import static org.onosproject.yangutils.translator.tojava.utils.MethodBodyTypes.SETTER;
52import static org.onosproject.yangutils.translator.tojava.utils.MethodBodyTypes.TO_STRING;
53import static org.onosproject.yangutils.translator.tojava.utils.MethodClassTypes.CLASS_TYPE;
54import static org.onosproject.yangutils.translator.tojava.utils.MethodClassTypes.INTERFACE_TYPE;
55import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.brackets;
Bharat saraswal54e4bab2016-10-05 23:32:14 +053056import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getBitSetAttr;
57import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getCatchSubString;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053058import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getCompareToString;
Bharat saraswal54e4bab2016-10-05 23:32:14 +053059import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getForLoopString;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053060import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getGreaterThanCondition;
61import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getIfConditionBegin;
Bharat saraswal0663aff2016-10-18 23:16:14 +053062import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getLeafFlagSetString;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053063import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getLesserThanCondition;
Bharat saraswal54e4bab2016-10-05 23:32:14 +053064import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getListAttribute;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053065import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getNewInstance;
Bharat saraswal54e4bab2016-10-05 23:32:14 +053066import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getNewLineAndSpace;
67import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getOmitNullValueString;
Bharat saraswal0663aff2016-10-18 23:16:14 +053068import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getOpenCloseParaWithValue;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053069import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getOverRideString;
Bharat saraswal54e4bab2016-10-05 23:32:14 +053070import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getParseFromStringMethod;
71import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getPatternQuoteString;
72import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getQuotedString;
73import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getReturnOfSubString;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053074import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getReturnString;
Bharat saraswal54e4bab2016-10-05 23:32:14 +053075import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getSetValueParaCondition;
Bharat saraswal94844d62016-10-13 13:28:03 +053076import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getStringBuilderAttr;
77import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getToStringCall;
Bharat saraswal54e4bab2016-10-05 23:32:14 +053078import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getTrySubString;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053079import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.ifAndAndCondition;
80import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.ifConditionForIntInTypeDefConstructor;
81import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.ifEqualEqualCondition;
82import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.methodBody;
83import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.methodClose;
84import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.methodSignature;
85import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.methodSignatureClose;
86import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.multiAttrMethodSignature;
87import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.signatureClose;
Bharat saraswal64e7e232016-07-14 23:33:55 +053088import static org.onosproject.yangutils.utils.UtilConstants.ADD;
Bharat saraswal84366c52016-03-23 19:40:35 +053089import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
90import static org.onosproject.yangutils.utils.UtilConstants.AND;
Bharat saraswal94844d62016-10-13 13:28:03 +053091import static org.onosproject.yangutils.utils.UtilConstants.APPEND;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053092import static org.onosproject.yangutils.utils.UtilConstants.ARRAY_LIST;
Bharat saraswalaf413b82016-07-14 15:18:20 +053093import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +053094import static org.onosproject.yangutils.utils.UtilConstants.BASE64;
Bharat saraswald14cbe82016-07-14 13:26:18 +053095import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
Bharat saraswal54e4bab2016-10-05 23:32:14 +053096import static org.onosproject.yangutils.utils.UtilConstants.BITS;
97import static org.onosproject.yangutils.utils.UtilConstants.BIT_SET;
Bharat saraswal84366c52016-03-23 19:40:35 +053098import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
99import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
100import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530101import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_LOWER_CASE;
Bharat saraswal0663aff2016-10-18 23:16:14 +0530102import static org.onosproject.yangutils.utils.UtilConstants.BUILD_FOR_FILTER;
Bharat saraswal250a7472016-05-12 13:16:57 +0530103import static org.onosproject.yangutils.utils.UtilConstants.CASE;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530104import static org.onosproject.yangutils.utils.UtilConstants.CLASS;
105import static org.onosproject.yangutils.utils.UtilConstants.CLASS_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +0530106import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
107import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +0530108import static org.onosproject.yangutils.utils.UtilConstants.COLON;
Bharat saraswal84366c52016-03-23 19:40:35 +0530109import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +0530110import static org.onosproject.yangutils.utils.UtilConstants.DECODE;
Bharat saraswal250a7472016-05-12 13:16:57 +0530111import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530112import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT_CAPS;
Bharat saraswal84366c52016-03-23 19:40:35 +0530113import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530114import static org.onosproject.yangutils.utils.UtilConstants.ELSE;
Bharat saraswal84366c52016-03-23 19:40:35 +0530115import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
Bharat saraswal94844d62016-10-13 13:28:03 +0530116import static org.onosproject.yangutils.utils.UtilConstants.ENCODE_TO_STRING;
Bharat saraswal8beac342016-08-04 02:00:03 +0530117import static org.onosproject.yangutils.utils.UtilConstants.ENUM;
Bharat saraswal84366c52016-03-23 19:40:35 +0530118import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
119import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
120import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +0530121import static org.onosproject.yangutils.utils.UtilConstants.FOR;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530122import static org.onosproject.yangutils.utils.UtilConstants.FOR_TYPE_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +0530123import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530124import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
125import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530126import static org.onosproject.yangutils.utils.UtilConstants.GET;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +0530127import static org.onosproject.yangutils.utils.UtilConstants.GET_DECODER;
Bharat saraswal94844d62016-10-13 13:28:03 +0530128import static org.onosproject.yangutils.utils.UtilConstants.GET_ENCODER;
Bharat saraswal84366c52016-03-23 19:40:35 +0530129import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
130import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
131import static org.onosproject.yangutils.utils.UtilConstants.HASH;
132import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
133import static org.onosproject.yangutils.utils.UtilConstants.IF;
Bharat saraswal84366c52016-03-23 19:40:35 +0530134import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
135import static org.onosproject.yangutils.utils.UtilConstants.INT;
Bharat saraswal8beac342016-08-04 02:00:03 +0530136import static org.onosproject.yangutils.utils.UtilConstants.IS_SELECT_LEAF;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530137import static org.onosproject.yangutils.utils.UtilConstants.LEAF;
Bharat saraswal8beac342016-08-04 02:00:03 +0530138import static org.onosproject.yangutils.utils.UtilConstants.LEAF_IDENTIFIER;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530139import static org.onosproject.yangutils.utils.UtilConstants.LONG;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530140import static org.onosproject.yangutils.utils.UtilConstants.MAX_RANGE;
141import static org.onosproject.yangutils.utils.UtilConstants.MIN_RANGE;
Bharat saraswal84366c52016-03-23 19:40:35 +0530142import static org.onosproject.yangutils.utils.UtilConstants.NEW;
143import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530144import static org.onosproject.yangutils.utils.UtilConstants.NOT;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530145import static org.onosproject.yangutils.utils.UtilConstants.NULL;
Bharat saraswal84366c52016-03-23 19:40:35 +0530146import static org.onosproject.yangutils.utils.UtilConstants.OBJ;
147import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
148import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
149import static org.onosproject.yangutils.utils.UtilConstants.OF;
Bharat saraswal94844d62016-10-13 13:28:03 +0530150import static org.onosproject.yangutils.utils.UtilConstants.OF_CAPS;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530151import static org.onosproject.yangutils.utils.UtilConstants.ONE;
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530152import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CLOSE_BRACKET_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +0530153import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
154import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
Bharat saraswal8beac342016-08-04 02:00:03 +0530155import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM;
Bharat saraswal84366c52016-03-23 19:40:35 +0530156import static org.onosproject.yangutils.utils.UtilConstants.OTHER;
157import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
158import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530159import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530160import static org.onosproject.yangutils.utils.UtilConstants.PROCESS_SUBTREE_FILTERING;
161import static org.onosproject.yangutils.utils.UtilConstants.PROTECTED;
Bharat saraswal84366c52016-03-23 19:40:35 +0530162import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
Bharat saraswal94844d62016-10-13 13:28:03 +0530163import static org.onosproject.yangutils.utils.UtilConstants.QUESTION_MARK;
Bharat saraswal84366c52016-03-23 19:40:35 +0530164import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
165import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530166import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530167import static org.onosproject.yangutils.utils.UtilConstants.SCHEMA_NAME;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530168import static org.onosproject.yangutils.utils.UtilConstants.SELECT_ALL_CHILD;
169import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLON;
Bharat saraswal84366c52016-03-23 19:40:35 +0530170import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
Bharat saraswal8beac342016-08-04 02:00:03 +0530171import static org.onosproject.yangutils.utils.UtilConstants.SET_SELECT_LEAF;
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530172import static org.onosproject.yangutils.utils.UtilConstants.SET_VALUE_PARA;
Bharat saraswal84366c52016-03-23 19:40:35 +0530173import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
174import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530175import static org.onosproject.yangutils.utils.UtilConstants.SPLIT_STRING;
176import static org.onosproject.yangutils.utils.UtilConstants.SQUARE_BRACKETS;
Bharat saraswal84366c52016-03-23 19:40:35 +0530177import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
Bharat saraswal94844d62016-10-13 13:28:03 +0530178import static org.onosproject.yangutils.utils.UtilConstants.STRING_BUILDER_VAR;
Bharat saraswal84366c52016-03-23 19:40:35 +0530179import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
Bharat saraswal0663aff2016-10-18 23:16:14 +0530180import static org.onosproject.yangutils.utils.UtilConstants.SUBTREE_FILTERED;
Bharat saraswal84366c52016-03-23 19:40:35 +0530181import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
Bharat saraswal250a7472016-05-12 13:16:57 +0530182import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
Bharat saraswal84366c52016-03-23 19:40:35 +0530183import static org.onosproject.yangutils.utils.UtilConstants.THIS;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530184import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530185import static org.onosproject.yangutils.utils.UtilConstants.TO_CAPS;
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530186import static org.onosproject.yangutils.utils.UtilConstants.TO_STRING_METHOD;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530187import static org.onosproject.yangutils.utils.UtilConstants.TRIM_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +0530188import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
189import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530190import static org.onosproject.yangutils.utils.UtilConstants.VALIDATE_RANGE;
Bharat saraswal84366c52016-03-23 19:40:35 +0530191import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
Bharat saraswal0663aff2016-10-18 23:16:14 +0530192import static org.onosproject.yangutils.utils.UtilConstants.VALUE_LEAF;
Bharat saraswal8beac342016-08-04 02:00:03 +0530193import static org.onosproject.yangutils.utils.UtilConstants.VALUE_LEAF_SET;
Bharat saraswal84366c52016-03-23 19:40:35 +0530194import static org.onosproject.yangutils.utils.UtilConstants.VOID;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530195import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530196import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO_LOWER_CASE;
Bharat saraswal84366c52016-03-23 19:40:35 +0530197import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
198import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
199import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530200import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.FROM_METHOD;
Bharat saraswal84366c52016-03-23 19:40:35 +0530201import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530202import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.MANAGER_SETTER_METHOD;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530203import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
Bharat saraswal84366c52016-03-23 19:40:35 +0530204import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530205import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530206import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForAddAugmentation;
Bharat saraswal8beac342016-08-04 02:00:03 +0530207import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForBuilderMethod;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530208import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForGetAugmentation;
Bharat saraswal8beac342016-08-04 02:00:03 +0530209import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForGetMethodWithAttribute;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530210import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForValidatorMethod;
Bharat saraswald14cbe82016-07-14 13:26:18 +0530211import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530212import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
213import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
214import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
Bharat saraswal84366c52016-03-23 19:40:35 +0530215import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
Bharat saraswal97459962016-02-20 21:57:16 +0530216
217/**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530218 * Represents generator for methods of generated files based on the file type.
Bharat saraswal97459962016-02-20 21:57:16 +0530219 */
220public final class MethodsGenerator {
Mahesh Poojary Huawei1025a172016-09-27 16:06:07 +0530221 private static final String BIT_NAMES_VAR = "bitNames";
222 private static final String BIT_NAME_VAR = "bitName";
Bharat saraswal97459962016-02-20 21:57:16 +0530223
Bharat saraswal97459962016-02-20 21:57:16 +0530224 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530225 * Creates an instance of method generator.
Bharat saraswal97459962016-02-20 21:57:16 +0530226 */
227 private MethodsGenerator() {
228 }
229
230 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530231 * Returns the methods strings for builder interface.
232 *
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530233 * @param name attribute name
Vinod Kumar S08710982016-03-03 19:55:30 +0530234 * @return method string for builder interface
Bharat saraswal97459962016-02-20 21:57:16 +0530235 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530236 public static String parseBuilderInterfaceBuildMethodString(String name) {
237 return getJavaDoc(BUILD_METHOD, name, false, null) +
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530238 getBuildForInterface(name);
Bharat saraswal97459962016-02-20 21:57:16 +0530239 }
240
241 /**
242 * Returns getter string.
243 *
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530244 * @param attr attribute info
245 * @param genType generated java files
Bharat saraswal97459962016-02-20 21:57:16 +0530246 * @return getter string
247 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530248 public static String getGetterString(JavaAttributeInfo attr, int genType) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530249
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530250 String returnType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530251 String attributeName = attr.getAttributeName();
Vidyashree Ramab3670472016-08-06 15:49:56 +0530252 String appDataStructure = null;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530253 StringBuilder builder = new StringBuilder();
Vidyashree Ramab3670472016-08-06 15:49:56 +0530254 if (attr.getCompilerAnnotation() != null) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530255 appDataStructure =
256 attr.getCompilerAnnotation().getYangAppDataStructure()
257 .getDataStructure().name();
Vidyashree Ramab3670472016-08-06 15:49:56 +0530258 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530259 if (genType == GENERATE_SERVICE_AND_MANAGER) {
260 builder.append(generateForGetMethodWithAttribute(returnType))
261 .append(getGetterForInterface(
262 attributeName, returnType, attr.isListAttr(),
263 genType, attr.getCompilerAnnotation()));
264
265 return builder.toString();
Bharat saraswal8beac342016-08-04 02:00:03 +0530266 }
Vinod Kumar S08710982016-03-03 19:55:30 +0530267
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530268 builder.append(getJavaDoc(GETTER_METHOD, attributeName, attr
269 .isListAttr(), appDataStructure))
270 .append(getGetterForInterface(
271 attributeName, returnType, attr.isListAttr(),
272 genType, attr.getCompilerAnnotation()));
273
274 return builder.toString();
Bharat saraswal97459962016-02-20 21:57:16 +0530275 }
276
277 /**
278 * Returns setter string.
279 *
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530280 * @param attr attribute info
281 * @param className java class name
282 * @param genType generated java files
Bharat saraswal97459962016-02-20 21:57:16 +0530283 * @return setter string
284 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530285 public static String getSetterString(JavaAttributeInfo attr,
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530286 String className, int genType) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530287
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530288 String attrType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530289 String attributeName = attr.getAttributeName();
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530290 JavaDocGen.JavaDocType type;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530291 StringBuilder builder = new StringBuilder();
292 if (genType == GENERATE_SERVICE_AND_MANAGER) {
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530293 type = MANAGER_SETTER_METHOD;
294 } else {
295 type = SETTER_METHOD;
296 }
Bharat saraswal97459962016-02-20 21:57:16 +0530297
Vidyashree Ramab3670472016-08-06 15:49:56 +0530298 String appDataStructure = null;
299 if (attr.getCompilerAnnotation() != null) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530300 appDataStructure =
301 attr.getCompilerAnnotation().getYangAppDataStructure()
302 .getDataStructure().name();
Vidyashree Ramab3670472016-08-06 15:49:56 +0530303 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530304 builder.append(getJavaDoc(type, attributeName, attr.isListAttr(),
305 appDataStructure))
306 .append(getSetterForInterface(attributeName, attrType, className,
307 attr.isListAttr(), genType,
308 attr.getCompilerAnnotation()));
309 return builder.toString();
Bharat saraswal97459962016-02-20 21:57:16 +0530310 }
311
312 /**
313 * Returns constructor method string.
314 *
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530315 * @param name class name
Bharat saraswal97459962016-02-20 21:57:16 +0530316 * @return constructor string
317 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530318 private static String getConstructorString(String name) {
319 return getJavaDoc(CONSTRUCTOR, name, false, null);
Bharat saraswal97459962016-02-20 21:57:16 +0530320 }
321
322 /**
323 * Returns default constructor method string.
324 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530325 * @param name class name
Bharat saraswal022dae92016-03-04 20:08:09 +0530326 * @param modifierType modifier type
Bharat saraswal97459962016-02-20 21:57:16 +0530327 * @return default constructor string
328 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530329 public static String getDefaultConstructorString(String name,
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530330 String modifierType) {
331 return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false, null)
Vidyashree Ramab3670472016-08-06 15:49:56 +0530332 + getDefaultConstructor(name, modifierType) + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530333 }
334
335 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530336 * Returns build method string.
337 *
Bharat saraswal94844d62016-10-13 13:28:03 +0530338 * @param name class name
339 * @param isRoot true if root node
Bharat saraswal97459962016-02-20 21:57:16 +0530340 * @return build string
341 */
Bharat saraswal94844d62016-10-13 13:28:03 +0530342 public static String getBuildString(String name, boolean isRoot) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530343 return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE +
Bharat saraswal94844d62016-10-13 13:28:03 +0530344 getBuild(name, isRoot);
Bharat saraswal97459962016-02-20 21:57:16 +0530345 }
346
347 /**
348 * Returns the getter method strings for class file.
349 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530350 * @param attr attribute info
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530351 * @param generatedJavaFiles for the type of java file being generated
Vinod Kumar S08710982016-03-03 19:55:30 +0530352 * @return getter method for class
Bharat saraswal97459962016-02-20 21:57:16 +0530353 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530354 public static String getGetterForClass(JavaAttributeInfo attr,
355 int generatedJavaFiles) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530356
Bharat saraswal8beac342016-08-04 02:00:03 +0530357 String attrQualifiedType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530358 String attributeName = attr.getAttributeName();
Bharat saraswal022dae92016-03-04 20:08:09 +0530359
360 if (!attr.isListAttr()) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530361 return getGetter(attrQualifiedType, attributeName,
362 generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530363 }
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530364 String attrParam = getListAttribute(attrQualifiedType,
365 attr.getCompilerAnnotation());
Vidyashree Ramab3670472016-08-06 15:49:56 +0530366 return getGetter(attrParam, attributeName, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530367 }
368
369 /**
370 * Returns getter for attribute.
371 *
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530372 * @param type return type
373 * @param name attribute name
374 * @param genType generated java files
Bharat saraswal022dae92016-03-04 20:08:09 +0530375 * @return getter for attribute
376 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530377 static String getGetter(String type, String name, int genType) {
378 StringBuilder builder = new StringBuilder();
379 if (genType == GENERATE_SERVICE_AND_MANAGER) {
380 //Append method signature.
381 builder.append(methodSignature(getCapitalCase(name), GET,
382 PUBLIC, null, type, null,
383 CLASS_TYPE))
384 //Append method body.
385 .append(methodBody(MANAGER_METHODS, null, null,
386 EIGHT_SPACE_INDENTATION, null,
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530387 type, false, null))
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530388 .append(signatureClose())
389 //Append method close.
390 .append(methodClose(FOUR_SPACE));
391 return builder.toString();
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530392 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530393 builder.append(methodSignature(name, EMPTY_STRING,
394 PUBLIC, null, type, null,
395 CLASS_TYPE))
396 //Append method body.
397 .append(methodBody(GETTER, name, name,
398 EIGHT_SPACE_INDENTATION, null,
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530399 type, false, null))
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530400 .append(signatureClose())
401 //Append method close.
402 .append(methodClose(FOUR_SPACE));
403 return builder.toString();
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530404 }
405
Bharat saraswal97459962016-02-20 21:57:16 +0530406 /**
407 * Returns the setter method strings for class file.
408 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530409 * @param attr attribute info
410 * @param className name of the class
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530411 * @param generatedJavaFiles generated java files
Vinod Kumar S08710982016-03-03 19:55:30 +0530412 * @return setter method for class
Bharat saraswal97459962016-02-20 21:57:16 +0530413 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530414 public static String getSetterForClass(JavaAttributeInfo attr,
415 String className,
416 int generatedJavaFiles) {
Bharat saraswal8beac342016-08-04 02:00:03 +0530417 String attrQualifiedType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530418 String attributeName = attr.getAttributeName();
Bharat saraswal8beac342016-08-04 02:00:03 +0530419 boolean isTypeNull = false;
420 if (attr.getAttributeType() == null) {
421 isTypeNull = true;
Bharat saraswal022dae92016-03-04 20:08:09 +0530422 }
Bharat saraswal8beac342016-08-04 02:00:03 +0530423 if (!attr.isListAttr()) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530424 return getSetter(className, attributeName, attrQualifiedType,
425 generatedJavaFiles, isTypeNull, false);
Bharat saraswal8beac342016-08-04 02:00:03 +0530426 }
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530427 String attrParam = getListAttribute(attrQualifiedType,
428 attr.getCompilerAnnotation());
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530429 return getSetter(className, attributeName, attrParam,
430 generatedJavaFiles, isTypeNull, true);
Bharat saraswal022dae92016-03-04 20:08:09 +0530431 }
432
433 /**
434 * Returns setter for attribute.
435 *
Bharat saraswal8beac342016-08-04 02:00:03 +0530436 * @param className class name
437 * @param name attribute name
438 * @param type return type
439 * @param isTypeNull if attribute type is null
440 * @param isList true if leaf-list
Bharat saraswal022dae92016-03-04 20:08:09 +0530441 * @return setter for attribute
442 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530443 private static String getSetter(String className, String name, String type,
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530444 int genType,
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530445 boolean isTypeNull, boolean isList) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530446 StringBuilder builder = new StringBuilder();
447 if (genType == GENERATE_SERVICE_AND_MANAGER) {
448 //Append method signature.
449 builder.append(methodSignature(getCapitalCase(name),
450 SET_METHOD_PREFIX,
451 PUBLIC, name, VOID, type,
452 CLASS_TYPE))
453 //Append method body.
454 .append(methodBody(MANAGER_METHODS, null, null,
455 EIGHT_SPACE_INDENTATION, null, null,
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530456 false, null))
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530457 .append(methodClose(FOUR_SPACE));
458 return builder.toString();
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530459 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530460 if (genType == GENERATE_EVENT_SUBJECT_CLASS) {
461 builder.append(methodSignature(name, EMPTY_STRING, PUBLIC, name, VOID,
462 type, CLASS_TYPE))
Bharat saraswal8beac342016-08-04 02:00:03 +0530463
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530464 //Append method body.
465 .append(methodBody(SETTER, name, name,
466 EIGHT_SPACE_INDENTATION, null, null,
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530467 false, null))
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530468 .append(methodClose(FOUR_SPACE));
469 return builder.toString();
470 }
471 builder.append(methodSignature(name, EMPTY_STRING,
472 PUBLIC, name, getCapitalCase(className) +
473 BUILDER, type, CLASS_TYPE));
474 if (!isTypeNull && !isList) {
Bharat saraswal0663aff2016-10-18 23:16:14 +0530475 builder.append(getLeafFlagSetString(name, VALUE_LEAF, EIGHT_SPACE_INDENTATION,
476 SET_METHOD_PREFIX)).append(signatureClose());
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530477 } else {
478 builder.append(EMPTY_STRING);
479 }
480 //Append method body.
481 builder.append(methodBody(SETTER, name, name,
482 EIGHT_SPACE_INDENTATION, null, null,
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530483 true, null))
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530484 //Append method close.
485 .append(methodClose(FOUR_SPACE));
486 return builder.toString();
Bharat saraswal97459962016-02-20 21:57:16 +0530487 }
488
489 /**
Bharat saraswal022dae92016-03-04 20:08:09 +0530490 * Returns the setter method strings for class file.
491 *
492 * @param attr attribute info
493 * @return setter method for class
494 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530495 static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
Bharat saraswal022dae92016-03-04 20:08:09 +0530496
Bharat saraswal8beac342016-08-04 02:00:03 +0530497 String attrQualifiedType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530498 String attributeName = attr.getAttributeName();
Bharat saraswal8beac342016-08-04 02:00:03 +0530499 return getTypeDefSetter(attrQualifiedType, attributeName);
Bharat saraswal022dae92016-03-04 20:08:09 +0530500 }
501
502 /**
503 * Returns type def's setter for attribute.
504 *
505 * @param type data type
506 * @param name attribute name
507 * @return setter for type def's attribute
508 */
509 private static String getTypeDefSetter(String type, String name) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530510 return methodSignature(getCapitalCase(name), SET_METHOD_PREFIX, PUBLIC,
511 name, VOID, type, CLASS_TYPE) +
512 methodBody(SETTER, name, name, EIGHT_SPACE_INDENTATION, null,
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530513 null, false, null) + methodClose(FOUR_SPACE);
Bharat saraswal022dae92016-03-04 20:08:09 +0530514 }
515
516 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530517 * Returns the getter method strings for interface file.
518 *
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530519 * @param yangName name of the attribute
520 * @param returnType return type of attribute
521 * @param isList is list attribute
522 * @param genType generated java files
523 * @param annotation compiler annotation
Vinod Kumar S08710982016-03-03 19:55:30 +0530524 * @return getter method for interface
Bharat saraswal97459962016-02-20 21:57:16 +0530525 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530526 static String getGetterForInterface(String yangName, String returnType,
527 boolean isList,
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530528 int genType,
529 YangCompilerAnnotation annotation) {
Bharat saraswal022dae92016-03-04 20:08:09 +0530530 if (!isList) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530531 return getGetterInterfaceString(returnType, yangName,
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530532 genType);
Bharat saraswal022dae92016-03-04 20:08:09 +0530533 }
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530534 String listAttr = getListAttribute(returnType, annotation);
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530535 return getGetterInterfaceString(listAttr, yangName, genType);
Bharat saraswal022dae92016-03-04 20:08:09 +0530536 }
537
538 /**
539 * Returns getter for attribute in interface.
540 *
541 * @param returnType return type
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530542 * @param yangName attribute name
Bharat saraswal022dae92016-03-04 20:08:09 +0530543 * @return getter for interface
544 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530545 private static String getGetterInterfaceString(String returnType,
546 String yangName,
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530547 int genType) {
548 switch (genType) {
549 case GENERATE_SERVICE_AND_MANAGER:
550 return getGetMethodWithArgument(returnType, yangName);
551 default:
552 return methodSignature(yangName, EMPTY_STRING, null,
553 null, returnType, null, INTERFACE_TYPE);
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530554 }
Bharat saraswal97459962016-02-20 21:57:16 +0530555 }
556
557 /**
558 * Returns the setter method strings for interface file.
559 *
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530560 * @param attrName name of the attribute
561 * @param attrType return type of attribute
562 * @param className name of the java class being generated
563 * @param isList is list attribute
564 * @param genType generated java files
565 * @param annotation compiler annotations
Vinod Kumar S08710982016-03-03 19:55:30 +0530566 * @return setter method for interface
Bharat saraswal97459962016-02-20 21:57:16 +0530567 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530568 static String getSetterForInterface(String attrName, String attrType,
569 String className,
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530570 boolean isList, int genType,
571 YangCompilerAnnotation annotation) {
Bharat saraswal022dae92016-03-04 20:08:09 +0530572 if (!isList) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530573 return getSetterInterfaceString(className, attrName, attrType,
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530574 genType);
Bharat saraswal022dae92016-03-04 20:08:09 +0530575 }
Vidyashree Ramab3670472016-08-06 15:49:56 +0530576
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530577 String listAttr = getListAttribute(attrType, annotation);
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530578 return getSetterInterfaceString(className, attrName, listAttr, genType);
Bharat saraswal022dae92016-03-04 20:08:09 +0530579 }
580
581 /**
582 * Returns setter string for interface.
583 *
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530584 * @param name class name
585 * @param attrName attribute name
586 * @param attrType attribute type
Bharat saraswal022dae92016-03-04 20:08:09 +0530587 * @return setter string
588 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530589 private static String getSetterInterfaceString(String name,
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530590 String attrName,
591 String attrType,
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530592 int genType) {
593 if (genType == GENERATE_SERVICE_AND_MANAGER) {
594 return methodSignature(getCapitalCase(attrName),
595 SET_METHOD_PREFIX,
596 null, attrName, VOID, attrType +
597 OP_PARAM, INTERFACE_TYPE);
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530598 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530599 return methodSignature(attrName, EMPTY_STRING, null,
600 attrName, name + BUILDER, attrType, INTERFACE_TYPE);
Bharat saraswal022dae92016-03-04 20:08:09 +0530601 }
602
603 /**
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530604 * Returns return type for attribute.
605 *
606 * @param attr attribute info
607 * @return return type
608 */
609 private static String getReturnType(JavaAttributeInfo attr) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530610 String returnType;
611 StringBuilder builder = new StringBuilder();
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530612 if (attr.isQualifiedName() &&
613 attr.getImportInfo().getPkgInfo() != null) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530614 returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530615 builder.append(returnType);
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530616 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530617 returnType = attr.getImportInfo().getClassInfo();
618 builder.append(returnType);
619 return builder.toString();
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530620 }
621
622 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530623 * Returns the build method strings for interface file.
624 *
Vinod Kumar S08710982016-03-03 19:55:30 +0530625 * @param yangName name of the interface
626 * @return build method for interface
Bharat saraswal97459962016-02-20 21:57:16 +0530627 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530628 static String getBuildForInterface(String yangName) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530629 return methodSignature(BUILD, EMPTY_STRING, null, null,
630 yangName, null, INTERFACE_TYPE);
Bharat saraswal97459962016-02-20 21:57:16 +0530631 }
632
633 /**
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530634 * Returns constructor string for impl class.
635 *
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530636 * @param yangName class name
637 * @param isRootNode if root node
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530638 * @return constructor string
639 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530640 static String getConstructorStart(String yangName,
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530641 boolean isRootNode) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530642 StringBuilder builder = new StringBuilder(
643 getConstructorString(yangName));
Bharat saraswal8beac342016-08-04 02:00:03 +0530644
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530645 String name = getCapitalCase(yangName);
646 String returnType = DEFAULT_CAPS + name;
Bharat saraswal8beac342016-08-04 02:00:03 +0530647 if (isRootNode) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530648 returnType = name + OP_PARAM;
Bharat saraswal8beac342016-08-04 02:00:03 +0530649 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530650 builder.append(methodSignature(
651 returnType, EMPTY_STRING, PROTECTED, BUILDER_LOWER_CASE + OBJECT,
652 null, name + BUILDER, CLASS_TYPE));
653 return builder.toString();
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530654 }
655
656 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530657 * Returns the constructor strings for class file.
658 *
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530659 * @param attr attribute info
660 * @param genType generated java files
Bharat saraswal97459962016-02-20 21:57:16 +0530661 * @return constructor for class
662 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530663 public static String getConstructor(JavaAttributeInfo attr, int genType) {
664 String attrName = attr.getAttributeName();
665 String attrCaps = getCapitalCase(attrName);
666 switch (genType) {
667 case GENERATE_SERVICE_AND_MANAGER:
668 return methodBody(MethodBodyTypes.CONSTRUCTOR, attrName,
669 attrCaps, EIGHT_SPACE_INDENTATION, GET, null,
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530670 false, null);
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530671 default:
672 return methodBody(MethodBodyTypes.CONSTRUCTOR, attrName,
673 attrName, EIGHT_SPACE_INDENTATION, EMPTY_STRING,
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530674 null, false, null);
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530675 }
Bharat saraswal97459962016-02-20 21:57:16 +0530676 }
677
678 /**
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530679 * Returns the rpc strings for service interface.
680 *
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530681 * @param rpcName name of the rpc
682 * @param input name of input
683 * @param output name of output
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530684 * @return rpc method string
685 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530686 public static String getRpcServiceMethod(String rpcName, String input,
687 String output) {
Bharat saraswal0663aff2016-10-18 23:16:14 +0530688 String inputVal = null;
689 if (input != null) {
690 inputVal = RPC_INPUT_VAR_NAME;
691 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530692 return methodSignature(rpcName, EMPTY_STRING, null,
693 inputVal, output, input, INTERFACE_TYPE) +
694 NEW_LINE;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530695 }
696
697 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530698 * Returns the build method strings for class file.
699 *
Bharat saraswal8beac342016-08-04 02:00:03 +0530700 * @param yangName class name
701 * @param isRootNode if root node
Vinod Kumar S08710982016-03-03 19:55:30 +0530702 * @return build method string for class
Bharat saraswal97459962016-02-20 21:57:16 +0530703 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530704 static String getBuild(String yangName, boolean isRootNode) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530705 String type = DEFAULT_CAPS + yangName;
Bharat saraswal8beac342016-08-04 02:00:03 +0530706 if (isRootNode) {
707 type = yangName + OP_PARAM;
708 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530709 return methodSignature(BUILD, EMPTY_STRING, PUBLIC, null,
710 yangName, null,
711 CLASS_TYPE) +
712 methodBody(MethodBodyTypes.BUILD, type, BUILD,
713 EIGHT_SPACE_INDENTATION, EMPTY_STRING,
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530714 null, false, null) +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530715 methodClose(FOUR_SPACE);
Bharat saraswal97459962016-02-20 21:57:16 +0530716 }
717
718 /**
719 * Returns the Default constructor strings for class file.
720 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530721 * @param name name of the class
Bharat saraswal022dae92016-03-04 20:08:09 +0530722 * @param modifierType modifier type for default constructor
Bharat saraswal97459962016-02-20 21:57:16 +0530723 * @return Default constructor for class
724 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530725 private static String getDefaultConstructor(String name,
726 String modifierType) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530727 return methodSignature(name, EMPTY_STRING, modifierType, null,
728 null, null, CLASS_TYPE) +
729 methodClose(FOUR_SPACE);
Bharat saraswal97459962016-02-20 21:57:16 +0530730 }
731
Bharat saraswal022dae92016-03-04 20:08:09 +0530732 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530733 * Returns to string method's open strings.
Bharat saraswal022dae92016-03-04 20:08:09 +0530734 *
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530735 * @return string method's open string
Bharat saraswal022dae92016-03-04 20:08:09 +0530736 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530737 static String getToStringMethodOpen() {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530738 StringBuilder builder = new StringBuilder(getOverRideString());
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530739 builder.append(methodSignature(TO_STRING_METHOD, EMPTY_STRING,
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530740 PUBLIC, null, STRING_DATA_TYPE, null,
741 CLASS_TYPE));
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530742 builder.append(getReturnString(GOOGLE_MORE_OBJECT_METHOD_STRING,
743 EIGHT_SPACE_INDENTATION)).append(NEW_LINE)
744 .append(getOmitNullValueString());
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530745 return builder.toString();
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530746 }
747
748 /**
749 * Returns to string method's close string.
Bharat saraswal022dae92016-03-04 20:08:09 +0530750 *
751 * @return to string method close string
752 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530753 static String getToStringMethodClose() {
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530754 return TWELVE_SPACE_INDENTATION + PERIOD + TO_STRING_METHOD +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530755 brackets(OPEN_CLOSE_BRACKET, null, null) + signatureClose() +
756 methodClose(FOUR_SPACE);
Bharat saraswal022dae92016-03-04 20:08:09 +0530757 }
758
759 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530760 * Returns to string method for class.
Bharat saraswal022dae92016-03-04 20:08:09 +0530761 *
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530762 * @param attr java attribute
763 * @return to string method for class
Bharat saraswal022dae92016-03-04 20:08:09 +0530764 */
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530765 public static String getToStringMethod(JavaAttributeInfo attr) {
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530766 return methodBody(TO_STRING, attr.getAttributeName(), null,
767 TWELVE_SPACE_INDENTATION, null, null, false, null);
Bharat saraswal022dae92016-03-04 20:08:09 +0530768 }
769
770 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530771 * Returns from string method's open string.
772 *
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530773 * @param className name of the class
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530774 * @return from string method's open string
775 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530776 static String getFromStringMethodSignature(String className) {
777 return getJavaDoc(FROM_METHOD, className, false, null) +
778 methodSignature(FROM_STRING_METHOD_NAME, EMPTY_STRING, PUBLIC +
779 SPACE + STATIC, FROM_STRING_PARAM_NAME,
780 className, STRING_DATA_TYPE,
781 CLASS_TYPE);
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530782 }
783
784 /**
785 * Return from string method's close string.
786 *
787 * @return from string method's close string
788 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530789 static String getFromStringMethodClose() {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530790 return getReturnString(NULL, EIGHT_SPACE_INDENTATION) +
791 signatureClose() + methodClose(FOUR_SPACE);
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530792 }
793
794 /**
795 * Return from string method's body string.
796 *
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530797 * @param attr attribute info
798 * @param fromAttr attribute info for the from string wrapper
799 * type
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530800 * @return from string method's body string
801 */
802 public static String getFromStringMethod(JavaAttributeInfo attr,
Bharat saraswal0663aff2016-10-18 23:16:14 +0530803 JavaAttributeInfo fromAttr) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530804
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530805 return EIGHT_SPACE_INDENTATION + getTrySubString() +
806 getNewLineAndSpace(TWELVE_SPACE_INDENTATION) +
Bharat saraswal0663aff2016-10-18 23:16:14 +0530807 getParsedSubString(attr, fromAttr) +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530808 getReturnOfSubString() + EIGHT_SPACE_INDENTATION +
809 getCatchSubString() +
810 getNewLineAndSpace(EIGHT_SPACE_INDENTATION) +
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530811 CLOSE_CURLY_BRACKET;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530812 }
813
814 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530815 * Returns sub string with parsed statement for union's from string method.
816 *
817 * @param attr attribute info
818 * @return sub string with parsed statement for union's from string method
819 */
820 private static String getParsedSubString(JavaAttributeInfo attr,
Bharat saraswal0663aff2016-10-18 23:16:14 +0530821 JavaAttributeInfo fromStringAttr) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530822
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530823 String targetDataType = getReturnType(attr);
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530824 YangDataTypes types = fromStringAttr.getAttributeType()
825 .getDataType();
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530826 StringBuilder method = new StringBuilder();
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530827 switch (types) {
828 case BITS:
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530829 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL +
Bharat saraswal0663aff2016-10-18 23:16:14 +0530830 SPACE + getCapitalCase(attr.getAttributeName()) +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530831 PERIOD + FROM_STRING_METHOD_NAME +
Bharat saraswal0663aff2016-10-18 23:16:14 +0530832 getOpenCloseParaWithValue(FROM_STRING_PARAM_NAME) +
833 signatureClose();
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530834 case BINARY:
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530835 return method.append(targetDataType).append(SPACE).append(TMP_VAL)
836 .append(SPACE).append(EQUAL).append(SPACE).append(
837 geStringConverterForBinary(FROM_STRING_PARAM_NAME))
838 .append(signatureClose()).toString();
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530839 default:
840 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530841 SPACE + getParseFromStringMethod(
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530842 targetDataType, fromStringAttr.getAttributeType()) +
Bharat saraswal0663aff2016-10-18 23:16:14 +0530843 getOpenCloseParaWithValue(FROM_STRING_PARAM_NAME) +
844 signatureClose();
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +0530845 }
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530846 }
847
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530848 /**
Bharat saraswal94844d62016-10-13 13:28:03 +0530849 * Returns from string converter for binary type.
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530850 *
851 * @param var variable name
852 * @return to string method body
853 */
854 private static String geStringConverterForBinary(String var) {
855 StringBuilder builder = new StringBuilder();
856 return builder.append(BASE64).append(PERIOD)
857 .append(GET_DECODER).append(OPEN_CLOSE_BRACKET_STRING).append(PERIOD)
Bharat saraswal0663aff2016-10-18 23:16:14 +0530858 .append(DECODE).append(getOpenCloseParaWithValue(var)).toString();
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530859 }
860
861 /**
Bharat saraswal94844d62016-10-13 13:28:03 +0530862 * Returns to string converter for binary type.
863 *
864 * @param var variable name
865 * @return to string method body
866 */
867 private static String getToStringForBinary(String var) {
868 StringBuilder builder = new StringBuilder();
869 return builder.append(BASE64).append(PERIOD)
870 .append(GET_ENCODER).append(OPEN_CLOSE_BRACKET_STRING)
871 .append(PERIOD).append(ENCODE_TO_STRING)
Bharat saraswal0663aff2016-10-18 23:16:14 +0530872 .append(getOpenCloseParaWithValue(var)).toString();
Bharat saraswal94844d62016-10-13 13:28:03 +0530873 }
874
875 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530876 * Returns hash code method open strings.
Bharat saraswal022dae92016-03-04 20:08:09 +0530877 *
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530878 * @return hash code method open string
Bharat saraswal022dae92016-03-04 20:08:09 +0530879 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530880 static String getHashCodeMethodOpen() {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530881 String line;
882 StringBuilder builder = new StringBuilder(getOverRideString());
883 builder.append(methodSignature(HASH_CODE_STRING, EMPTY_STRING, PUBLIC,
884 null, INT, null, CLASS_TYPE));
885 line = getReturnString(OBJECT_STRING + SUFFIX_S + PERIOD + HASH +
886 OPEN_PARENTHESIS, EIGHT_SPACE_INDENTATION);
887 builder.append(line);
888 return builder.toString();
Bharat saraswal022dae92016-03-04 20:08:09 +0530889 }
890
891 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530892 * Returns hash code methods close string.
Bharat saraswal022dae92016-03-04 20:08:09 +0530893 *
894 * @param hashcodeString hash code string
895 * @return to hash code method close string
896 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530897 static String getHashCodeMethodClose(String hashcodeString) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530898 String[] array = {SPACE, COMMA};
899 hashcodeString = trimAtLast(hashcodeString, array);
900 return hashcodeString + CLOSE_PARENTHESIS + signatureClose() +
901 methodClose(FOUR_SPACE);
Bharat saraswal022dae92016-03-04 20:08:09 +0530902 }
903
904 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530905 * Returns hash code method for class.
Bharat saraswal022dae92016-03-04 20:08:09 +0530906 *
907 * @param attr attribute info
908 * @return hash code method
909 */
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530910 public static String getHashCodeMethod(JavaAttributeInfo attr) {
janani b703cfe42016-05-17 13:12:22 +0530911 return attr.getAttributeName() + COMMA + SPACE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530912 }
913
914 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530915 * Returns equals method open strings.
Bharat saraswal022dae92016-03-04 20:08:09 +0530916 *
917 * @param className class name
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530918 * @return equals method open string
Bharat saraswal022dae92016-03-04 20:08:09 +0530919 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530920 static String getEqualsMethodOpen(String className) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530921 return getOverRideString() +
922 methodSignature(EQUALS_STRING, EMPTY_STRING, PUBLIC, OBJ,
923 BOOLEAN_DATA_TYPE, OBJECT_STRING,
924 CLASS_TYPE) +
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530925 getEqualsMethodsCommonIfCondition() +
926 getEqualsMethodsSpecificIfCondition(className);
Bharat saraswal022dae92016-03-04 20:08:09 +0530927 }
928
929 /**
930 * Returns equal methods if condition string.
931 *
932 * @return if condition string
933 */
934 private static String getEqualsMethodsCommonIfCondition() {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530935 return getIfConditionBegin(EIGHT_SPACE_INDENTATION, THIS + SPACE +
936 EQUAL + EQUAL + SPACE + OBJ) + getReturnString(
937 TRUE, TWELVE_SPACE_INDENTATION) + signatureClose()
938 + methodClose(EIGHT_SPACE);
Bharat saraswal022dae92016-03-04 20:08:09 +0530939 }
940
941 /**
942 * Returns if condition for specific class object in equals method.
943 *
944 * @param className class name
945 * @return if condition string
946 */
947 private static String getEqualsMethodsSpecificIfCondition(String className) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530948 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + OBJ +
949 INSTANCE_OF + className + CLOSE_PARENTHESIS + SPACE +
950 OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION +
951 className + SPACE + OTHER + SPACE + EQUAL + SPACE +
952 OPEN_PARENTHESIS + className + CLOSE_PARENTHESIS + SPACE + OBJ +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530953 SEMI_COLON + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN +
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530954 NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530955 }
956
957 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530958 * Returns equals methods close string.
Bharat saraswal022dae92016-03-04 20:08:09 +0530959 *
960 * @param equalMethodString equal method string
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530961 * @return equals method close string
Bharat saraswal022dae92016-03-04 20:08:09 +0530962 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530963 static String getEqualsMethodClose(String equalMethodString) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530964 String[] array = {NEW_LINE, AND, AND, SPACE};
965 equalMethodString = trimAtLast(equalMethodString, array) +
966 signatureClose();
967 return equalMethodString + methodClose(EIGHT_SPACE) +
968 getReturnString(FALSE, EIGHT_SPACE_INDENTATION) +
969 signatureClose() + methodClose(FOUR_SPACE);
Bharat saraswal022dae92016-03-04 20:08:09 +0530970 }
971
972 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530973 * Returns equals method for class.
Bharat saraswal022dae92016-03-04 20:08:09 +0530974 *
975 * @param attr attribute info
976 * @return equals method
977 */
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530978 public static String getEqualsMethod(JavaAttributeInfo attr) {
janani b703cfe42016-05-17 13:12:22 +0530979 String attributeName = attr.getAttributeName();
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530980 return SIXTEEN_SPACE_INDENTATION + OBJECT_STRING + SUFFIX_S +
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530981 PERIOD + EQUALS_STRING + OPEN_PARENTHESIS + attributeName +
982 COMMA + SPACE + OTHER + PERIOD + attributeName +
983 CLOSE_PARENTHESIS + SPACE + AND + AND;
Bharat saraswal022dae92016-03-04 20:08:09 +0530984 }
985
986 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530987 * Returns of method's string and java doc for special type.
988 *
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530989 * @param attr attribute info
990 * @param className class name
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530991 * @return of method's string and java doc for special type
992 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530993 public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr,
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530994 String className) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530995 String attrType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530996 String attrName = attr.getAttributeName();
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530997
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530998 return getJavaDoc(OF_METHOD, className + FOR_TYPE_STRING + attrName,
999 false, null) + getOfMethodString(attrType, className);
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301000 }
1001
1002 /**
1003 * Returns of method's string.
1004 *
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301005 * @param type data type
1006 * @param name class name
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301007 * @return of method's string
1008 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301009 private static String getOfMethodString(String type, String name) {
1010 return methodSignature(OF, EMPTY_STRING, PUBLIC + SPACE + STATIC,
1011 VALUE, name, type, CLASS_TYPE) +
1012 methodBody(MethodBodyTypes.OF_METHOD, name, null,
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301013 EIGHT_SPACE_INDENTATION, EMPTY_STRING, null, false, null) +
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301014 methodClose(FOUR_SPACE);
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301015 }
1016
1017 /**
1018 * Returns string and java doc for constructor of type class.
1019 *
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301020 * @param attr attribute info
1021 * @param className class name
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301022 * @param genType generate file type
1023 * @param count type count
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301024 * @return string and java doc for constructor of type class
1025 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301026 public static String getTypeConstructorStringAndJavaDoc(
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301027 JavaAttributeInfo attr, String className, int genType, int count) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301028 String attrType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +05301029 String attrName = attr.getAttributeName();
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301030 return getJavaDoc(TYPE_CONSTRUCTOR, attrName, false, null) +
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301031 getTypeConstructorString(attrType, attrName, className,
1032 genType, count);
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301033 }
1034
1035 /**
Bharat saraswal64e7e232016-07-14 23:33:55 +05301036 * Returns string and java doc for constructor of type class.
1037 *
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301038 * @param attr1 first attribute info
1039 * @param attr2 second attribute info
1040 * @param genType class name
1041 * @param type conflict validate type
1042 * @param addFirst whether int came first or uInt came first
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301043 * @param count type count
Bharat saraswal64e7e232016-07-14 23:33:55 +05301044 * @return string and java doc for constructor of type class
1045 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301046 public static String getTypeConstructorStringAndJavaDoc(
1047 JavaAttributeInfo attr1, JavaAttributeInfo attr2, String genType,
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301048 ValidatorTypeForUnionTypes type, boolean addFirst, int count) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +05301049
Bharat saraswal64e7e232016-07-14 23:33:55 +05301050 String attrType = getReturnType(attr1);
1051 String attrName1 = "";
1052 String attrName2 = "";
1053 if (attr1 != null) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301054 if (addFirst) {
1055 attrName1 = attr1.getAttributeName();
1056 } else {
1057 attrName2 = attr1.getAttributeName();
1058 }
Bharat saraswal64e7e232016-07-14 23:33:55 +05301059 }
1060 if (attr2 != null) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301061 if (addFirst) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301062 attrName2 = attr2.getAttributeName();
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301063 } else {
1064 attrName1 = attr2.getAttributeName();
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301065 }
Bharat saraswal64e7e232016-07-14 23:33:55 +05301066 }
1067
Vidyashree Ramab3670472016-08-06 15:49:56 +05301068 String appDataStructure = null;
Bharat saraswal2da23bf2016-08-25 15:28:39 +05301069 if (attr1 != null && attr1.getCompilerAnnotation() != null) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301070 appDataStructure =
1071 attr1.getCompilerAnnotation().getYangAppDataStructure()
1072 .getDataStructure().name();
Vidyashree Ramab3670472016-08-06 15:49:56 +05301073 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301074 String doc;
1075 if (attrName1.isEmpty()) {
1076 doc = attrName2;
1077 } else {
1078 doc = attrName1;
1079 }
1080 return getJavaDoc(TYPE_CONSTRUCTOR, doc, false, appDataStructure) +
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301081 getTypeConstructorString(attrType, attrName1,
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301082 attrName2, genType,
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301083 type, addFirst, count);
Bharat saraswal64e7e232016-07-14 23:33:55 +05301084 }
1085
1086 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301087 * Returns type constructor string.
1088 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301089 * @param type data type
1090 * @param name attribute name
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301091 * @param className class name
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301092 * @param genType generated file type
1093 * @param count type count
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301094 * @return type constructor string
1095 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301096 private static String getTypeConstructorString(String type, String name,
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301097 String className, int genType, int count) {
1098 StringBuilder builder = new StringBuilder();
1099 builder.append(
1100 methodSignature(className, EMPTY_STRING, PUBLIC, name,
1101 null, type, CLASS_TYPE));
1102 if (genType == GENERATE_UNION_CLASS) {
1103 builder.append(EIGHT_SPACE_INDENTATION).append(SET_VALUE_PARA)
1104 .append(PERIOD).append(SET_METHOD_PREFIX).append(
Bharat saraswal0663aff2016-10-18 23:16:14 +05301105 getOpenCloseParaWithValue(count + EMPTY_STRING))
1106 .append(signatureClose());
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301107 }
1108 builder.append(methodBody(SETTER, name, null, EIGHT_SPACE_INDENTATION,
1109 EMPTY_STRING, null, false, null))
1110 .append(methodClose(FOUR_SPACE));
1111 return builder.toString();
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301112 }
1113
1114 /**
Bharat saraswal64e7e232016-07-14 23:33:55 +05301115 * Returns type constructor string.
1116 *
1117 * @param type data type
1118 * @param attr1 attribute attr1
1119 * @param className class attr1
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301120 * @param count type count
Bharat saraswal64e7e232016-07-14 23:33:55 +05301121 * @return type constructor string
1122 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301123 private static String getTypeConstructorString(
1124 String type, String attr1, String attr2, String className,
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301125 ValidatorTypeForUnionTypes validatorType, boolean addInt, int count) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301126 StringBuilder constructor = new StringBuilder(
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301127 methodSignature(className, EMPTY_STRING, PUBLIC, attr1,
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301128 null, type, CLASS_TYPE))
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301129 .append(EIGHT_SPACE_INDENTATION).append(SET_VALUE_PARA)
1130 .append(PERIOD).append(SET_METHOD_PREFIX).append(
Bharat saraswal0663aff2016-10-18 23:16:14 +05301131 getOpenCloseParaWithValue(count + EMPTY_STRING))
1132 .append(signatureClose())
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301133 .append(ifConditionForIntInTypeDefConstructor(validatorType,
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301134 addInt, attr1))
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301135 .append(methodBody(SETTER, attr1, null,
1136 TWELVE_SPACE_INDENTATION, EMPTY_STRING,
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301137 null, false, attr1));
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301138 String str = EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + SPACE +
1139 ELSE + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1140 constructor.append(str)
1141 .append(methodBody(SETTER, attr2, null,
1142 TWELVE_SPACE_INDENTATION, EMPTY_STRING,
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301143 null, false, attr1))
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301144 .append(methodClose(FOUR_SPACE))
1145 .append(methodClose(EIGHT_SPACE));
Bharat saraswal64e7e232016-07-14 23:33:55 +05301146
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301147 return constructor.toString();
Bharat saraswal64e7e232016-07-14 23:33:55 +05301148 }
1149
1150 /**
Bharat saraswal8beac342016-08-04 02:00:03 +05301151 * Returns interface of add augmentation.
1152 *
Bharat saraswal94844d62016-10-13 13:28:03 +05301153 * @param className class name
Bharat saraswal8beac342016-08-04 02:00:03 +05301154 * @return interface of add augmentation
1155 */
Bharat saraswal94844d62016-10-13 13:28:03 +05301156 static String getAddAugmentInfoMethodInterface(String className) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301157 StringBuilder builder = new StringBuilder(generateForAddAugmentation());
1158 LinkedHashMap<String, String> map = new LinkedHashMap<>();
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301159 map.put(VALUE, OBJECT_STRING);
1160 map.put(CLASS + OBJECT_STRING, CLASS_STRING);
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301161 builder.append(multiAttrMethodSignature(ADD_STRING + YANG_AUGMENTED_INFO,
1162 EMPTY_STRING, EMPTY_STRING,
Bharat saraswal94844d62016-10-13 13:28:03 +05301163 className, map, INTERFACE_TYPE));
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301164 return builder.toString();
Bharat saraswal8beac342016-08-04 02:00:03 +05301165 }
1166
1167 /**
Bharat saraswalaf413b82016-07-14 15:18:20 +05301168 * Returns implementation of add augmentation.
1169 *
Bharat saraswal94844d62016-10-13 13:28:03 +05301170 * @param className class name
Bharat saraswalaf413b82016-07-14 15:18:20 +05301171 * @return implementation of add augmentation
1172 */
Bharat saraswal94844d62016-10-13 13:28:03 +05301173 static String getAddAugmentInfoMethodImpl(String className) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301174 StringBuilder builder = new StringBuilder(getOverRideString());
1175 LinkedHashMap<String, String> map = new LinkedHashMap<>();
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301176 map.put(VALUE, OBJECT_STRING);
1177 map.put(CLASS + OBJECT_STRING, CLASS_STRING);
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301178 builder.append(multiAttrMethodSignature(ADD_STRING + YANG_AUGMENTED_INFO,
1179 EMPTY_STRING, PUBLIC,
Bharat saraswal94844d62016-10-13 13:28:03 +05301180 className, map, CLASS_TYPE))
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301181 .append(methodBody(AUGMENTED_MAP_ADD, null, null,
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301182 EIGHT_SPACE_INDENTATION, null, null, false, null))
Bharat saraswal94844d62016-10-13 13:28:03 +05301183 .append(getReturnString(THIS, EIGHT_SPACE_INDENTATION))
1184 .append(signatureClose())
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301185 .append(methodClose(FOUR_SPACE))
1186 .append(NEW_LINE);
1187 return builder.toString();
Bharat saraswalaf413b82016-07-14 15:18:20 +05301188 }
1189
1190 /**
Bharat saraswal8beac342016-08-04 02:00:03 +05301191 * Returns interface of get YANG augment info.
Bharat saraswalaf413b82016-07-14 15:18:20 +05301192 *
Bharat saraswal8beac342016-08-04 02:00:03 +05301193 * @return interface of get YANG augment info
Bharat saraswalaf413b82016-07-14 15:18:20 +05301194 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301195 static String getYangAugmentInfoInterface() {
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301196 return generateForGetAugmentation() +
1197 methodSignature(YANG_AUGMENTED_INFO_LOWER_CASE, EMPTY_STRING,
1198 null, CLASS + OBJECT_STRING,
1199 OBJECT_STRING, CLASS_STRING, INTERFACE_TYPE);
Bharat saraswal8beac342016-08-04 02:00:03 +05301200 }
Bharat saraswalaf413b82016-07-14 15:18:20 +05301201
Bharat saraswal8beac342016-08-04 02:00:03 +05301202 /**
1203 * Returns implementation of get YANG augment info.
1204 *
1205 * @return implementation of get YANG augment info
1206 */
1207 static String getYangAugmentInfoImpl() {
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301208 return getOverRideString() +
1209 methodSignature(YANG_AUGMENTED_INFO_LOWER_CASE, EMPTY_STRING,
1210 PUBLIC, CLASS + OBJECT_STRING, OBJECT_STRING,
1211 CLASS_STRING, CLASS_TYPE) +
1212 methodBody(AUGMENTED_MAP_GET_VALUE, null, null,
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301213 EIGHT_SPACE_INDENTATION, null, null, false, null) +
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301214 methodClose(FOUR_SPACE);
Bharat saraswalaf413b82016-07-14 15:18:20 +05301215 }
1216
1217 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +05301218 * Returns enum's constructor.
1219 *
1220 * @param className enum's class name
1221 * @return enum's constructor
1222 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301223 static String getEnumsConstructor(String className) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301224 StringBuilder builder = new StringBuilder();
1225 String clsName = getSmallCase(className);
1226 LinkedHashMap<String, String> map = new LinkedHashMap<>();
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301227 map.put(clsName, INT);
1228 map.put(SCHEMA_NAME, STRING_DATA_TYPE);
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301229 builder.append(multiAttrMethodSignature(className, EMPTY_STRING,
1230 EMPTY_STRING, null,
1231 map, CLASS_TYPE))
1232 .append(methodBody(SETTER, clsName, EMPTY_STRING,
1233 EIGHT_SPACE_INDENTATION, EMPTY_STRING,
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301234 EMPTY_STRING, false, null))
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301235 .append(methodBody(SETTER, SCHEMA_NAME, EMPTY_STRING,
1236 EIGHT_SPACE_INDENTATION, EMPTY_STRING,
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301237 EMPTY_STRING, false, null))
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301238 .append(methodClose(FOUR_SPACE));
1239
1240 return builder.toString();
Bharat saraswal68fa0d12016-04-19 01:00:16 +05301241 }
Bharat saraswal250a7472016-05-12 13:16:57 +05301242
1243 /**
1244 * Returns of method for enum class.
1245 *
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301246 * @param className class name
1247 * @param type method body type
Bharat saraswal250a7472016-05-12 13:16:57 +05301248 * @return of method
1249 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301250 static String getEnumsOfValueMethod(String className,
1251 YangEnumeration enumeration,
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301252 MethodBodyTypes type) {
1253 String name = getCapitalCase(className);
1254 StringBuilder builder = new StringBuilder(getJavaDoc(
1255 OF_METHOD, name + SPACE + FOR,
1256 false, null));
1257 //Switch statement.
Bharat saraswal0663aff2016-10-18 23:16:14 +05301258 String sw = EIGHT_SPACE_INDENTATION + SWITCH + SPACE +
1259 getOpenCloseParaWithValue(VALUE) +
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301260 methodSignatureClose(CLASS_TYPE);
Bharat saraswal748fc3c2016-09-06 16:38:20 +05301261 String str;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301262 switch (type) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301263 case ENUM_METHOD_INT_VALUE:
1264 builder.append(getEnumValueMethodSignature(name, INT))
1265 .append(sw);
1266 for (YangEnum yangEnum : enumeration.getEnumSet()) {
1267 str = getEnumJavaAttribute(yangEnum.getNamedValue())
1268 .toUpperCase();
1269 builder.append(getEnumValueMethodCases(
1270 EMPTY_STRING + yangEnum.getValue(), str, name));
1271 }
1272 break;
1273 case ENUM_METHOD_STRING_VALUE:
1274 builder.append(getEnumValueMethodSignature(name,
1275 STRING_DATA_TYPE))
1276 .append(sw);
1277 for (YangEnum yangEnum : enumeration.getEnumSet()) {
1278 str = getEnumJavaAttribute(yangEnum.getNamedValue())
1279 .toUpperCase();
1280 builder.append(getEnumValueMethodCases(
1281 QUOTES + yangEnum.getNamedValue() + QUOTES, str,
1282 name));
1283 }
1284 break;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301285 default:
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301286 return null;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301287 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301288
1289 String method = TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLON +
1290 NEW_LINE;
1291 builder.append(method)
1292 .append(getReturnString(NULL, SIXTEEN_SPACE_INDENTATION))
1293 .append(signatureClose())
1294 .append(methodClose(EIGHT_SPACE))
1295 .append(methodClose(FOUR_SPACE));
1296
1297 return builder.toString();
1298 }
1299
1300 /**
1301 * Returns enum value method signature.
1302 *
1303 * @param name method name
1304 * @param type param type
1305 * @return enum value method signature
1306 */
1307 private static String getEnumValueMethodSignature(String name, String type) {
1308 return methodSignature(OF, EMPTY_STRING, PUBLIC + SPACE +
1309 STATIC, VALUE, name, type, CLASS_TYPE);
1310 }
1311
1312 /**
1313 * Returns enum value method's cases.
1314 *
1315 * @param caseType case type
1316 * @param value return value
1317 * @param name name of class
1318 * @return enum value method's cases
1319 */
1320 private static String getEnumValueMethodCases(String caseType, String value,
1321 String name) {
1322 return TWELVE_SPACE_INDENTATION + CASE + SPACE + caseType +
1323 COLON + NEW_LINE + getReturnString(name,
1324 SIXTEEN_SPACE_INDENTATION) +
1325 PERIOD + value + signatureClose();
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301326 }
Bharat saraswald14cbe82016-07-14 13:26:18 +05301327
1328 /**
Bharat saraswalaf413b82016-07-14 15:18:20 +05301329 * Returns augmented data getter and setter methods for service class.
1330 *
1331 * @param parent parent node
1332 * @return augmented data getter and setter methods for service class
1333 */
Bharat saraswal039f59c2016-07-14 21:57:13 +05301334 static String getAugmentsDataMethodForService(YangNode parent) {
Bharat saraswalaf413b82016-07-14 15:18:20 +05301335 List<YangAtomicPath> targets = getSetOfNodeIdentifiers(parent);
Bharat saraswal94844d62016-10-13 13:28:03 +05301336 if (targets.isEmpty()) {
1337 return EMPTY_STRING;
1338 }
1339 YangNode first = targets.get(0).getResolvedNode();
1340 //If target path is for notification then no need to generate get/set
1341 // for that augment in service class.
Bharat saraswal0663aff2016-10-18 23:16:14 +05301342 if (first instanceof InvalidOpTypeHolder) {
Bharat saraswal94844d62016-10-13 13:28:03 +05301343 return EMPTY_STRING;
1344 }
Bharat saraswalaf413b82016-07-14 15:18:20 +05301345 YangNode augmentedNode;
1346 String curNodeName;
1347 String method;
1348 StringBuilder methods = new StringBuilder();
1349 String parentName;
1350 String returnType;
Bharat saraswal64e7e232016-07-14 23:33:55 +05301351 YangNode methodNode;
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301352 YangPluginConfig pluginConfig =
1353 ((JavaFileInfoContainer) parent).getJavaFileInfo()
1354 .getPluginConfig();
Bharat saraswalaf413b82016-07-14 15:18:20 +05301355 for (YangAtomicPath nodeId : targets) {
Bharat saraswal039f59c2016-07-14 21:57:13 +05301356 augmentedNode = nodeId.getResolvedNode().getParent();
Bharat saraswal64e7e232016-07-14 23:33:55 +05301357 methodNode = nodeId.getResolvedNode();
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301358 if (((JavaFileInfoContainer) methodNode).getJavaFileInfo()
1359 .getJavaName() != null) {
1360 curNodeName =
1361 ((JavaFileInfoContainer) methodNode).getJavaFileInfo()
1362 .getJavaName();
Bharat saraswalaf413b82016-07-14 15:18:20 +05301363 } else {
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301364 curNodeName = getCapitalCase(
1365 getCamelCase(methodNode.getName(),
1366 pluginConfig.getConflictResolver()));
Bharat saraswalaf413b82016-07-14 15:18:20 +05301367 }
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301368 returnType =
1369 getAugmentedClassNameForDataMethods(augmentedNode, parent);
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301370 parentName = getCurNodeName(augmentedNode,
1371 pluginConfig);
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301372 method = generateForGetMethodWithAttribute(returnType) +
1373 getGetMethodWithArgument(returnType, AUGMENTED +
1374 parentName + getCapitalCase(curNodeName)) + NEW_LINE;
Bharat saraswalaf413b82016-07-14 15:18:20 +05301375 methods.append(method);
1376
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301377 method = getJavaDoc(MANAGER_SETTER_METHOD,
1378 AUGMENTED + getCapitalCase(parentName) +
1379 getCapitalCase(curNodeName), false,
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301380 null) +
Bharat saraswalaf413b82016-07-14 15:18:20 +05301381 getSetterForInterface(getSmallCase(AUGMENTED) + parentName +
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301382 getCapitalCase(curNodeName),
1383 returnType, parentName, false,
1384 GENERATE_SERVICE_AND_MANAGER, null) +
1385 NEW_LINE;
Bharat saraswalaf413b82016-07-14 15:18:20 +05301386 methods.append(method);
1387 }
1388 return methods.toString();
1389 }
1390
1391 /**
Bharat saraswal64e7e232016-07-14 23:33:55 +05301392 * Returns validator method for range in union class.
1393 *
1394 * @param type type
1395 * @return validator method for range in union class
1396 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301397 static String getRangeValidatorMethodForUnion(String type) {
Bharat saraswal64e7e232016-07-14 23:33:55 +05301398 String newType;
1399 if (type.contentEquals(BIG_INTEGER)) {
1400 newType = LONG;
1401 } else {
1402 newType = INT;
1403 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301404 StringBuilder builder = new StringBuilder(generateForValidatorMethod());
1405 String var = getSmallCase(BIG_INTEGER);
1406 LinkedHashMap<String, String> map = new LinkedHashMap<>();
1407 map.put(MIN_RANGE, type);
1408 map.put(MAX_RANGE, type);
1409 map.put(VALUE, newType);
1410 builder.append(multiAttrMethodSignature(VALIDATE_RANGE, EMPTY_STRING,
1411 PRIVATE, BOOLEAN_DATA_TYPE, map,
1412 CLASS_TYPE));
Bharat saraswal64e7e232016-07-14 23:33:55 +05301413 if (type.contentEquals(BIG_INTEGER)) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301414 //Create new instance of big integer.
1415 builder.append(getNewInstance(BIG_INTEGER, var, EIGHT_SPACE_INDENTATION,
1416 QUOTES + SPACE + QUOTES + SPACE +
1417 ADD + SPACE + VALUE))
1418 //Add return string.
1419 .append(getReturnString(var, EIGHT_SPACE_INDENTATION))
1420 //Add compareTo string
1421 .append(getCompareToString())
1422 //Add && condition.
1423 .append(ifAndAndCondition(
1424 //Add == condition
1425 ifEqualEqualCondition(
Bharat saraswal0663aff2016-10-18 23:16:14 +05301426 getOpenCloseParaWithValue(MIN_RANGE), ONE),
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301427 var))
1428 //Add compareTo string.
1429 .append(getCompareToString())
1430 //Add == condition.
1431 .append(ifEqualEqualCondition(
Bharat saraswal0663aff2016-10-18 23:16:14 +05301432 getOpenCloseParaWithValue(MAX_RANGE), ONE))
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301433 .append(signatureClose());
Bharat saraswal64e7e232016-07-14 23:33:55 +05301434 } else {
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301435 builder.append(getReturnString(VALUE, EIGHT_SPACE_INDENTATION))
1436 .append(getGreaterThanCondition())
1437 .append(ifAndAndCondition(MIN_RANGE, VALUE))
1438 .append(getLesserThanCondition())
1439 .append(MAX_RANGE)
1440 .append(signatureClose());
Bharat saraswal64e7e232016-07-14 23:33:55 +05301441 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301442 builder.append(methodClose(FOUR_SPACE));
1443 return builder.toString();
Bharat saraswal64e7e232016-07-14 23:33:55 +05301444 }
1445
Bharat saraswal8beac342016-08-04 02:00:03 +05301446 //Get method with arguments.
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301447 private static String getGetMethodWithArgument(String returnType,
1448 String yangName) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301449 return methodSignature(getCapitalCase(yangName), GET_METHOD_PREFIX,
1450 null, getSmallCase(returnType),
1451 returnType, returnType + OP_PARAM,
1452 INTERFACE_TYPE);
Bharat saraswal8beac342016-08-04 02:00:03 +05301453 }
Bharat saraswal64e7e232016-07-14 23:33:55 +05301454
Bharat saraswal8beac342016-08-04 02:00:03 +05301455 /**
1456 * Returns add to list method interface.
1457 *
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +05301458 * @param attr java attribute
1459 * @param className name of the class
Bharat saraswal8beac342016-08-04 02:00:03 +05301460 * @return add to list method interface
1461 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301462 public static String getAddToListMethodInterface(JavaAttributeInfo attr,
1463 String className) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301464
1465 return methodSignature(ADD_STRING + TO_CAPS + getCapitalCase(
1466 attr.getAttributeName()), EMPTY_STRING, EMPTY_STRING,
1467 ADD_STRING + TO_CAPS,
1468 className + BUILDER, getReturnType(attr),
1469 INTERFACE_TYPE);
Bharat saraswal8beac342016-08-04 02:00:03 +05301470 }
1471
1472 /**
1473 * Returns add to list method impl.
1474 *
Bharat saraswal94844d62016-10-13 13:28:03 +05301475 * @param attr java attribute
1476 * @param name class name
Bharat saraswal8beac342016-08-04 02:00:03 +05301477 * @return add to list method impl
1478 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301479 public static String getAddToListMethodImpl(JavaAttributeInfo attr,
Bharat saraswal94844d62016-10-13 13:28:03 +05301480 String name) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301481 String attrName = attr.getAttributeName();
Bharat saraswal94844d62016-10-13 13:28:03 +05301482 String retString = getOverRideString();
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301483 StringBuilder builder = new StringBuilder(retString);
1484 builder.append(methodSignature(ADD_STRING + TO_CAPS +
1485 getCapitalCase(attrName),
1486 EMPTY_STRING, PUBLIC, ADD_STRING + TO_CAPS,
1487 name + BUILDER, getReturnType(attr),
1488 CLASS_TYPE))
1489 .append(getIfConditionForAddToListMethod(attrName));
1490 retString = EIGHT_SPACE_INDENTATION + attrName + PERIOD + ADD_STRING +
1491 OPEN_PARENTHESIS + ADD_STRING + TO_CAPS + CLOSE_PARENTHESIS;
1492 builder.append(retString)
1493 .append(signatureClose())
1494 .append(getReturnString(THIS, EIGHT_SPACE_INDENTATION))
1495 .append(signatureClose())
1496 .append(methodClose(FOUR_SPACE));
1497 return builder.toString();
1498 }
1499
1500 // Returns if condition for add to list method.
1501 static String getIfConditionForAddToListMethod(String name) {
1502 return getIfConditionBegin(EIGHT_SPACE_INDENTATION, name + SPACE + EQUAL +
1503 EQUAL + SPACE + NULL) + TWELVE_SPACE_INDENTATION +
1504 name + SPACE + EQUAL + SPACE +
1505 NEW + SPACE + ARRAY_LIST + signatureClose() + methodClose(
1506 EIGHT_SPACE);
Bharat saraswal8beac342016-08-04 02:00:03 +05301507 }
1508
1509 /**
1510 * Returns builder method for class.
1511 *
1512 * @param name name of class
1513 * @return builder method for class
1514 */
1515 static String builderMethod(String name) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301516 return generateForBuilderMethod(name) +
1517 methodSignature(BUILDER_LOWER_CASE,
1518 EMPTY_STRING, PUBLIC + SPACE +
1519 STATIC, null, name + BUILDER, null, CLASS_TYPE) +
1520 getReturnString(NEW + SPACE + name + BUILDER,
1521 EIGHT_SPACE_INDENTATION) +
1522 brackets(OPEN_CLOSE_BRACKET, null, null) + signatureClose() +
1523 methodClose(FOUR_SPACE);
Bharat saraswal8beac342016-08-04 02:00:03 +05301524 }
1525
1526 /**
Bharat saraswal8beac342016-08-04 02:00:03 +05301527 * Returns is value set interface.
1528 *
1529 * @return is value set interface
1530 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301531 static String isLeafValueSetInterface() {
1532 String method = "\n /**\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301533 " * Checks if the leaf value is set.\n" +
1534 " *\n" +
1535 " * @param leaf leaf whose value status needs to checked\n" +
1536 " * @return result of leaf value set in object\n" +
1537 " */\n";
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301538 return method + methodSignature(VALUE_LEAF_SET, EMPTY_STRING, null,
1539 LEAF, BOOLEAN_DATA_TYPE,
1540 LEAF_IDENTIFIER, INTERFACE_TYPE);
Bharat saraswal8beac342016-08-04 02:00:03 +05301541 }
1542
1543 /**
1544 * Returns is select leaf set interface.
1545 *
1546 * @return is select leaf set interface
1547 */
1548 static String isSelectLeafSetInterface() {
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301549 String method = "\n /**\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301550 " * Checks if the leaf is set to be a selected leaf.\n" +
1551 " *\n" +
1552 " * @param leaf if leaf needs to be selected\n" +
1553 " * @return result of leaf value set in object\n" +
1554 " */\n";
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301555 return method + methodSignature(IS_SELECT_LEAF, EMPTY_STRING, null,
1556 LEAF, BOOLEAN_DATA_TYPE, LEAF_IDENTIFIER,
1557 INTERFACE_TYPE);
Bharat saraswal8beac342016-08-04 02:00:03 +05301558 }
1559
1560 /**
1561 * Returns set select leaf set interface.
1562 *
1563 * @param name node name
1564 * @return set select leaf set interface
1565 */
1566 static String setSelectLeafSetInterface(String name) {
1567 String method = " /**\n" +
1568 " * Set a leaf to be selected.\n" +
1569 " *\n" +
1570 " * @param leaf leaf needs to be selected\n" +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +05301571 " * @return builder object for select leaf\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301572 " */\n";
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301573 return method + methodSignature(SET_SELECT_LEAF, EMPTY_STRING,
1574 null, LEAF, name +
1575 BUILDER, LEAF_IDENTIFIER,
1576 INTERFACE_TYPE) + NEW_LINE;
Bharat saraswal8beac342016-08-04 02:00:03 +05301577 }
1578
1579 /**
1580 * Returns leaf identifier interface enum signature.
1581 *
1582 * @param name name of node
1583 * @return leaf identifier interface enum signature
1584 */
1585 static String getInterfaceLeafIdEnumSignature(String name) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +05301586 String start = "\n /**\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301587 " * Identify the leaf of " + name + PERIOD + NEW_LINE +
1588 " */\n";
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301589 return start + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + ENUM + SPACE +
1590 LEAF_IDENTIFIER + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
Bharat saraswal8beac342016-08-04 02:00:03 +05301591 }
1592
1593 /**
Bharat saraswal8beac342016-08-04 02:00:03 +05301594 * Returns setter for select leaf.
1595 *
Bharat saraswal94844d62016-10-13 13:28:03 +05301596 * @param name name of node
Bharat saraswal8beac342016-08-04 02:00:03 +05301597 * @return setter for select leaf
1598 */
Bharat saraswal94844d62016-10-13 13:28:03 +05301599 static String getSetterForSelectLeaf(String name) {
Bharat saraswal8beac342016-08-04 02:00:03 +05301600 return "\n" +
Bharat saraswal94844d62016-10-13 13:28:03 +05301601 " " + OVERRIDE + "\n" +
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301602 " public " + name + BUILDER +
1603 " selectLeaf(LeafIdentifier leaf) {\n" +
Bharat saraswal94844d62016-10-13 13:28:03 +05301604 " selectLeafFlags.set(leaf.getLeafIndex());\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301605 " return this;\n" +
1606 " }\n";
1607 }
Mahesh Poojary Huawei1025a172016-09-27 16:06:07 +05301608
1609 /**
1610 * Generates fromString code for bits.
1611 *
Mahesh Poojary Huawei1025a172016-09-27 16:06:07 +05301612 * @return generated fromString code for bits.
1613 */
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301614 private static String getFromStringForBits(String bitClassName) {
1615 StringBuilder sBuild = new StringBuilder();
1616 sBuild.append(methodSignature(FROM_STRING_METHOD_NAME, null,
1617 PUBLIC + SPACE + STATIC,
1618 FROM_STRING_PARAM_NAME,
1619 BIT_SET, STRING_DATA_TYPE, CLASS_TYPE))
1620 .append(EIGHT_SPACE_INDENTATION)
1621 .append(getBitSetAttr(EMPTY_STRING));
Mahesh Poojary Huawei1025a172016-09-27 16:06:07 +05301622 // Split the input string and check each bit name falls in configured yang file
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301623 sBuild.append(EIGHT_SPACE_INDENTATION).append(STRING_DATA_TYPE)
1624 .append(SQUARE_BRACKETS).append(SPACE).append(BIT_NAMES_VAR)
1625 .append(SPACE).append(EQUAL).append(SPACE).append(FROM_STRING_PARAM_NAME)
1626 .append(PERIOD).append(TRIM_STRING).append(OPEN_CLOSE_BRACKET_STRING)
Bharat saraswal0663aff2016-10-18 23:16:14 +05301627 .append(PERIOD).append(SPLIT_STRING).append(getOpenCloseParaWithValue(
1628 getPatternQuoteString(SPACE))).append(signatureClose()).append(
1629 getForLoopString(EIGHT_SPACE_INDENTATION, STRING_DATA_TYPE, BIT_NAME_VAR,
1630 BIT_NAMES_VAR));
Mahesh Poojary Huawei1025a172016-09-27 16:06:07 +05301631
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301632 String small = getSmallCase(bitClassName);
Bharat saraswal0663aff2016-10-18 23:16:14 +05301633 sBuild.append(TWELVE_SPACE_INDENTATION).append(bitClassName).append(
1634 SPACE).append(small).append(SPACE).append(EQUAL).append(
1635 SPACE).append(bitClassName).append(PERIOD).append(OF).append(
1636 getOpenCloseParaWithValue(BIT_NAME_VAR)).append(signatureClose());
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301637 String condition = small + SPACE + NOT + EQUAL + SPACE + NULL;
1638 sBuild.append(getIfConditionBegin(TWELVE_SPACE_INDENTATION, condition))
1639 .append(TWELVE_SPACE_INDENTATION)
1640 .append(TMP_VAL).append(PERIOD).append(SET_METHOD_PREFIX)
1641 .append(OPEN_PARENTHESIS)
1642 .append(small).append(PERIOD).append(small).append(
1643 OPEN_CLOSE_BRACKET_STRING).append(CLOSE_PARENTHESIS)
1644 .append(signatureClose()).append(methodClose(TWELVE_SPACE))
1645 .append(methodClose(EIGHT_SPACE));
1646 sBuild.append(getReturnString(TMP_VAL, EIGHT_SPACE_INDENTATION))
1647 .append(signatureClose()).append(methodClose(FOUR_SPACE));
1648 return sBuild.toString();
1649 }
Mahesh Poojary Huawei1025a172016-09-27 16:06:07 +05301650
Bharat saraswal94844d62016-10-13 13:28:03 +05301651
1652 /**
1653 * Returns to string method for typedef.
1654 *
Bharat saraswal0663aff2016-10-18 23:16:14 +05301655 * @param attr attribute name
Bharat saraswal94844d62016-10-13 13:28:03 +05301656 * @return to string method for typedef
1657 */
Bharat saraswal0663aff2016-10-18 23:16:14 +05301658 static String getToStringForType(String attr, YangType type) {
Bharat saraswal94844d62016-10-13 13:28:03 +05301659 StringBuilder builder = new StringBuilder(getOverRideString())
1660 .append(methodSignature(TO_STRING_METHOD, null, PUBLIC, null,
1661 STRING_DATA_TYPE, null, CLASS_TYPE));
1662 builder.append(getReturnString(
Bharat saraswal0663aff2016-10-18 23:16:14 +05301663 getToStringForSpecialType(type, attr), EIGHT_SPACE_INDENTATION))
Bharat saraswal94844d62016-10-13 13:28:03 +05301664 .append(signatureClose()).append(methodClose(FOUR_SPACE));
1665 return builder.toString();
1666 }
1667
1668 /**
1669 * Returns to string method body for type class.
1670 *
Bharat saraswal0663aff2016-10-18 23:16:14 +05301671 * @param type type of attribute
1672 * @param name @return to string method body for typedef class
Bharat saraswal94844d62016-10-13 13:28:03 +05301673 */
Bharat saraswal0663aff2016-10-18 23:16:14 +05301674 private static String getToStringForSpecialType(YangType type, String name) {
Bharat saraswal94844d62016-10-13 13:28:03 +05301675 switch (type.getDataType()) {
1676 case INT8:
1677 case INT16:
1678 case INT32:
1679 case INT64:
1680 case UINT8:
1681 case UINT16:
1682 case UINT32:
Bharat saraswal0663aff2016-10-18 23:16:14 +05301683 return STRING_DATA_TYPE + PERIOD + VALUE + OF_CAPS +
1684 getOpenCloseParaWithValue(name);
Bharat saraswal94844d62016-10-13 13:28:03 +05301685
1686 case BINARY:
1687 return getToStringCall(getToStringForBinary(name));
1688
1689 case BITS:
Bharat saraswal0663aff2016-10-18 23:16:14 +05301690 return getCapitalCase(name) + PERIOD +
1691 TO_STRING_METHOD + getOpenCloseParaWithValue(name);
Bharat saraswal94844d62016-10-13 13:28:03 +05301692
1693 case BOOLEAN:
1694 case EMPTY:
1695 return name + SPACE + QUESTION_MARK + SPACE + getQuotedString(TRUE)
1696 + SPACE + COLON + SPACE + getQuotedString(FALSE);
1697
1698 case LEAFREF:
1699 YangLeafRef<?> lri = (YangLeafRef<?>) type.getDataTypeExtendedInfo();
1700 YangType<?> rt = lri.isInGrouping() ? null : lri
1701 .getEffectiveDataType();
1702 return rt == null ? getToStringCall(name) :
Bharat saraswal0663aff2016-10-18 23:16:14 +05301703 getToStringForSpecialType(rt, name);
Bharat saraswal94844d62016-10-13 13:28:03 +05301704
1705 case ENUMERATION:
1706 case INSTANCE_IDENTIFIER:
1707 case UINT64:
1708 case DECIMAL64:
1709 case DERIVED:
1710 case IDENTITYREF:
1711 case UNION:
1712 return getToStringCall(name);
1713
1714 default:
1715 return name;
1716 }
1717 }
1718
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301719 /**
1720 * Returns union class's to string method.
1721 *
1722 * @param types list of types
1723 * @return union class's to string method
1724 */
Bharat saraswal0663aff2016-10-18 23:16:14 +05301725 static String getUnionToStringMethod(List<YangType<?>> types) {
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301726
1727 StringBuilder builder = new StringBuilder(getOverRideString());
1728 builder.append(methodSignature(TO_STRING_METHOD, null, PUBLIC, null,
Bharat saraswal94844d62016-10-13 13:28:03 +05301729 STRING_DATA_TYPE, null, CLASS_TYPE));
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301730 for (YangType type : types) {
1731 builder.append(getIfConditionBegin(
1732 EIGHT_SPACE_INDENTATION, getSetValueParaCondition(
Bharat saraswal94844d62016-10-13 13:28:03 +05301733 types.indexOf(type)))).append(getReturnString(
Bharat saraswal0663aff2016-10-18 23:16:14 +05301734 getToStringForSpecialType(type,
Bharat saraswal94844d62016-10-13 13:28:03 +05301735 getCamelCase(type.getDataTypeName(), null)),
1736 TWELVE_SPACE_INDENTATION))
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301737 .append(signatureClose()).append(methodClose(EIGHT_SPACE));
1738 }
Bharat saraswal94844d62016-10-13 13:28:03 +05301739 builder.append(getReturnString(NULL, EIGHT_SPACE_INDENTATION)).append(signatureClose())
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301740 .append(methodClose(FOUR_SPACE));
1741 return builder.toString();
1742 }
1743
1744 /**
1745 * Returns from string method for bits class.
1746 *
1747 * @param className bits class name
1748 * @return from string method for bits class
1749 */
1750 static String getBitSetEnumClassFromString(String className) {
1751 return getJavaDoc(FROM_METHOD, className, false, null) +
1752 getFromStringForBits(className);
1753 }
1754
Bharat saraswal94844d62016-10-13 13:28:03 +05301755 /**
1756 * Returns to string method for bits type.
1757 *
1758 * @param className class name
1759 * @param enumeration enumeration
1760 * @return to string method
1761 */
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301762 static String getBitSetEnumClassToString(String className,
1763 YangEnumeration enumeration) {
1764
1765 StringBuilder builder = new StringBuilder();
Bharat saraswal94844d62016-10-13 13:28:03 +05301766 builder.append(methodSignature(TO_STRING_METHOD, null,
1767 PUBLIC + SPACE + STATIC, BITS,
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301768 STRING_DATA_TYPE, BIT_SET, CLASS_TYPE))
Bharat saraswal94844d62016-10-13 13:28:03 +05301769 .append(getStringBuilderAttr(EMPTY_STRING, EIGHT_SPACE_INDENTATION));
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301770 String condition;
1771 String name;
1772 for (YangEnum yangEnum : enumeration.getEnumSet()) {
1773 name = yangEnum.getNamedValue();
1774 condition = BITS + PERIOD + GET + OPEN_PARENTHESIS +
1775 className + PERIOD + getEnumJavaAttribute(name).toUpperCase()
1776 + PERIOD + getSmallCase(className)
1777 + OPEN_CLOSE_BRACKET_STRING + CLOSE_PARENTHESIS;
1778
1779
1780 builder.append(getIfConditionBegin(
1781 EIGHT_SPACE_INDENTATION, condition))
Bharat saraswal94844d62016-10-13 13:28:03 +05301782 .append(TWELVE_SPACE_INDENTATION).append(STRING_BUILDER_VAR).append(
1783 PERIOD).append(APPEND).append(OPEN_PARENTHESIS)
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301784 .append(getQuotedString(name)).append(CLOSE_PARENTHESIS)
Bharat saraswal94844d62016-10-13 13:28:03 +05301785 .append(signatureClose())
1786 .append(TWELVE_SPACE_INDENTATION).append(STRING_BUILDER_VAR).append(
1787 PERIOD).append(APPEND).append(OPEN_PARENTHESIS)
1788 .append(getQuotedString(SPACE)).append(CLOSE_PARENTHESIS)
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301789 .append(signatureClose()).append(methodClose(EIGHT_SPACE));
1790 }
Bharat saraswal94844d62016-10-13 13:28:03 +05301791 builder.append(getReturnString(STRING_BUILDER_VAR, EIGHT_SPACE_INDENTATION))
Bharat saraswal54e4bab2016-10-05 23:32:14 +05301792 .append(PERIOD).append(TO_STRING_METHOD)
1793 .append(OPEN_CLOSE_BRACKET_STRING).append(signatureClose())
1794 .append(methodClose(FOUR_SPACE));
1795 return builder.toString();
Mahesh Poojary Huawei1025a172016-09-27 16:06:07 +05301796 }
Bharat saraswal94844d62016-10-13 13:28:03 +05301797
1798 /**
1799 * Returns to string method for enum class.
1800 *
1801 * @return to string method for enum class
1802 */
1803 static String getToStringForEnumClass() {
1804 StringBuilder builder = new StringBuilder(getOverRideString());
1805 builder.append(methodSignature(TO_STRING_METHOD, EMPTY_STRING,
1806 PUBLIC, null, STRING_DATA_TYPE, null,
1807 CLASS_TYPE));
1808 builder.append(getReturnString(SCHEMA_NAME, EIGHT_SPACE_INDENTATION))
1809 .append(signatureClose()).append(methodClose(FOUR_SPACE));
1810 return builder.toString();
1811 }
Bharat saraswal0663aff2016-10-18 23:16:14 +05301812
1813 /**
1814 * Returns is filter content match interface.
1815 *
1816 * @param name name of node
1817 * @return is filter content match interface
1818 */
1819 static String processSubtreeFilteringInterface(String name) {
1820 String method = " /**\n" +
1821 " * Checks if the passed " + name +
1822 " maps the content match query condition.\n" +
1823 " *\n" +
1824 " * @param " + getSmallCase(name) + SPACE +
1825 getSmallCase(name) + SPACE + "being passed to check" +
1826 " for" +
1827 " content match\n" +
1828 " * @param isSelectAllSchemaChild is select all schema child\n" +
1829 " * @return match result\n" +
1830 " */\n";
1831 LinkedHashMap<String, String> map = new LinkedHashMap<>();
1832 map.put(getSmallCase(name), name);
1833 map.put(SELECT_ALL_CHILD, BOOLEAN_DATA_TYPE);
1834
1835 return method + multiAttrMethodSignature(PROCESS_SUBTREE_FILTERING,
1836 EMPTY_STRING, EMPTY_STRING,
1837 name, map, INTERFACE_TYPE);
1838 }
1839
1840 /**
1841 * Returns build method for augment class.
1842 *
1843 * @param name class name
1844 * @return build method for augment class
1845 */
1846 static String generateBuildMethodInAugmentClass(String name) {
1847 StringBuilder builder = new StringBuilder(getJavaDoc(BUILD_METHOD,
1848 name, false, null));
1849 String def = DEFAULT_CAPS + name;
1850 builder.append(methodSignature(BUILD_FOR_FILTER, null, PUBLIC, null,
1851 name, null, CLASS_TYPE))
1852 .append(EIGHT_SPACE_INDENTATION).append(SUBTREE_FILTERED)
1853 .append(SPACE).append(EQUAL).append(SPACE).append(TRUE)
1854 .append(signatureClose()).append(methodBody(
1855 MethodBodyTypes.BUILD, def, null, EIGHT_SPACE_INDENTATION,
1856 null, null, false, null)).append(methodClose(FOUR_SPACE));
1857 return builder.toString();
1858 }
1859
Bharat saraswal97459962016-02-20 21:57:16 +05301860}