blob: a8159a6d0569a96f23c8d06896143bc671d50a36 [file] [log] [blame]
Bharat saraswal870c56f2016-02-20 21:57:16 +05301/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2016-present Open Networking Laboratory
Bharat saraswal870c56f2016-02-20 21:57:16 +05303 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.onosproject.yangutils.translator.tojava.utils;
18
Bharat saraswalc0e04842016-05-12 13:16:57 +053019import java.util.List;
20import java.util.Map;
janani be18b5342016-07-13 21:06:41 +053021
Bharat saraswald50c6382016-07-14 21:57:13 +053022import org.onosproject.yangutils.datamodel.YangAtomicPath;
23import org.onosproject.yangutils.datamodel.YangAugmentableNode;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053024import org.onosproject.yangutils.datamodel.YangLeaf;
25import org.onosproject.yangutils.datamodel.YangLeafList;
26import org.onosproject.yangutils.datamodel.YangLeavesHolder;
Bharat saraswalb551aae2016-07-14 15:18:20 +053027import org.onosproject.yangutils.datamodel.YangNode;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053028import org.onosproject.yangutils.datamodel.YangType;
janani be18b5342016-07-13 21:06:41 +053029import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053030import org.onosproject.yangutils.translator.exception.TranslatorException;
Vinod Kumar S38046502016-03-23 15:30:27 +053031import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053032import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
Bharat saraswald50c6382016-07-14 21:57:13 +053033import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053034import org.onosproject.yangutils.translator.tojava.TempJavaBeanFragmentFiles;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053035import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053036import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
Bharat saraswale2d51d62016-03-23 19:40:35 +053037
Bharat saraswald50c6382016-07-14 21:57:13 +053038import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BINARY;
39import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BITS;
40import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BOOLEAN;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053041import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DECIMAL64;
Bharat saraswald50c6382016-07-14 21:57:13 +053042import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.EMPTY;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053043import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT16;
44import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT32;
45import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT64;
Bharat saraswald50c6382016-07-14 21:57:13 +053046import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT8;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053047import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT16;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053048import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT32;
Bharat saraswald50c6382016-07-14 21:57:13 +053049import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT64;
50import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT8;
Bharat saraswal33dfa012016-05-17 19:59:16 +053051import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053052import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053053import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.getJavaAttributeOfLeaf;
54import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.getJavaAttributeOfLeafList;
Bharat saraswald50c6382016-07-14 21:57:13 +053055import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getAugmentedClassNameForDataMethods;
56import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getParentNodeNameForDataMethods;
57import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getSetOfNodeIdentifiers;
Bharat saraswal33dfa012016-05-17 19:59:16 +053058import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE;
59import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE_ANNOTATION;
Bharat saraswale2d51d62016-03-23 19:40:35 +053060import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
61import static org.onosproject.yangutils.utils.UtilConstants.AND;
Bharat saraswald50c6382016-07-14 21:57:13 +053062import static org.onosproject.yangutils.utils.UtilConstants.APP_INSTANCE;
Bharat saraswalb551aae2016-07-14 15:18:20 +053063import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
Bharat saraswald50c6382016-07-14 21:57:13 +053064import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +053065import static org.onosproject.yangutils.utils.UtilConstants.BASE64;
Bharat saraswald50c6382016-07-14 21:57:13 +053066import static org.onosproject.yangutils.utils.UtilConstants.BASE_CLASS;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +053067import static org.onosproject.yangutils.utils.UtilConstants.BIG_DECIMAL;
Bharat saraswalb1170bd2016-07-14 13:26:18 +053068import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
Bharat saraswald50c6382016-07-14 21:57:13 +053069import static org.onosproject.yangutils.utils.UtilConstants.BITSET;
Bharat saraswale2d51d62016-03-23 19:40:35 +053070import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053071import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053072import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
73import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053074import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053075import static org.onosproject.yangutils.utils.UtilConstants.BYTE_WRAPPER;
Bharat saraswalc0e04842016-05-12 13:16:57 +053076import static org.onosproject.yangutils.utils.UtilConstants.CASE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053077import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +053078import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
Bharat saraswalb551aae2016-07-14 15:18:20 +053079import static org.onosproject.yangutils.utils.UtilConstants.CLASS;
80import static org.onosproject.yangutils.utils.UtilConstants.CLASS_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +053081import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
82import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
Bharat saraswald50c6382016-07-14 21:57:13 +053083import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +053084import static org.onosproject.yangutils.utils.UtilConstants.COLON;
Bharat saraswale2d51d62016-03-23 19:40:35 +053085import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
Bharat saraswal33dfa012016-05-17 19:59:16 +053086import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE;
87import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE_ANNOTATION;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +053088import static org.onosproject.yangutils.utils.UtilConstants.DECODE;
Bharat saraswalc0e04842016-05-12 13:16:57 +053089import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
Bharat saraswale2d51d62016-03-23 19:40:35 +053090import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
91import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +053092import static org.onosproject.yangutils.utils.UtilConstants.DOUBLE;
Bharat saraswale2d51d62016-03-23 19:40:35 +053093import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
94import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
95import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
96import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053097import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
98import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
Bharat saraswale2d51d62016-03-23 19:40:35 +053099import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
Bharat saraswald50c6382016-07-14 21:57:13 +0530100import static org.onosproject.yangutils.utils.UtilConstants.FILTER_CONTENT_MATCH;
101import static org.onosproject.yangutils.utils.UtilConstants.FILTER_LEAF;
102import static org.onosproject.yangutils.utils.UtilConstants.FILTER_LEAF_LIST;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530103import static org.onosproject.yangutils.utils.UtilConstants.FOR;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530104import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530105import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
106import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530107import static org.onosproject.yangutils.utils.UtilConstants.GET;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530108import static org.onosproject.yangutils.utils.UtilConstants.GET_DECODER;
Bharat saraswald50c6382016-07-14 21:57:13 +0530109import static org.onosproject.yangutils.utils.UtilConstants.GET_FILTER_LEAF;
110import static org.onosproject.yangutils.utils.UtilConstants.GET_FILTER_LEAF_LIST;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530111import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
Bharat saraswald50c6382016-07-14 21:57:13 +0530112import static org.onosproject.yangutils.utils.UtilConstants.GET_OPERATION_TYPE;
113import static org.onosproject.yangutils.utils.UtilConstants.GET_SELECT_LEAF;
114import static org.onosproject.yangutils.utils.UtilConstants.GET_SELECT_LEAF_LIST;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530115import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
116import static org.onosproject.yangutils.utils.UtilConstants.HASH;
117import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
118import static org.onosproject.yangutils.utils.UtilConstants.IF;
Bharat saraswald50c6382016-07-14 21:57:13 +0530119import static org.onosproject.yangutils.utils.UtilConstants.ILLEGAL_ARGUMENT_EXCEPTION;
120import static org.onosproject.yangutils.utils.UtilConstants.ILLEGAL_ARGUMENT_EXCEPTION_MSG;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530121import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
122import static org.onosproject.yangutils.utils.UtilConstants.INT;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530123import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530124import static org.onosproject.yangutils.utils.UtilConstants.LIST;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530125import static org.onosproject.yangutils.utils.UtilConstants.LONG;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530126import static org.onosproject.yangutils.utils.UtilConstants.LONG_WRAPPER;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530127import static org.onosproject.yangutils.utils.UtilConstants.MAP;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530128import static org.onosproject.yangutils.utils.UtilConstants.NEW;
129import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Bharat saraswald50c6382016-07-14 21:57:13 +0530130import static org.onosproject.yangutils.utils.UtilConstants.NOT;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530131import static org.onosproject.yangutils.utils.UtilConstants.NULL;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530132import static org.onosproject.yangutils.utils.UtilConstants.OBJ;
133import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
134import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
135import static org.onosproject.yangutils.utils.UtilConstants.OF;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530136import static org.onosproject.yangutils.utils.UtilConstants.OMIT_NULL_VALUE_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530137import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
138import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
Bharat saraswald50c6382016-07-14 21:57:13 +0530139import static org.onosproject.yangutils.utils.UtilConstants.OPERATION;
140import static org.onosproject.yangutils.utils.UtilConstants.OPERATION_ENUM;
141import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM_TYPE;
142import static org.onosproject.yangutils.utils.UtilConstants.OR_OPERATION;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530143import static org.onosproject.yangutils.utils.UtilConstants.OTHER;
144import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530145import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BOOLEAN;
146import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BYTE;
147import static org.onosproject.yangutils.utils.UtilConstants.PARSE_INT;
148import static org.onosproject.yangutils.utils.UtilConstants.PARSE_LONG;
149import static org.onosproject.yangutils.utils.UtilConstants.PARSE_SHORT;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530150import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
151import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530152import static org.onosproject.yangutils.utils.UtilConstants.PUT;
Bharat saraswald50c6382016-07-14 21:57:13 +0530153import static org.onosproject.yangutils.utils.UtilConstants.QUESTION_MARK;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530154import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
Bharat saraswald50c6382016-07-14 21:57:13 +0530155import static org.onosproject.yangutils.utils.UtilConstants.RECEIVED_OBJECT;
156import static org.onosproject.yangutils.utils.UtilConstants.REPLACE_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530157import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530158import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
Bharat saraswald50c6382016-07-14 21:57:13 +0530159import static org.onosproject.yangutils.utils.UtilConstants.SELECT_LEAF;
160import static org.onosproject.yangutils.utils.UtilConstants.SELECT_LEAF_LIST;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530161import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
162import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
Bharat saraswald50c6382016-07-14 21:57:13 +0530163import static org.onosproject.yangutils.utils.UtilConstants.SET_OPERATION_TYPE;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530164import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530165import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
Bharat saraswald50c6382016-07-14 21:57:13 +0530166import static org.onosproject.yangutils.utils.UtilConstants.SINGLE_QUOTE;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530167import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
168import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswald50c6382016-07-14 21:57:13 +0530169import static org.onosproject.yangutils.utils.UtilConstants.SPLIT_STRING;
170import static org.onosproject.yangutils.utils.UtilConstants.SQUARE_BRACKETS;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530171import static org.onosproject.yangutils.utils.UtilConstants.STARTED_LOG_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530172import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530173import static org.onosproject.yangutils.utils.UtilConstants.STOPPED_LOG_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530174import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
175import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530176import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530177import static org.onosproject.yangutils.utils.UtilConstants.THIS;
Bharat saraswald50c6382016-07-14 21:57:13 +0530178import static org.onosproject.yangutils.utils.UtilConstants.THROW;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530179import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530180import static org.onosproject.yangutils.utils.UtilConstants.TO;
Bharat saraswald50c6382016-07-14 21:57:13 +0530181import static org.onosproject.yangutils.utils.UtilConstants.TRIM_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530182import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530183import static org.onosproject.yangutils.utils.UtilConstants.TRY;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530184import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
185import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
186import static org.onosproject.yangutils.utils.UtilConstants.VOID;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530187import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
Bharat saraswald50c6382016-07-14 21:57:13 +0530188import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_OP_PARAM_INFO;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530189import static org.onosproject.yangutils.utils.UtilConstants.YANG_UTILS_TODO;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530190import static org.onosproject.yangutils.utils.UtilConstants.ZERO;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530191import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
192import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
193import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530194import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.FROM_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530195import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530196import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.MANAGER_SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530197import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530198import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530199import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530200import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForAddAugmentation;
201import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForGetAugmentation;
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530202import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530203import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
204import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
205import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530206import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530207
208/**
Bharat saraswald9822e92016-04-05 15:13:44 +0530209 * Represents generator for methods of generated files based on the file type.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530210 */
211public final class MethodsGenerator {
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530212 private static final String BITS_STRING_ARRAY_VAR = "bitsTemp";
213 private static final String BIT_TEMP_VAR = "bitTemp";
Bharat saraswal870c56f2016-02-20 21:57:16 +0530214
Bharat saraswal870c56f2016-02-20 21:57:16 +0530215 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530216 * Creates an instance of method generator.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530217 */
218 private MethodsGenerator() {
219 }
220
221 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530222 * Returns the methods strings for builder interface.
223 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530224 * @param name attribute name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530225 * @param pluginConfig plugin configurations
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530226 * @return method string for builder interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530227 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530228 public static String parseBuilderInterfaceBuildMethodString(String name, YangPluginConfig pluginConfig) {
229 return getJavaDoc(BUILD_METHOD, name, false, pluginConfig) + getBuildForInterface(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530230 }
231
232 /**
233 * Returns getter string.
234 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530235 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530236 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530237 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530238 * @return getter string
239 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530240 public static String getGetterString(JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530241 YangPluginConfig pluginConfig) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530242
Vinod Kumar S38046502016-03-23 15:30:27 +0530243 String returnType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530244 String attributeName = attr.getAttributeName();
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530245
Bharat saraswal33dfa012016-05-17 19:59:16 +0530246 return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr(), pluginConfig)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530247 + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530248 }
249
250 /**
251 * Returns setter string.
252 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530253 * @param attr attribute info
254 * @param className java class name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530255 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530256 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530257 * @return setter string
258 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530259 public static String getSetterString(JavaAttributeInfo attr, String className, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530260 YangPluginConfig pluginConfig) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530261
Vinod Kumar S38046502016-03-23 15:30:27 +0530262 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530263 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530264 JavaDocGen.JavaDocType type;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530265 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530266 type = MANAGER_SETTER_METHOD;
267 } else {
268 type = SETTER_METHOD;
269 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530270
Bharat saraswal33dfa012016-05-17 19:59:16 +0530271 return getJavaDoc(type, attributeName, attr.isListAttr(), pluginConfig)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530272 + getSetterForInterface(attributeName, attrType, className, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530273 }
274
275 /**
276 * Returns constructor method string.
277 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530278 * @param name class name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530279 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530280 * @return constructor string
281 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530282 public static String getConstructorString(String name, YangPluginConfig pluginConfig) {
283 return getJavaDoc(CONSTRUCTOR, name, false, pluginConfig);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530284 }
285
286 /**
287 * Returns default constructor method string.
288 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530289 * @param name class name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530290 * @param modifierType modifier type
Bharat saraswal33dfa012016-05-17 19:59:16 +0530291 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530292 * @return default constructor string
293 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530294 public static String getDefaultConstructorString(String name, String modifierType,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530295 YangPluginConfig pluginConfig) {
Bharat saraswal33dfa012016-05-17 19:59:16 +0530296 return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false, pluginConfig)
297 + getDefaultConstructor(name, modifierType)
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530298 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530299 }
300
301 /**
302 * Returns check not null string.
303 *
304 * @param name attribute name
305 * @return check not null string
306 */
307 public static String getCheckNotNull(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530308 return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING + OPEN_PARENTHESIS + name + COMMA + SPACE + name
309 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530310 }
311
312 /**
313 * Returns build method string.
314 *
315 * @param name class name
316 * @return build string
317 */
318 public static String getBuildString(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530319 return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530320 }
321
322 /**
323 * Returns the getter method strings for class file.
324 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530325 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530326 * @param generatedJavaFiles for the type of java file being generated
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530327 * @return getter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530328 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530329 public static String getGetterForClass(JavaAttributeInfo attr, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530330
Vinod Kumar S38046502016-03-23 15:30:27 +0530331 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530332 String attributeName = attr.getAttributeName();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530333
334 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530335 return getGetter(attrQuaifiedType, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530336 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530337 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530338 return getGetter(listAttr, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530339 }
340
341 /**
342 * Returns getter for attribute.
343 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530344 * @param type return type
345 * @param name attribute name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530346 * @param generatedJavaFiles generated java files
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530347 * @return getter for attribute
348 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530349 public static String getGetter(String type, String name, int generatedJavaFiles) {
Bharat saraswalcad0e652016-05-26 23:48:38 +0530350 String ret = parseTypeForReturnValue(type);
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530351 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
janani b4a6711a2016-05-17 13:12:22 +0530352 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCapitalCase(name)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530353 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
354 EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION +
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530355 RETURN + SPACE + ret + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530356 } else {
357 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + name
358 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
359 EIGHT_SPACE_INDENTATION + RETURN + SPACE + name + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
360 + CLOSE_CURLY_BRACKET;
361 }
362
Bharat saraswal870c56f2016-02-20 21:57:16 +0530363 }
364
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530365 /*Provides string to return for type.*/
Bharat saraswalcad0e652016-05-26 23:48:38 +0530366 private static String parseTypeForReturnValue(String type) {
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530367 switch (type) {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530368 case BYTE:
369 case INT:
370 case SHORT:
371 case LONG:
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +0530372 case DOUBLE:
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530373 return "0";
374 case BOOLEAN_DATA_TYPE:
375 return FALSE;
376 default:
377 return null;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530378 }
379 }
380
Bharat saraswal870c56f2016-02-20 21:57:16 +0530381 /**
382 * Returns the setter method strings for class file.
383 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530384 * @param attr attribute info
385 * @param className name of the class
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530386 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530387 * @return setter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530388 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530389 public static String getSetterForClass(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530390
Vinod Kumar S38046502016-03-23 15:30:27 +0530391 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530392 String attributeName = attr.getAttributeName();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530393 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530394 return getSetter(className, attributeName, attrQuaifiedType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530395 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530396 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530397 return getSetter(className, attributeName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530398 }
399
400 /**
401 * Returns setter for attribute.
402 *
403 * @param className class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530404 * @param name attribute name
405 * @param type return type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530406 * @return setter for attribute
407 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530408 private static String getSetter(String className, String name, String type, int generatedJavaFiles) {
409 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
410 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX
janani b4a6711a2016-05-17 13:12:22 +0530411 + getCapitalCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530412 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO +
413 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530414 } else if (generatedJavaFiles == GENERATE_EVENT_SUBJECT_CLASS) {
415 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + name + OPEN_PARENTHESIS + type + SPACE
416 + name + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
417 + THIS + PERIOD + name + SPACE + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE
418 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530419 } else {
420 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE +
421 name + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
Bharat saraswal33dfa012016-05-17 19:59:16 +0530422 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE
423 + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE
424 + THIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530425 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530426 }
427
428 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530429 * Returns the setter method strings for class file.
430 *
431 * @param attr attribute info
432 * @return setter method for class
433 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530434 public static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530435
Vinod Kumar S38046502016-03-23 15:30:27 +0530436 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530437 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530438 return getTypeDefSetter(attrQuaifiedType, attributeName);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530439 }
440
441 /**
442 * Returns type def's setter for attribute.
443 *
444 * @param type data type
445 * @param name attribute name
446 * @return setter for type def's attribute
447 */
448 private static String getTypeDefSetter(String type, String name) {
janani b4a6711a2016-05-17 13:12:22 +0530449 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(name)
Bharat saraswale2d51d62016-03-23 19:40:35 +0530450 + OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
451 + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE
452 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530453 }
454
455 /**
456 * Returns override string.
457 *
458 * @return override string
459 */
460 public static String getOverRideString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530461 return NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530462 }
463
464 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530465 * Returns the getter method strings for interface file.
466 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530467 * @param yangName name of the attribute
468 * @param returnType return type of attribute
469 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530470 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530471 * @return getter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530472 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530473 public static String getGetterForInterface(String yangName, String returnType, boolean isList,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530474 int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530475
476 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530477 return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530478 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530479 String listAttr = getListString() + returnType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530480 return getGetterInterfaceString(listAttr, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530481 }
482
483 /**
484 * Returns getter for attribute in interface.
485 *
486 * @param returnType return type
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530487 * @param yangName attribute name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530488 * @return getter for interface
489 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530490 private static String getGetterInterfaceString(String returnType, String yangName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530491 int generatedJavaFiles) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530492 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
janani b4a6711a2016-05-17 13:12:22 +0530493 return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCapitalCase(yangName)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530494 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
495 } else {
496 return FOUR_SPACE_INDENTATION + returnType + SPACE + yangName
497 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
498 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530499 }
500
501 /**
502 * Returns the setter method strings for interface file.
503 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530504 * @param attrName name of the attribute
505 * @param attrType return type of attribute
506 * @param className name of the java class being generated
507 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530508 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530509 * @return setter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530510 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530511 public static String getSetterForInterface(String attrName, String attrType, String className,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530512 boolean isList, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530513
514 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530515 return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530516 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530517 String listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530518 return getSetterInterfaceString(className, attrName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530519 }
520
521 /**
522 * Returns setter string for interface.
523 *
524 * @param className class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530525 * @param attrName attribute name
526 * @param attrType attribute type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530527 * @return setter string
528 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530529 private static String getSetterInterfaceString(String className, String attrName, String attrType,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530530 int generatedJavaFiles) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530531 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
532
janani b4a6711a2016-05-17 13:12:22 +0530533 return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(attrName)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530534 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
535 } else {
536 return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + attrName
537 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
538 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530539 }
540
541 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530542 * Returns list string.
543 *
544 * @return list string
545 */
546 private static String getListString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530547 return LIST + DIAMOND_OPEN_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530548 }
549
550 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530551 * Returns return type for attribute.
552 *
553 * @param attr attribute info
554 * @return return type
555 */
556 private static String getReturnType(JavaAttributeInfo attr) {
557
Bharat saraswale2d51d62016-03-23 19:40:35 +0530558 String returnType = EMPTY_STRING;
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530559 if (attr.isQualifiedName() && attr.getImportInfo().getPkgInfo() != null) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530560 returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
Vinod Kumar S38046502016-03-23 15:30:27 +0530561 }
562 returnType = returnType + attr.getImportInfo().getClassInfo();
563 return returnType;
564 }
565
566 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530567 * Returns the build method strings for interface file.
568 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530569 * @param yangName name of the interface
570 * @return build method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530571 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530572 public static String getBuildForInterface(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530573 return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
574 + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530575 }
576
577 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530578 * Returns constructor string for impl class.
579 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530580 * @param yangName class name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530581 * @param pluginConfig plugin configurations
Vinod Kumar S38046502016-03-23 15:30:27 +0530582 * @return constructor string
583 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530584 public static String getConstructorStart(String yangName, YangPluginConfig pluginConfig) {
Vinod Kumar S38046502016-03-23 15:30:27 +0530585
Bharat saraswal33dfa012016-05-17 19:59:16 +0530586 String javadoc = getConstructorString(yangName, pluginConfig);
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530587 String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + getCapitalCase(DEFAULT) + yangName +
588 OPEN_PARENTHESIS + yangName + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT
589 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
Vinod Kumar S38046502016-03-23 15:30:27 +0530590 return javadoc + constructor;
591 }
592
593 /**
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530594 * Returns constructor string for op param class.
595 *
Bharat saraswald50c6382016-07-14 21:57:13 +0530596 * @param yangName class name
597 * @param pluginConfig plugin configurations
598 * @return constructor string
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530599 */
600 public static String getOpParamConstructorStart(String yangName, YangPluginConfig pluginConfig) {
601
602 String javadoc = getConstructorString(yangName, pluginConfig);
603 String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + OPERATION +
604 OPEN_PARENTHESIS + yangName + OPERATION + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT
605 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
606 return javadoc + constructor;
607 }
Bharat saraswald50c6382016-07-14 21:57:13 +0530608
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530609 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530610 * Returns the constructor strings for class file.
611 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530612 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530613 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530614 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530615 * @return constructor for class
616 */
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530617 public static String getConstructor(JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530618 YangPluginConfig pluginConfig) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530619
janani b4a6711a2016-05-17 13:12:22 +0530620 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530621 String constructor;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530622
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530623 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530624 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD
625 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
626 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
627 + getCapitalCase(getCamelCase(attributeName, pluginConfig.getConflictResolver()))
628 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530629 } else {
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530630 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD
631 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
632 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD
633 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) +
634 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530635 }
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530636 return constructor;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530637 }
638
639 /**
Gaurav Agrawal56527662016-04-20 15:49:17 +0530640 * Returns the rpc strings for service interface.
641 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530642 * @param rpcName name of the rpc
643 * @param inputName name of input
644 * @param outputName name of output
Bharat saraswal33dfa012016-05-17 19:59:16 +0530645 * @param pluginConfig plugin configurations
Gaurav Agrawal56527662016-04-20 15:49:17 +0530646 * @return rpc method string
647 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530648 public static String getRpcServiceMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530649 YangPluginConfig pluginConfig) {
Gaurav Agrawal56527662016-04-20 15:49:17 +0530650
Bharat saraswal33dfa012016-05-17 19:59:16 +0530651 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswalcad0e652016-05-26 23:48:38 +0530652 if (!inputName.equals(EMPTY_STRING)) {
653 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530654 }
Bharat saraswalcad0e652016-05-26 23:48:38 +0530655 return FOUR_SPACE_INDENTATION + outputName + SPACE + rpcName + OPEN_PARENTHESIS + inputName
656 + CLOSE_PARENTHESIS + SEMI_COLAN;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530657 }
658
659 /**
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530660 * Returns the rpc strings for manager impl.
661 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530662 * @param rpcName name of the rpc
663 * @param inputName name of input
664 * @param outputName name of output
Bharat saraswal33dfa012016-05-17 19:59:16 +0530665 * @param pluginConfig plugin configurations
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530666 * @return rpc method string
667 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530668 public static String getRpcManagerMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530669 YangPluginConfig pluginConfig) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530670
Bharat saraswal33dfa012016-05-17 19:59:16 +0530671 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswalcad0e652016-05-26 23:48:38 +0530672 if (!inputName.equals(EMPTY_STRING)) {
673 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530674 }
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530675
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530676 String method = getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName
677 + OPEN_PARENTHESIS + inputName + CLOSE_PARENTHESIS + SPACE
678 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530679 if (!outputName.contentEquals(VOID)) {
Bharat saraswalcad0e652016-05-26 23:48:38 +0530680 method += EIGHT_SPACE_INDENTATION + RETURN + SPACE + parseTypeForReturnValue(outputName) + SEMI_COLAN
681 + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530682 }
683 method += FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
684
685 return method;
686 }
687
688 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530689 * Returns the build method strings for class file.
690 *
691 * @param yangName class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530692 * @return build method string for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530693 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530694 public static String getBuild(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530695 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530696 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE +
697 getCapitalCase(DEFAULT) + yangName + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN
698 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530699 }
700
701 /**
702 * Returns the Default constructor strings for class file.
703 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530704 * @param name name of the class
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530705 * @param modifierType modifier type for default constructor
Bharat saraswal870c56f2016-02-20 21:57:16 +0530706 * @return Default constructor for class
707 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530708 private static String getDefaultConstructor(String name, String modifierType) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530709 return FOUR_SPACE_INDENTATION + modifierType + SPACE + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
710 + OPEN_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530711 }
712
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530713 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530714 * Returns to string method's open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530715 *
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530716 * @return string method's open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530717 */
718 public static String getToStringMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530719 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STRING_DATA_TYPE + SPACE + TO
720 + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
721 + EIGHT_SPACE_INDENTATION + RETURN + GOOGLE_MORE_OBJECT_METHOD_STRING + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530722 }
723
724 /**
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530725 * Returns to string leaf for get method.
726 *
Bharat saraswald50c6382016-07-14 21:57:13 +0530727 * @return string leaf for get method
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530728 */
729 public static String getToStringLeafgetter() {
730 return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BITSET + SPACE + GET_FILTER_LEAF
Bharat saraswald50c6382016-07-14 21:57:13 +0530731 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530732 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + FILTER_LEAF + SEMI_COLAN + NEW_LINE
733 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
734 }
735
736 /**
737 * Returns to string select leaf for get method.
738 *
739 * @return select leaf string for get method
740 */
741 public static String getToStringSelectLeafgetter() {
742 return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BITSET + SPACE + GET_SELECT_LEAF
Bharat saraswald50c6382016-07-14 21:57:13 +0530743 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530744 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + SELECT_LEAF + SEMI_COLAN + NEW_LINE
745 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
746 }
747
748 /**
749 * Returns to string leaf list for get method.
750 *
Bharat saraswald50c6382016-07-14 21:57:13 +0530751 * @return string leaf list for get method
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530752 */
753 public static String getToStringLeafListgetter() {
754 return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BITSET + SPACE + GET_FILTER_LEAF_LIST
Bharat saraswald50c6382016-07-14 21:57:13 +0530755 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530756 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + FILTER_LEAF_LIST + SEMI_COLAN + NEW_LINE
757 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
758 }
759
760 /**
761 * Returns to string select leaf list for get.
762 *
763 * @return select leaf list list for get
764 */
765 public static String getToStringSelectLeafListgetter() {
766 return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BITSET + SPACE + GET_SELECT_LEAF_LIST
Bharat saraswald50c6382016-07-14 21:57:13 +0530767 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530768 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + SELECT_LEAF_LIST + SEMI_COLAN + NEW_LINE
769 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
770 }
771
772 /**
773 * Returns to string operation type for get method.
774 *
775 * @return operation type for get method
776 */
777 public static String getOperationTypegetter() {
778 return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + OPERATION_ENUM
Bharat saraswald50c6382016-07-14 21:57:13 +0530779 + SPACE + GET_OPERATION_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530780 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE
781 + OP_PARAM_TYPE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
782 }
783
784 /**
785 * Returns to string operation type for set.
786 *
787 * @return operation type set method
788 */
789 public static String getOperationTypeSetter() {
790 return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_OPERATION_TYPE
Bharat saraswald50c6382016-07-14 21:57:13 +0530791 + OPEN_PARENTHESIS + OPERATION_ENUM + SPACE + getSmallCase(OPERATION_ENUM) + CLOSE_PARENTHESIS
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530792 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
793 + OP_PARAM_TYPE + SPACE + EQUAL + SPACE + getSmallCase(OPERATION_ENUM) + SEMI_COLAN + NEW_LINE
794 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
795 }
796
797 /**
798 * Returns string for leaf set method.
799 *
Bharat saraswald50c6382016-07-14 21:57:13 +0530800 * @param className class name
801 * @param curnode current YANG node
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530802 * @param pluginConfig plugin configurations
Bharat saraswald50c6382016-07-14 21:57:13 +0530803 * @return string for leaf set method
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530804 */
805 public static String getSetterForLeaf(String className, YangNode curnode, YangPluginConfig pluginConfig) {
806
807 int numleaf = 1;
808 String filterMethod = "";
809 TempJavaBeanFragmentFiles tempFragmentFiles = ((JavaCodeGeneratorInfo) curnode)
810 .getTempJavaCodeFragmentFiles().getBeanTempFiles();
811 if (curnode instanceof YangLeavesHolder) {
812 YangLeavesHolder leavesHolder = (YangLeavesHolder) curnode;
813 List<YangLeaf> leaves = leavesHolder.getListOfLeaf();
814 if (leaves != null && !leaves.isEmpty()) {
815 for (YangLeaf leaf : leaves) {
816 JavaAttributeInfo javaAttributeInfo = getJavaAttributeOfLeaf(tempFragmentFiles, leaf, pluginConfig);
817 String attrQuaifiedType = getReturnType(javaAttributeInfo);
818 String attributeName = javaAttributeInfo.getAttributeName();
819
820 filterMethod = filterMethod + NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE
821 + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE
822 + attributeName + OPEN_PARENTHESIS + attrQuaifiedType
823 + SPACE + RECEIVED_OBJECT + attributeName + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
824 + NEW_LINE + EIGHT_SPACE_INDENTATION + attributeName + SPACE + EQUAL + SPACE
825 + RECEIVED_OBJECT + attributeName + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
826 + GET_FILTER_LEAF + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + SET_METHOD_PREFIX
827 + OPEN_PARENTHESIS + String.valueOf(numleaf) + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
828 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + THIS + SEMI_COLAN + NEW_LINE
829 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
830 numleaf++;
831 }
832 }
833 }
834 return filterMethod;
835 }
836
837 /**
838 * Returns string for leaf list set method.
839 *
Bharat saraswald50c6382016-07-14 21:57:13 +0530840 * @param className class name
841 * @param curnode current YANG node
842 * @param pluginConfig plugin configurations
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530843 * @return string for leaf list set method
844 */
845 public static String getSetterForLeafList(String className, YangNode curnode, YangPluginConfig pluginConfig) {
846
847 int numleaf = 1;
848 String filterMethod = "";
849 TempJavaBeanFragmentFiles tempFragmentFiles = ((JavaCodeGeneratorInfo) curnode)
850 .getTempJavaCodeFragmentFiles().getBeanTempFiles();
851 if (curnode instanceof YangLeavesHolder) {
852 YangLeavesHolder leavesHolder = (YangLeavesHolder) curnode;
853 List<YangLeafList> listOfLeafList = leavesHolder.getListOfLeafList();
854
855 if (listOfLeafList != null && !listOfLeafList.isEmpty()) {
856 for (YangLeafList leafList : listOfLeafList) {
857 JavaAttributeInfo javaAttributeInfo = getJavaAttributeOfLeafList(tempFragmentFiles, leafList,
Bharat saraswald50c6382016-07-14 21:57:13 +0530858 pluginConfig);
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530859 String attributeName = javaAttributeInfo.getAttributeName();
860 String attrQuaifiedType = getReturnType(javaAttributeInfo);
861 if (javaAttributeInfo.isListAttr()) {
862 attrQuaifiedType = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
863 }
864 filterMethod = filterMethod + NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE
865 + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE
866 + attributeName + OPEN_PARENTHESIS + attrQuaifiedType
867 + SPACE + RECEIVED_OBJECT + attributeName + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
868 + NEW_LINE + EIGHT_SPACE_INDENTATION + attributeName + SPACE + EQUAL + SPACE
869 + RECEIVED_OBJECT + attributeName + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
870 + GET_FILTER_LEAF_LIST + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + SET_METHOD_PREFIX
871 + OPEN_PARENTHESIS + String.valueOf(numleaf) + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
872 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + THIS + SEMI_COLAN + NEW_LINE
873 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
874 numleaf++;
875 }
876 }
877 }
878 return filterMethod;
879 }
880
881 /**
882 * Returns whether the data type is of primitive data type.
883 *
884 * @param dataType data type to be checked
885 * @return true, if data type can have primitive data type, false otherwise
886 */
887 public static boolean isPrimitiveDataType(YangDataTypes dataType) {
888 return dataType == INT8
889 || dataType == INT16
890 || dataType == INT32
891 || dataType == INT64
892 || dataType == UINT8
893 || dataType == UINT16
894 || dataType == UINT32
895 || dataType == UINT64
896 || dataType == DECIMAL64
Bharat saraswald50c6382016-07-14 21:57:13 +0530897 || dataType == BOOLEAN
898 || dataType == EMPTY;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530899 }
900
901 /**
902 * Returns string for is filter content match method.
903 *
Bharat saraswald50c6382016-07-14 21:57:13 +0530904 * @param className class name
905 * @param curNode current YANG node
906 * @param pluginConfig plugin configurations
907 * @return string for is filter content match method
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530908 */
Bharat saraswald50c6382016-07-14 21:57:13 +0530909 public static String getIsFilterContentMatch(String className, YangNode curNode, YangPluginConfig pluginConfig) {
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530910
911 int numleaf = 1;
Bharat saraswald50c6382016-07-14 21:57:13 +0530912 String filterMethod = NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE
913 + SPACE + FILTER_CONTENT_MATCH + OPEN_PARENTHESIS + getCapitalCase(OBJECT)
914 + SPACE + OBJ +
915 CLOSE_PARENTHESIS + SPACE
916 + OPEN_CURLY_BRACKET + NEW_LINE;
917 TempJavaBeanFragmentFiles tempFragmentFiles = ((JavaCodeGeneratorInfo) curNode)
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530918 .getTempJavaCodeFragmentFiles().getBeanTempFiles();
Bharat saraswald50c6382016-07-14 21:57:13 +0530919 filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + getCapitalCase(DEFAULT)
920 + getCapitalCase(className) + SPACE + APP_INSTANCE + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS +
921 getCapitalCase(DEFAULT) + getCapitalCase(className) + CLOSE_PARENTHESIS + OBJ +
922 SEMI_COLAN + NEW_LINE;
923 if (curNode instanceof YangAugmentableNode) {
924 filterMethod = filterMethod + getAugmentableOpParamSyntax();
925 }
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530926
Bharat saraswald50c6382016-07-14 21:57:13 +0530927 if (curNode instanceof YangLeavesHolder) {
928 YangLeavesHolder leavesHolder = (YangLeavesHolder) curNode;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530929 List<YangLeaf> leaves = leavesHolder.getListOfLeaf();
930 List<YangLeafList> listOfLeafList = leavesHolder.getListOfLeafList();
Bharat saraswald50c6382016-07-14 21:57:13 +0530931 if (leaves != null) {
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530932 for (YangLeaf leaf : leaves) {
933 JavaAttributeInfo javaAttributeInfo = getJavaAttributeOfLeaf(tempFragmentFiles, leaf,
Bharat saraswald50c6382016-07-14 21:57:13 +0530934 pluginConfig);
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530935 String attributeName = javaAttributeInfo.getAttributeName();
936
937 String attrQuaifiedType = "";
938 if (isPrimitiveDataType(leaf.getDataType().getDataType())) {
939 attrQuaifiedType = APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
940 + SPACE + NOT + EQUAL + SPACE + attributeName + OPEN_PARENTHESIS
941 + CLOSE_PARENTHESIS;
942 } else {
943 attrQuaifiedType = APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
Bharat saraswald50c6382016-07-14 21:57:13 +0530944 + SPACE + EQUAL + EQUAL + SPACE + NULL + SPACE + OR_OPERATION + SPACE
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530945 + NOT + OPEN_PARENTHESIS + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
946 + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD
Bharat saraswald50c6382016-07-14 21:57:13 +0530947 + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530948 + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS;
949 }
950
951 filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS
952 + GET_FILTER_LEAF + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + GET_METHOD_PREFIX
953 + OPEN_PARENTHESIS + String.valueOf(numleaf) + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
954 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE
955 + OPEN_PARENTHESIS + attrQuaifiedType + CLOSE_PARENTHESIS + SPACE
956 + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE
957 + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE
958 + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
959 numleaf++;
960 }
961 }
962
Bharat saraswald50c6382016-07-14 21:57:13 +0530963 if (listOfLeafList != null) {
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530964 numleaf = 1;
965 for (YangLeafList leafList : listOfLeafList) {
966 JavaAttributeInfo javaAttributeInfo = getJavaAttributeOfLeafList(tempFragmentFiles, leafList,
Bharat saraswald50c6382016-07-14 21:57:13 +0530967 pluginConfig);
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530968 String attributeName = javaAttributeInfo.getAttributeName();
969 String attrQuaifiedType = "";
970 if (isPrimitiveDataType(leafList.getDataType().getDataType())) {
971 attrQuaifiedType = APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
972 + SPACE + NOT + EQUAL + SPACE + attributeName + OPEN_PARENTHESIS
973 + CLOSE_PARENTHESIS;
974 } else {
975 attrQuaifiedType = APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
976 + SPACE + EQUAL + EQUAL + SPACE + NULL + OR_OPERATION + OPEN_PARENTHESIS + NOT
977 + OPEN_PARENTHESIS + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
978 + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD
Bharat saraswald50c6382016-07-14 21:57:13 +0530979 + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
980 + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530981 }
982
983 filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS
984 + GET_FILTER_LEAF_LIST + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + GET_METHOD_PREFIX
985 + OPEN_PARENTHESIS + String.valueOf(numleaf) + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
986 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE
987 + OPEN_PARENTHESIS + attrQuaifiedType + CLOSE_PARENTHESIS + SPACE
988 + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE
989 + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE
990 + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
991 numleaf++;
992 }
993 }
994
995 if (leaves != null || listOfLeafList != null) {
996 filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + RETURN + SPACE + TRUE + SEMI_COLAN +
997 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
998 }
999 }
1000 return filterMethod;
1001 }
1002
Bharat saraswald50c6382016-07-14 21:57:13 +05301003 /*Returns method string for op parms augmented syntax*/
1004 private static String getAugmentableOpParamSyntax() {
1005 return EIGHT_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + YANG_AUGMENTED_INFO + SPACE +
1006 getSmallCase(YANG_AUGMENTED_INFO) + SPACE + COLAN + SPACE + APP_INSTANCE +
1007 PERIOD + GET_METHOD_PREFIX + YANG_AUGMENTED_INFO + MAP + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD
1008 + VALUE + "s" + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
1009 NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + NOT + OPEN_PARENTHESIS +
1010 getSmallCase(YANG_AUGMENTED_INFO) + SPACE + INSTANCE_OF + SPACE + YANG_AUGMENTED_OP_PARAM_INFO +
1011 CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
1012 SIXTEEN_SPACE_INDENTATION + THROW + SPACE + NEW + SPACE + ILLEGAL_ARGUMENT_EXCEPTION +
1013 OPEN_PARENTHESIS +
1014 ILLEGAL_ARGUMENT_EXCEPTION_MSG + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION +
1015 CLOSE_CURLY_BRACKET + NEW_LINE + NEW_LINE + TWELVE_SPACE_INDENTATION + YANG_AUGMENTED_INFO + SPACE +
1016 getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO) + SPACE + EQUAL + SPACE + APP_INSTANCE + PERIOD +
1017 GET_METHOD_PREFIX + AUGMENTED_INFO + OPEN_PARENTHESIS + OPEN_PARENTHESIS + OPEN_PARENTHESIS +
1018 YANG_AUGMENTED_OP_PARAM_INFO + CLOSE_PARENTHESIS + SPACE + getSmallCase(YANG_AUGMENTED_INFO) +
1019 CLOSE_PARENTHESIS + PERIOD + GET_METHOD_PREFIX + BASE_CLASS + CLOSE_PARENTHESIS + SEMI_COLAN +
1020 NEW_LINE + TWELVE_SPACE_INDENTATION + IF + OPEN_PARENTHESIS + NOT +
1021 OPEN_PARENTHESIS + OPEN_PARENTHESIS + YANG_AUGMENTED_OP_PARAM_INFO + CLOSE_PARENTHESIS + SPACE +
1022 getSmallCase(YANG_AUGMENTED_INFO) + CLOSE_PARENTHESIS
1023 + PERIOD + "isFilterContentMatch" + OPEN_PARENTHESIS +
1024 getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO) + CLOSE_PARENTHESIS +
1025 CLOSE_PARENTHESIS +
1026 SPACE + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE +
1027 SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
1028 + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1029 }
1030
Shankara-Huaweib9999eb2016-07-14 16:53:09 +05301031 /**
Bharat saraswald50c6382016-07-14 21:57:13 +05301032 * Returns implementation of get base class method for op param files.
1033 *
1034 * @param baseClassName base class name
1035 * @return implementation of get base class method for op param files
1036 */
1037 public static String getBaseClassMethodImpl(String baseClassName) {
1038 return NEW_LINE + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + CLASS_STRING +
1039 DIAMOND_OPEN_BRACKET +
1040 QUESTION_MARK +
1041 DIAMOND_CLOSE_BRACKET + SPACE + GET_METHOD_PREFIX + BASE_CLASS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
1042 EIGHT_SPACE_INDENTATION + RETURN + SPACE + baseClassName + PERIOD + CLASS + SEMI_COLAN + NEW_LINE +
1043 FOUR_SPACE_INDENTATION +
1044 CLOSE_CURLY_BRACKET;
1045
1046 }
1047
1048 /*
1049 * Retruns omit null value string.
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301050 *
1051 * @return omit null value string
1052 */
1053 public static String getOmitNullValueString() {
1054 return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING + NEW_LINE;
1055 }
1056
1057 /**
1058 * Returns to string method's close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301059 *
1060 * @return to string method close string
1061 */
1062 public static String getToStringMethodClose() {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301063 return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
1064 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301065 }
1066
1067 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301068 * Returns to string method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301069 *
1070 * @param attr attribute info
1071 * @return to string method
1072 */
Vinod Kumar S38046502016-03-23 15:30:27 +05301073 public static String getToStringMethod(JavaAttributeInfo attr) {
1074
janani b4a6711a2016-05-17 13:12:22 +05301075 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +05301076 return TWELVE_SPACE_INDENTATION + PERIOD + ADD_STRING + OPEN_PARENTHESIS + QUOTES + attributeName + QUOTES
1077 + COMMA + SPACE + attributeName + CLOSE_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301078 }
1079
1080 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301081 * Returns from string method's open string.
1082 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301083 * @param className name of the class
Bharat saraswal33dfa012016-05-17 19:59:16 +05301084 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301085 * @return from string method's open string
1086 */
Bharat saraswal33dfa012016-05-17 19:59:16 +05301087 public static String getFromStringMethodSignature(String className, YangPluginConfig pluginConfig) {
1088 return getJavaDoc(FROM_METHOD, className, false, pluginConfig) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
1089 + STATIC + SPACE + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS
1090 + STRING_DATA_TYPE + SPACE + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE
1091 + OPEN_CURLY_BRACKET + NEW_LINE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301092 }
1093
1094 /**
1095 * Return from string method's close string.
1096 *
1097 * @return from string method's close string
1098 */
1099 public static String getFromStringMethodClose() {
1100 return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1101 CLOSE_CURLY_BRACKET + NEW_LINE;
1102 }
1103
1104 /**
1105 * Return from string method's body string.
1106 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301107 * @param attr attribute info
Bharat saraswald50c6382016-07-14 21:57:13 +05301108 * @param fromStringAttributeInfo attribute info for the from string wrapper type
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301109 * @return from string method's body string
1110 */
1111 public static String getFromStringMethod(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301112 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301113
1114 return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
1115 + getParsedSubString(attr, fromStringAttributeInfo) + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
1116 + getReturnOfSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION + getCatchSubString()
1117 + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1118 }
1119
1120 /**
1121 * Returns sub string with try statement for union's from string method.
1122 *
1123 * @return sub string with try statement for union's from string method
1124 */
1125 public static String getTrySubString() {
1126 return TRY + SPACE + OPEN_CURLY_BRACKET;
1127 }
1128
1129 /**
1130 * Returns sub string with return statement for union's from string method.
1131 *
1132 * @return sub string with return statement for union's from string method
1133 */
1134 public static String getReturnOfSubString() {
1135 return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL + CLOSE_PARENTHESIS + SEMI_COLAN;
1136 }
1137
1138 /**
1139 * Returns sub string with catch statement for union's from string method.
1140 *
1141 * @return sub string with catch statement for union's from string method
1142 */
1143 public static String getCatchSubString() {
1144 return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS + EXCEPTION + SPACE + EXCEPTION_VAR
1145 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
1146 }
1147
1148 /**
1149 * Returns sub string with parsed statement for union's from string method.
1150 *
1151 * @param attr attribute info
1152 * @return sub string with parsed statement for union's from string method
1153 */
1154 private static String getParsedSubString(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301155 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301156
1157 String targetDataType = getReturnType(attr);
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +05301158 if (fromStringAttributeInfo.getAttributeType().getDataType() == BITS) {
1159 String lines = targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + NEW + SPACE + targetDataType
1160 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1161 lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
1162 + PERIOD + REPLACE_STRING + OPEN_PARENTHESIS + SINGLE_QUOTE + OPEN_CURLY_BRACKET + SINGLE_QUOTE
1163 + COMMA + SPACE + SINGLE_QUOTE + SPACE + SINGLE_QUOTE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1164 lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
1165 + PERIOD + REPLACE_STRING + OPEN_PARENTHESIS + SINGLE_QUOTE + CLOSE_CURLY_BRACKET + SINGLE_QUOTE
1166 + COMMA + SPACE + SINGLE_QUOTE + SPACE + SINGLE_QUOTE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1167 lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
1168 + PERIOD + TRIM_STRING + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1169 lines += TWELVE_SPACE_INDENTATION + STRING_DATA_TYPE + SQUARE_BRACKETS + SPACE + BITS_STRING_ARRAY_VAR
1170 + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME + PERIOD + SPLIT_STRING + OPEN_PARENTHESIS
1171 + QUOTES + COMMA + QUOTES + COMMA + SPACE + ZERO + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1172 lines += TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + STRING_DATA_TYPE + SPACE
1173 + BIT_TEMP_VAR + SPACE + COLON + SPACE + BITS_STRING_ARRAY_VAR + CLOSE_PARENTHESIS + SPACE
1174 + OPEN_CURLY_BRACKET + NEW_LINE;
1175 lines += SIXTEEN_SPACE_INDENTATION + BIT_TEMP_VAR + SPACE + EQUAL + SPACE + BIT_TEMP_VAR + PERIOD
1176 + TRIM_STRING + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1177 lines += SIXTEEN_SPACE_INDENTATION + TMP_VAL + PERIOD + SET_METHOD_PREFIX + OPEN_PARENTHESIS
1178 + INTEGER_WRAPPER + PERIOD + PARSE_INT + OPEN_PARENTHESIS + BIT_TEMP_VAR + CLOSE_PARENTHESIS
1179 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1180 lines += TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1181 return lines;
1182 } else if (attr.getAttributeType().getDataType() == BINARY) {
1183 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + BASE64 + PERIOD
1184 + GET_DECODER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + DECODE + OPEN_PARENTHESIS
1185 + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +05301186 } else {
1187 String parseFromStringMethod = getParseFromStringMethod(targetDataType,
Bharat saraswald50c6382016-07-14 21:57:13 +05301188 fromStringAttributeInfo.getAttributeType());
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +05301189 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + parseFromStringMethod
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +05301190 + OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +05301191 }
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301192 }
1193
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301194 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301195 * Returns hash code method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301196 *
Bharat saraswald9822e92016-04-05 15:13:44 +05301197 * @return hash code method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301198 */
1199 public static String getHashCodeMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301200 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + INT + SPACE + HASH_CODE_STRING
1201 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
1202 + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301203 }
1204
1205 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301206 * Returns hash code methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301207 *
1208 * @param hashcodeString hash code string
1209 * @return to hash code method close string
1210 */
1211 public static String getHashCodeMethodClose(String hashcodeString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301212 hashcodeString = trimAtLast(hashcodeString, COMMA);
1213 hashcodeString = trimAtLast(hashcodeString, SPACE);
1214 return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1215 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301216 }
1217
1218 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301219 * Returns hash code method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301220 *
1221 * @param attr attribute info
1222 * @return hash code method
1223 */
Vinod Kumar S38046502016-03-23 15:30:27 +05301224 public static String getHashCodeMethod(JavaAttributeInfo attr) {
janani b4a6711a2016-05-17 13:12:22 +05301225 return attr.getAttributeName() + COMMA + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301226 }
1227
1228 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301229 * Returns equals method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301230 *
1231 * @param className class name
Bharat saraswald9822e92016-04-05 15:13:44 +05301232 * @return equals method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301233 */
1234 public static String getEqualsMethodOpen(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301235 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE + EQUALS_STRING
1236 + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + OBJ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
1237 + NEW_LINE + getEqualsMethodsCommonIfCondition() + getEqualsMethodsSpecificIfCondition(className);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301238 }
1239
1240 /**
1241 * Returns equal methods if condition string.
1242 *
1243 * @return if condition string
1244 */
1245 private static String getEqualsMethodsCommonIfCondition() {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301246 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + THIS + SPACE + EQUAL + EQUAL + SPACE + OBJ
1247 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + SPACE
1248 + TRUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301249 }
1250
1251 /**
1252 * Returns if condition for specific class object in equals method.
1253 *
1254 * @param className class name
1255 * @return if condition string
1256 */
1257 private static String getEqualsMethodsSpecificIfCondition(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301258 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + OBJ + INSTANCE_OF + className
1259 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + className
1260 + SPACE + OTHER + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS + className + CLOSE_PARENTHESIS + SPACE
1261 + OBJ + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301262 }
1263
1264 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301265 * Returns equals methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301266 *
1267 * @param equalMethodString equal method string
Bharat saraswald9822e92016-04-05 15:13:44 +05301268 * @return equals method close string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301269 */
1270 public static String getEqualsMethodClose(String equalMethodString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301271 equalMethodString = trimAtLast(equalMethodString, AND);
1272 equalMethodString = trimAtLast(equalMethodString, AND);
1273 equalMethodString = trimAtLast(equalMethodString, SPACE);
1274 equalMethodString = trimAtLast(equalMethodString, NEW_LINE) + SEMI_COLAN + NEW_LINE;
1275 return equalMethodString + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
1276 + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1277 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301278 }
1279
1280 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301281 * Returns equals method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301282 *
1283 * @param attr attribute info
1284 * @return equals method
1285 */
Vinod Kumar S38046502016-03-23 15:30:27 +05301286 public static String getEqualsMethod(JavaAttributeInfo attr) {
1287
janani b4a6711a2016-05-17 13:12:22 +05301288 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +05301289 return SIXTEEN_SPACE_INDENTATION + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS
1290 + attributeName + COMMA + SPACE + OTHER + PERIOD + attributeName + CLOSE_PARENTHESIS + SPACE + AND
1291 + AND;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301292 }
1293
1294 /**
1295 * Returns of method string for class.
1296 *
1297 * @param name class name
1298 * @param attr attribute info
1299 * @return of method string
1300 */
Vinod Kumar S38046502016-03-23 15:30:27 +05301301 public static String getOfMethod(String name, JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301302
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301303 String attrQualifiedType = getReturnType(attr);
1304
Bharat saraswale2d51d62016-03-23 19:40:35 +05301305 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name + SPACE + OF + OPEN_PARENTHESIS
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301306 + attrQualifiedType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Bharat saraswale2d51d62016-03-23 19:40:35 +05301307 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name + OPEN_PARENTHESIS + VALUE
1308 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301309 }
1310
Bharat saraswalcc1cdab2016-04-16 02:28:25 +05301311 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301312 * Returns of method's string and java doc for special type.
1313 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301314 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301315 * @param generatedJavaClassName class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301316 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301317 * @return of method's string and java doc for special type
1318 */
Bharat saraswal33dfa012016-05-17 19:59:16 +05301319 public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301320 YangPluginConfig pluginConfig) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301321
1322 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +05301323 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301324
Bharat saraswal33dfa012016-05-17 19:59:16 +05301325 return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301326 + getOfMethodString(attrType, generatedJavaClassName);
1327 }
1328
1329 /**
1330 * Returns of method's string.
1331 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301332 * @param type data type
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301333 * @param className class name
1334 * @return of method's string
1335 */
1336 private static String getOfMethodString(String type, String className) {
1337
1338 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + className + SPACE + OF + OPEN_PARENTHESIS
1339 + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1340 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + className + OPEN_PARENTHESIS + VALUE
1341 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1342 }
1343
1344 /**
1345 * Returns string and java doc for constructor of type class.
1346 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301347 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301348 * @param generatedJavaClassName class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301349 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301350 * @return string and java doc for constructor of type class
1351 */
Bharat saraswal33dfa012016-05-17 19:59:16 +05301352 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301353 String generatedJavaClassName,
1354 YangPluginConfig pluginConfig) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301355
1356 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +05301357 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301358
Bharat saraswal33dfa012016-05-17 19:59:16 +05301359 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301360 + getTypeConstructorString(attrType, attrName, generatedJavaClassName);
1361 }
1362
1363 /**
1364 * Returns type constructor string.
1365 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301366 * @param type data type
1367 * @param name attribute name
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301368 * @param className class name
1369 * @return type constructor string
1370 */
1371 private static String getTypeConstructorString(String type, String name, String className) {
1372
1373 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
1374 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
1375 + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
1376 + CLOSE_CURLY_BRACKET;
1377 }
1378
1379 /**
Bharat saraswalb551aae2016-07-14 15:18:20 +05301380 * Returns implementation of add augmentation.
1381 *
1382 * @return implementation of add augmentation
1383 */
Bharat saraswald50c6382016-07-14 21:57:13 +05301384 static String getAddAugmentInfoMethodImpl() {
1385 return NEW_LINE + generateForAddAugmentation() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE +
1386 ADD_STRING + AUGMENTED_INFO + OPEN_PARENTHESIS + YANG_AUGMENTED_INFO + SPACE + VALUE + COMMA +
1387 SPACE + CLASS_STRING + SPACE + CLASS + OBJECT_STRING + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
1388 NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + PUT +
1389 OPEN_PARENTHESIS + CLASS + OBJECT_STRING + COMMA + SPACE + VALUE +
Bharat saraswalb551aae2016-07-14 15:18:20 +05301390 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1391 CLOSE_CURLY_BRACKET + NEW_LINE;
1392 }
1393
1394 /**
1395 * Returns implementation of get augment info.
1396 *
1397 * @return implementation of get augment info
1398 */
Bharat saraswald50c6382016-07-14 21:57:13 +05301399 static String getAugmentInfoImpl() {
Bharat saraswalb551aae2016-07-14 15:18:20 +05301400
1401 return generateForGetAugmentation() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
1402 YANG_AUGMENTED_INFO + SPACE + GET_METHOD_PREFIX +
Bharat saraswald50c6382016-07-14 21:57:13 +05301403 AUGMENTED_INFO + OPEN_PARENTHESIS + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
Bharat saraswalb551aae2016-07-14 15:18:20 +05301404 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
1405 RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + GET + OPEN_PARENTHESIS + CLASS +
1406 OBJECT_STRING + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1407 CLOSE_CURLY_BRACKET + NEW_LINE;
1408 }
1409
1410 /**
Bharat saraswald50c6382016-07-14 21:57:13 +05301411 * Returns implementation of get augment info.
1412 *
1413 * @return implementation of get augment info
1414 */
1415 static String getAugmentInfoMapImpl(YangPluginConfig pluginConfig) {
1416
1417 return getJavaDoc(GETTER_METHOD, getSmallCase(YANG_AUGMENTED_INFO) + MAP, false, pluginConfig)
1418 + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
1419 MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING + DIAMOND_OPEN_BRACKET + QUESTION_MARK +
1420 DIAMOND_CLOSE_BRACKET + COMMA + SPACE + YANG_AUGMENTED_INFO + DIAMOND_CLOSE_BRACKET + SPACE +
1421 GET_METHOD_PREFIX + YANG_AUGMENTED_INFO + MAP + OPEN_PARENTHESIS +
1422 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
1423 RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + SEMI_COLAN + NEW_LINE
1424 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1425 }
1426
1427 /**
Bharat saraswald72411a2016-04-19 01:00:16 +05301428 * Returns enum's constructor.
1429 *
1430 * @param className enum's class name
1431 * @return enum's constructor
1432 */
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301433 public static String getEnumsConstructor(String className) {
Bharat saraswald72411a2016-04-19 01:00:16 +05301434 return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
1435 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
1436 + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1437 }
Bharat saraswalc0e04842016-05-12 13:16:57 +05301438
1439 /**
1440 * Returns of method for enum class.
1441 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301442 * @param className class name
1443 * @param attr java attribute
1444 * @param enumMap enum's sets map
1445 * @param enumList enum's sets list
Bharat saraswal33dfa012016-05-17 19:59:16 +05301446 * @param pluginConfig plugin configurations
Bharat saraswalc0e04842016-05-12 13:16:57 +05301447 * @return of method
1448 */
1449 public static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301450 Map<String, Integer> enumMap, List<String> enumList,
1451 YangPluginConfig pluginConfig) {
Bharat saraswalc0e04842016-05-12 13:16:57 +05301452 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +05301453 String attrName = attr.getAttributeName();
Bharat saraswalc0e04842016-05-12 13:16:57 +05301454
janani b4a6711a2016-05-17 13:12:22 +05301455 String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + getCapitalCase(className) + SPACE
1456 + OF + OPEN_PARENTHESIS
Bharat saraswalc0e04842016-05-12 13:16:57 +05301457 + attrType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1458 + EIGHT_SPACE_INDENTATION + SWITCH + SPACE + OPEN_PARENTHESIS + VALUE
1459 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1460 int value = 0;
1461 for (String str : enumList) {
1462
1463 value = enumMap.get(str);
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +05301464 method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value + COLON + NEW_LINE
janani b4a6711a2016-05-17 13:12:22 +05301465 + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + getCapitalCase(className) + PERIOD
Bharat saraswalc0e04842016-05-12 13:16:57 +05301466 + str + SEMI_COLAN + NEW_LINE;
1467 }
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +05301468 method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLON + NEW_LINE + SIXTEEN_SPACE_INDENTATION
Bharat saraswalc0e04842016-05-12 13:16:57 +05301469 + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1470 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1471
Bharat saraswald50c6382016-07-14 21:57:13 +05301472 return getJavaDoc(OF_METHOD, getCapitalCase(className) + " for type" + attrName, false, pluginConfig)
Bharat saraswal33dfa012016-05-17 19:59:16 +05301473 + method;
Bharat saraswalc0e04842016-05-12 13:16:57 +05301474 }
Bharat saraswal33dfa012016-05-17 19:59:16 +05301475
1476 /**
1477 * Returns activate method string.
1478 *
1479 * @return activate method string
1480 */
1481 public static String addActivateMethod() {
1482 return FOUR_SPACE_INDENTATION + ACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
1483 + PUBLIC + SPACE + VOID + SPACE + ACTIVATE + OPEN_PARENTHESIS
1484 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
1485 + NEW_LINE + EIGHT_SPACE_INDENTATION
1486 + YANG_UTILS_TODO
1487 + NEW_LINE + EIGHT_SPACE_INDENTATION
1488 + STARTED_LOG_INFO + FOUR_SPACE_INDENTATION
1489 + CLOSE_CURLY_BRACKET + NEW_LINE;
1490 }
1491
1492 /**
1493 * Returns deactivate method string.
1494 *
1495 * @return deactivate method string
1496 */
1497 public static String addDeActivateMethod() {
1498 return NEW_LINE + FOUR_SPACE_INDENTATION + DEACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
1499 + PUBLIC + SPACE + VOID + SPACE + DEACTIVATE + OPEN_PARENTHESIS
1500 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
1501 + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION
1502 + STOPPED_LOG_INFO + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1503 }
1504
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301505 /**
1506 * Returns from string method parsed string.
1507 *
1508 * @param targetDataType target data type
1509 * @param yangType YANG type
1510 * @return parsed string
1511 */
1512 public static String getParseFromStringMethod(String targetDataType, YangType<?> yangType) {
1513
1514 YangDataTypes type = yangType.getDataType();
1515
1516 switch (type) {
1517 case INT8:
1518 return BYTE_WRAPPER + PERIOD + PARSE_BYTE;
1519 case INT16:
1520 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1521 case INT32:
1522 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1523 case INT64:
1524 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1525 case UINT8:
1526 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1527 case UINT16:
1528 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1529 case UINT32:
1530 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1531 case UINT64:
1532 return NEW + SPACE + BIG_INTEGER;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +05301533 case DECIMAL64:
1534 return NEW + SPACE + BIG_DECIMAL;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301535 case STRING:
1536 return EMPTY_STRING;
1537 case EMPTY:
1538 case BOOLEAN:
1539 return BOOLEAN_WRAPPER + PERIOD + PARSE_BOOLEAN;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301540 case BITS:
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301541 case UNION:
1542 case ENUMERATION:
1543 case DERIVED:
1544 return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
1545 default:
1546 throw new TranslatorException("given data type is not supported.");
1547 }
1548 }
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301549
1550 /**
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301551 * Returns the constructor strings for class file.
1552 *
1553 * @param attr attribute info
1554 * @param pluginConfig plugin configurations
1555 * @return constructor for class
1556 */
1557 public static String getAugmentedConstructor(JavaAttributeInfo attr, YangPluginConfig pluginConfig) {
1558
1559 String attributeName = getCamelCase(attr.getAttributeName(), pluginConfig.getConflictResolver());
1560
1561 return EIGHT_SPACE_INDENTATION + THIS + PERIOD + attributeName + OPEN_PARENTHESIS
1562 + VALUE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
1563 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1564 }
Bharat saraswalb551aae2016-07-14 15:18:20 +05301565
1566 /**
1567 * Returns augmented data getter and setter methods for service class.
1568 *
1569 * @param parent parent node
1570 * @return augmented data getter and setter methods for service class
1571 */
Bharat saraswald50c6382016-07-14 21:57:13 +05301572 static String getAugmentsDataMethodForService(YangNode parent) {
Bharat saraswalb551aae2016-07-14 15:18:20 +05301573 List<YangAtomicPath> targets = getSetOfNodeIdentifiers(parent);
1574 YangNode augmentedNode;
1575 String curNodeName;
1576 String method;
1577 StringBuilder methods = new StringBuilder();
1578 String parentName;
1579 String returnType;
1580 YangPluginConfig pluginConfig = ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig();
1581 for (YangAtomicPath nodeId : targets) {
Bharat saraswald50c6382016-07-14 21:57:13 +05301582 augmentedNode = nodeId.getResolvedNode().getParent();
Bharat saraswalb551aae2016-07-14 15:18:20 +05301583 if (((JavaFileInfoContainer) augmentedNode).getJavaFileInfo().getJavaName() != null) {
1584 curNodeName = ((JavaFileInfoContainer) augmentedNode).getJavaFileInfo().getJavaName();
1585 } else {
1586 curNodeName = getCapitalCase(getCamelCase(augmentedNode.getName(), pluginConfig
1587 .getConflictResolver()));
1588 }
1589 returnType = getAugmentedClassNameForDataMethods(augmentedNode, parent);
Bharat saraswald50c6382016-07-14 21:57:13 +05301590 parentName = getParentNodeNameForDataMethods(augmentedNode, pluginConfig);
Bharat saraswalb551aae2016-07-14 15:18:20 +05301591 method = getJavaDoc(GETTER_METHOD, getSmallCase(AUGMENTED + parentName + curNodeName), false,
1592 pluginConfig) + getGetterForInterface(AUGMENTED + parentName
1593 + getCapitalCase(curNodeName),
1594 returnType, false, GENERATE_SERVICE_AND_MANAGER)
1595 + NEW_LINE;
1596 methods.append(method);
1597
1598 method = getJavaDoc(MANAGER_SETTER_METHOD, AUGMENTED +
1599 getCapitalCase(parentName) + curNodeName, false, pluginConfig) +
1600 getSetterForInterface(getSmallCase(AUGMENTED) + parentName +
1601 getCapitalCase(curNodeName), returnType, parentName,
1602 false,
1603 GENERATE_SERVICE_AND_MANAGER) + NEW_LINE;
1604 methods.append(method);
1605 }
1606 return methods.toString();
1607 }
1608
1609 /**
1610 * Returns augmented data getter and setter methods for manager class.
1611 *
1612 * @param parent parent node
1613 * @return augmented data getter and setter methods for manager class
1614 */
Bharat saraswald50c6382016-07-14 21:57:13 +05301615 static String getAugmentsDataMethodForManager(YangNode parent) {
Bharat saraswalb551aae2016-07-14 15:18:20 +05301616 List<YangAtomicPath> targets = getSetOfNodeIdentifiers(parent);
1617 YangNode augmentedNode;
1618 String curNodeName;
1619 String returnType;
1620 String method;
1621 StringBuilder methods = new StringBuilder();
1622 String parentName;
1623 YangPluginConfig pluginConfig = ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig();
1624 for (YangAtomicPath nodeId : targets) {
Bharat saraswald50c6382016-07-14 21:57:13 +05301625 augmentedNode = nodeId.getResolvedNode().getParent();
Bharat saraswalb551aae2016-07-14 15:18:20 +05301626 if (((JavaFileInfoContainer) augmentedNode).getJavaFileInfo().getJavaName() != null) {
1627 curNodeName = ((JavaFileInfoContainer) augmentedNode).getJavaFileInfo().getJavaName();
1628 } else {
1629 curNodeName = getCapitalCase(getCamelCase(augmentedNode.getName(), pluginConfig
1630 .getConflictResolver()));
1631 }
1632 returnType = getAugmentedClassNameForDataMethods(augmentedNode, parent);
Bharat saraswald50c6382016-07-14 21:57:13 +05301633 parentName = getParentNodeNameForDataMethods(augmentedNode, pluginConfig);
Bharat saraswalb551aae2016-07-14 15:18:20 +05301634 method = getOverRideString() + getGetter(returnType, AUGMENTED
1635 + parentName + getCapitalCase(curNodeName),
1636 GENERATE_SERVICE_AND_MANAGER) + NEW_LINE;
1637 methods.append(method);
1638
1639 method = getOverRideString() + getSetter(parentName, getSmallCase(AUGMENTED) +
1640 getCapitalCase(parentName) + getCapitalCase(curNodeName),
1641 returnType,
1642 GENERATE_SERVICE_AND_MANAGER)
1643 + NEW_LINE;
1644 methods.append(method);
1645 }
1646 return methods.toString();
1647 }
1648
Bharat saraswal870c56f2016-02-20 21:57:16 +05301649}