blob: 255088330424b98fa0b403295908c14968850226 [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;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +053024import org.onosproject.yangutils.datamodel.YangIsFilterContentNodes;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053025import org.onosproject.yangutils.datamodel.YangLeaf;
26import org.onosproject.yangutils.datamodel.YangLeafList;
Bharat saraswale707f032016-07-14 23:33:55 +053027import org.onosproject.yangutils.datamodel.YangLeafRef;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053028import org.onosproject.yangutils.datamodel.YangLeavesHolder;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +053029import org.onosproject.yangutils.datamodel.YangList;
Bharat saraswalb551aae2016-07-14 15:18:20 +053030import org.onosproject.yangutils.datamodel.YangNode;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053031import org.onosproject.yangutils.datamodel.YangType;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +053032import org.onosproject.yangutils.datamodel.javadatamodel.JavaFileInfo;
33import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
janani be18b5342016-07-13 21:06:41 +053034import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053035import org.onosproject.yangutils.translator.exception.TranslatorException;
Vinod Kumar S38046502016-03-23 15:30:27 +053036import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053037import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
Bharat saraswald50c6382016-07-14 21:57:13 +053038import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053039import org.onosproject.yangutils.translator.tojava.TempJavaBeanFragmentFiles;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053040import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
Bharat saraswale2d51d62016-03-23 19:40:35 +053041
Bharat saraswald50c6382016-07-14 21:57:13 +053042import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BINARY;
43import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BITS;
44import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BOOLEAN;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053045import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DECIMAL64;
Bharat saraswald50c6382016-07-14 21:57:13 +053046import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.EMPTY;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053047import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT16;
48import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT32;
49import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT64;
Bharat saraswald50c6382016-07-14 21:57:13 +053050import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT8;
Bharat saraswale707f032016-07-14 23:33:55 +053051import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.LEAFREF;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053052import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT16;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053053import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT32;
Bharat saraswald50c6382016-07-14 21:57:13 +053054import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT64;
55import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT8;
Bharat saraswal33dfa012016-05-17 19:59:16 +053056import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053057import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053058import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.getJavaAttributeOfLeaf;
59import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.getJavaAttributeOfLeafList;
Bharat saraswald50c6382016-07-14 21:57:13 +053060import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getAugmentedClassNameForDataMethods;
61import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getParentNodeNameForDataMethods;
62import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getSetOfNodeIdentifiers;
Bharat saraswale707f032016-07-14 23:33:55 +053063import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.INT_TYPE_CONFLICT;
Bharat saraswale707f032016-07-14 23:33:55 +053064import static org.onosproject.yangutils.utils.UtilConstants.ADD;
Bharat saraswale2d51d62016-03-23 19:40:35 +053065import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
66import static org.onosproject.yangutils.utils.UtilConstants.AND;
Bharat saraswald50c6382016-07-14 21:57:13 +053067import static org.onosproject.yangutils.utils.UtilConstants.APP_INSTANCE;
Bharat saraswalb551aae2016-07-14 15:18:20 +053068import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +053069import static org.onosproject.yangutils.utils.UtilConstants.BASE64;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +053070import static org.onosproject.yangutils.utils.UtilConstants.BIG_DECIMAL;
Bharat saraswalb1170bd2016-07-14 13:26:18 +053071import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053072import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053073import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +053074import static org.onosproject.yangutils.utils.UtilConstants.BREAK;
Bharat saraswale2d51d62016-03-23 19:40:35 +053075import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
76import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053077import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053078import static org.onosproject.yangutils.utils.UtilConstants.BYTE_WRAPPER;
Bharat saraswalc0e04842016-05-12 13:16:57 +053079import static org.onosproject.yangutils.utils.UtilConstants.CASE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053080import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +053081import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
Bharat saraswalb551aae2016-07-14 15:18:20 +053082import static org.onosproject.yangutils.utils.UtilConstants.CLASS;
83import static org.onosproject.yangutils.utils.UtilConstants.CLASS_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +053084import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
85import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
Bharat saraswald50c6382016-07-14 21:57:13 +053086import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +053087import static org.onosproject.yangutils.utils.UtilConstants.COLON;
Bharat saraswale2d51d62016-03-23 19:40:35 +053088import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +053089import static org.onosproject.yangutils.utils.UtilConstants.DECODE;
Bharat saraswalc0e04842016-05-12 13:16:57 +053090import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
Bharat saraswale2d51d62016-03-23 19:40:35 +053091import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
92import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +053093import static org.onosproject.yangutils.utils.UtilConstants.DOUBLE;
Bharat saraswale2d51d62016-03-23 19:40:35 +053094import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
Bharat saraswale707f032016-07-14 23:33:55 +053095import static org.onosproject.yangutils.utils.UtilConstants.ELSE;
Bharat saraswale2d51d62016-03-23 19:40:35 +053096import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +053097import static org.onosproject.yangutils.utils.UtilConstants.ENUM;
Bharat saraswale2d51d62016-03-23 19:40:35 +053098import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
99import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530100import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
101import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530102import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
Bharat saraswald50c6382016-07-14 21:57:13 +0530103import static org.onosproject.yangutils.utils.UtilConstants.FILTER_CONTENT_MATCH;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530104import static org.onosproject.yangutils.utils.UtilConstants.FLAG;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530105import static org.onosproject.yangutils.utils.UtilConstants.FOR;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530106import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530107import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
108import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530109import static org.onosproject.yangutils.utils.UtilConstants.GET;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530110import static org.onosproject.yangutils.utils.UtilConstants.GET_CLASS;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530111import static org.onosproject.yangutils.utils.UtilConstants.GET_DECODER;
Bharat saraswald50c6382016-07-14 21:57:13 +0530112import static org.onosproject.yangutils.utils.UtilConstants.GET_FILTER_LEAF;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530113import static org.onosproject.yangutils.utils.UtilConstants.GET_LEAF_INDEX;
114import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530115import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
116import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
117import static org.onosproject.yangutils.utils.UtilConstants.HASH;
118import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
119import static org.onosproject.yangutils.utils.UtilConstants.IF;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530120import static org.onosproject.yangutils.utils.UtilConstants.ILLEGAL_ACCESS_EXCEPTION;
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 saraswale707f032016-07-14 23:33:55 +0530124import static org.onosproject.yangutils.utils.UtilConstants.INT_MAX_RANGE;
125import static org.onosproject.yangutils.utils.UtilConstants.INT_MIN_RANGE;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530126import static org.onosproject.yangutils.utils.UtilConstants.INVOCATION_TARGET_EXCEPTION;
127import static org.onosproject.yangutils.utils.UtilConstants.INVOKE;
128import static org.onosproject.yangutils.utils.UtilConstants.IS_EMPTY;
129import static org.onosproject.yangutils.utils.UtilConstants.IS_SELECT_LEAF;
130import static org.onosproject.yangutils.utils.UtilConstants.LEAF_IDENTIFIER;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530131import static org.onosproject.yangutils.utils.UtilConstants.LIST;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530132import static org.onosproject.yangutils.utils.UtilConstants.LONG;
Bharat saraswale707f032016-07-14 23:33:55 +0530133import static org.onosproject.yangutils.utils.UtilConstants.LONG_MAX_RANGE;
134import static org.onosproject.yangutils.utils.UtilConstants.LONG_MIN_RANGE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530135import static org.onosproject.yangutils.utils.UtilConstants.LONG_WRAPPER;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530136import static org.onosproject.yangutils.utils.UtilConstants.MAP;
Bharat saraswale707f032016-07-14 23:33:55 +0530137import static org.onosproject.yangutils.utils.UtilConstants.MAX_RANGE;
138import static org.onosproject.yangutils.utils.UtilConstants.MIN_RANGE;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530139import static org.onosproject.yangutils.utils.UtilConstants.NEW;
140import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Bharat saraswald50c6382016-07-14 21:57:13 +0530141import static org.onosproject.yangutils.utils.UtilConstants.NOT;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530142import static org.onosproject.yangutils.utils.UtilConstants.NO_SUCH_METHOD_EXCEPTION;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530143import static org.onosproject.yangutils.utils.UtilConstants.NULL;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530144import static org.onosproject.yangutils.utils.UtilConstants.OBJ;
145import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
146import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
147import static org.onosproject.yangutils.utils.UtilConstants.OF;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530148import static org.onosproject.yangutils.utils.UtilConstants.OMIT_NULL_VALUE_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530149import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
150import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530151import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM;
Bharat saraswald50c6382016-07-14 21:57:13 +0530152import static org.onosproject.yangutils.utils.UtilConstants.OR_OPERATION;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530153import static org.onosproject.yangutils.utils.UtilConstants.OTHER;
154import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530155import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BOOLEAN;
156import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BYTE;
157import static org.onosproject.yangutils.utils.UtilConstants.PARSE_INT;
158import static org.onosproject.yangutils.utils.UtilConstants.PARSE_LONG;
159import static org.onosproject.yangutils.utils.UtilConstants.PARSE_SHORT;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530160import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
Bharat saraswale707f032016-07-14 23:33:55 +0530161import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530162import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530163import static org.onosproject.yangutils.utils.UtilConstants.PUT;
Bharat saraswald50c6382016-07-14 21:57:13 +0530164import static org.onosproject.yangutils.utils.UtilConstants.QUESTION_MARK;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530165import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
Bharat saraswald50c6382016-07-14 21:57:13 +0530166import static org.onosproject.yangutils.utils.UtilConstants.REPLACE_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530167import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530168import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530169import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
170import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530171import static org.onosproject.yangutils.utils.UtilConstants.SET_SELECT_LEAF;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530172import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530173import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
Bharat saraswald50c6382016-07-14 21:57:13 +0530174import static org.onosproject.yangutils.utils.UtilConstants.SINGLE_QUOTE;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530175import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
176import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswald50c6382016-07-14 21:57:13 +0530177import static org.onosproject.yangutils.utils.UtilConstants.SPLIT_STRING;
178import static org.onosproject.yangutils.utils.UtilConstants.SQUARE_BRACKETS;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530179import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
180import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
181import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530182import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530183import static org.onosproject.yangutils.utils.UtilConstants.THIS;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530184import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530185import static org.onosproject.yangutils.utils.UtilConstants.TO;
Bharat saraswald50c6382016-07-14 21:57:13 +0530186import static org.onosproject.yangutils.utils.UtilConstants.TRIM_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530187import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530188import static org.onosproject.yangutils.utils.UtilConstants.TRY;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530189import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530190import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_FOUR_SPACE_INDENTATION;
191import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_SPACE_INDENTATION;
Bharat saraswale707f032016-07-14 23:33:55 +0530192import static org.onosproject.yangutils.utils.UtilConstants.UINT_MAX_RANGE;
193import static org.onosproject.yangutils.utils.UtilConstants.UINT_MIN_RANGE;
194import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MAX_RANGE;
195import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MIN_RANGE;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530196import static org.onosproject.yangutils.utils.UtilConstants.UNDER_SCORE;
Bharat saraswale707f032016-07-14 23:33:55 +0530197import static org.onosproject.yangutils.utils.UtilConstants.VALIDATE_RANGE;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530198import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530199import static org.onosproject.yangutils.utils.UtilConstants.VALUE_LEAF_SET;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530200import static org.onosproject.yangutils.utils.UtilConstants.VOID;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530201import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
Bharat saraswald50c6382016-07-14 21:57:13 +0530202import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_OP_PARAM_INFO;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530203import static org.onosproject.yangutils.utils.UtilConstants.YANG_UTILS_TODO;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530204import static org.onosproject.yangutils.utils.UtilConstants.ZERO;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530205import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
206import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
207import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530208import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.FROM_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530209import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530210import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.MANAGER_SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530211import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530212import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530213import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530214import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForAddAugmentation;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530215import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForBuilderMethod;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530216import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForGetAugmentation;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530217import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForGetMethodWithAttribute;
Bharat saraswale707f032016-07-14 23:33:55 +0530218import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForValidatorMethod;
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530219import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530220import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
221import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
222import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530223import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530224
225/**
Bharat saraswald9822e92016-04-05 15:13:44 +0530226 * Represents generator for methods of generated files based on the file type.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530227 */
228public final class MethodsGenerator {
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530229 private static final String BITS_STRING_ARRAY_VAR = "bitsTemp";
230 private static final String BIT_TEMP_VAR = "bitTemp";
Bharat saraswal870c56f2016-02-20 21:57:16 +0530231
Bharat saraswal870c56f2016-02-20 21:57:16 +0530232 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530233 * Creates an instance of method generator.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530234 */
235 private MethodsGenerator() {
236 }
237
238 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530239 * Returns the methods strings for builder interface.
240 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530241 * @param name attribute name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530242 * @param pluginConfig plugin configurations
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530243 * @return method string for builder interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530244 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530245 public static String parseBuilderInterfaceBuildMethodString(String name, YangPluginConfig pluginConfig) {
246 return getJavaDoc(BUILD_METHOD, name, false, pluginConfig) + getBuildForInterface(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530247 }
248
249 /**
250 * Returns getter string.
251 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530252 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530253 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530254 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530255 * @return getter string
256 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530257 public static String getGetterString(JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530258 YangPluginConfig pluginConfig) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530259
Vinod Kumar S38046502016-03-23 15:30:27 +0530260 String returnType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530261 String attributeName = attr.getAttributeName();
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530262 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
263 return generateForGetMethodWithAttribute(returnType)
264 + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles);
265 }
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530266
Bharat saraswal33dfa012016-05-17 19:59:16 +0530267 return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr(), pluginConfig)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530268 + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530269 }
270
271 /**
272 * Returns setter string.
273 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530274 * @param attr attribute info
275 * @param className java class name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530276 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530277 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530278 * @return setter string
279 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530280 public static String getSetterString(JavaAttributeInfo attr, String className, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530281 YangPluginConfig pluginConfig) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530282
Vinod Kumar S38046502016-03-23 15:30:27 +0530283 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530284 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530285 JavaDocGen.JavaDocType type;
Bharat saraswale707f032016-07-14 23:33:55 +0530286 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530287 type = MANAGER_SETTER_METHOD;
288 } else {
289 type = SETTER_METHOD;
290 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530291
Bharat saraswal33dfa012016-05-17 19:59:16 +0530292 return getJavaDoc(type, attributeName, attr.isListAttr(), pluginConfig)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530293 + getSetterForInterface(attributeName, attrType, className, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530294 }
295
296 /**
297 * Returns constructor method string.
298 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530299 * @param name class name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530300 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530301 * @return constructor string
302 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530303 private static String getConstructorString(String name, YangPluginConfig pluginConfig) {
Bharat saraswal33dfa012016-05-17 19:59:16 +0530304 return getJavaDoc(CONSTRUCTOR, name, false, pluginConfig);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530305 }
306
307 /**
308 * Returns default constructor method string.
309 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530310 * @param name class name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530311 * @param modifierType modifier type
Bharat saraswal33dfa012016-05-17 19:59:16 +0530312 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530313 * @return default constructor string
314 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530315 public static String getDefaultConstructorString(String name, String modifierType,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530316 YangPluginConfig pluginConfig) {
Bharat saraswal33dfa012016-05-17 19:59:16 +0530317 return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false, pluginConfig)
318 + getDefaultConstructor(name, modifierType)
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530319 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530320 }
321
322 /**
323 * Returns check not null string.
324 *
325 * @param name attribute name
326 * @return check not null string
327 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530328 static String getCheckNotNull(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530329 return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING + OPEN_PARENTHESIS + name + COMMA + SPACE + name
330 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530331 }
332
333 /**
334 * Returns build method string.
335 *
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530336 * @param name class name
337 * @param isRootNode if root node
Bharat saraswal870c56f2016-02-20 21:57:16 +0530338 * @return build string
339 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530340 public static String getBuildString(String name, boolean isRootNode) {
341 if (isRootNode) {
342 return NEW_LINE + getBuild(name, true);
343 }
344 return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name, false);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530345 }
346
347 /**
348 * Returns the getter method strings for class file.
349 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530350 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530351 * @param generatedJavaFiles for the type of java file being generated
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530352 * @return getter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530353 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530354 public static String getGetterForClass(JavaAttributeInfo attr, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530355
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530356 String attrQualifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530357 String attributeName = attr.getAttributeName();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530358
359 if (!attr.isListAttr()) {
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530360 return getGetter(attrQualifiedType, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530361 }
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530362 String listAttr = getListString() + attrQualifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530363 return getGetter(listAttr, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530364 }
365
366 /**
367 * Returns getter for attribute.
368 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530369 * @param type return type
370 * @param name attribute name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530371 * @param generatedJavaFiles generated java files
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530372 * @return getter for attribute
373 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530374 static String getGetter(String type, String name, int generatedJavaFiles) {
Bharat saraswalcad0e652016-05-26 23:48:38 +0530375 String ret = parseTypeForReturnValue(type);
Bharat saraswale707f032016-07-14 23:33:55 +0530376 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
janani b4a6711a2016-05-17 13:12:22 +0530377 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCapitalCase(name)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530378 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
379 EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION +
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530380 RETURN + SPACE + ret + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530381 } else {
382 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + name
383 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
384 EIGHT_SPACE_INDENTATION + RETURN + SPACE + name + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
385 + CLOSE_CURLY_BRACKET;
386 }
387
Bharat saraswal870c56f2016-02-20 21:57:16 +0530388 }
389
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530390 /*Provides string to return for type.*/
Bharat saraswalcad0e652016-05-26 23:48:38 +0530391 private static String parseTypeForReturnValue(String type) {
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530392 switch (type) {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530393 case BYTE:
394 case INT:
395 case SHORT:
396 case LONG:
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +0530397 case DOUBLE:
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530398 return "0";
399 case BOOLEAN_DATA_TYPE:
400 return FALSE;
401 default:
402 return null;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530403 }
404 }
405
Bharat saraswal870c56f2016-02-20 21:57:16 +0530406 /**
407 * Returns the setter method strings for class file.
408 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530409 * @param attr attribute info
410 * @param className name of the class
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530411 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530412 * @return setter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530413 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530414 public static String getSetterForClass(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530415
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530416 String attrQualifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530417 String attributeName = attr.getAttributeName();
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530418 boolean isTypeNull = false;
419 if (attr.getAttributeType() == null) {
420 isTypeNull = true;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530421 }
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530422 if (!attr.isListAttr()) {
423 return getSetter(className, attributeName, attrQualifiedType, generatedJavaFiles, isTypeNull, false);
424 }
425 String listAttr = getListString() + attrQualifiedType + DIAMOND_CLOSE_BRACKET;
426 return getSetter(className, attributeName, listAttr, generatedJavaFiles, isTypeNull, true);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530427 }
428
429 /**
430 * Returns setter for attribute.
431 *
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530432 * @param className class name
433 * @param name attribute name
434 * @param type return type
435 * @param isTypeNull if attribute type is null
436 * @param isList true if leaf-list
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530437 * @return setter for attribute
438 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530439 private static String getSetter(String className, String name, String type, int generatedJavaFiles,
440 boolean isTypeNull, boolean isList) {
Bharat saraswale707f032016-07-14 23:33:55 +0530441 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530442 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX
janani b4a6711a2016-05-17 13:12:22 +0530443 + getCapitalCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530444 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO +
445 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530446 } else if (generatedJavaFiles == GENERATE_EVENT_SUBJECT_CLASS) {
447 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + name + OPEN_PARENTHESIS + type + SPACE
448 + name + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
449 + THIS + PERIOD + name + SPACE + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE
450 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530451 } else {
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530452 String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE +
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530453 name + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530454 + OPEN_CURLY_BRACKET;
455 if (!isTypeNull && !isList) {
456 method = method + getValueLeafSetString(name);
457 } else {
458 method = method + EMPTY_STRING;
459 }
460 return method + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS +
461 PERIOD + name + SPACE
Bharat saraswal33dfa012016-05-17 19:59:16 +0530462 + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE
463 + THIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530464 }
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530465
466 }
467
468 //Returns value leaf flag setter.
469 private static String getValueLeafSetString(String name) {
470 return "\n get_valueLeafFlags().set(LeafIdentifier." + name.toUpperCase() + ".getLeafIndex());";
Bharat saraswal870c56f2016-02-20 21:57:16 +0530471 }
472
473 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530474 * Returns the setter method strings for class file.
475 *
476 * @param attr attribute info
477 * @return setter method for class
478 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530479 static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530480
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530481 String attrQualifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530482 String attributeName = attr.getAttributeName();
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530483 return getTypeDefSetter(attrQualifiedType, attributeName);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530484 }
485
486 /**
487 * Returns type def's setter for attribute.
488 *
489 * @param type data type
490 * @param name attribute name
491 * @return setter for type def's attribute
492 */
493 private static String getTypeDefSetter(String type, String name) {
janani b4a6711a2016-05-17 13:12:22 +0530494 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(name)
Bharat saraswale2d51d62016-03-23 19:40:35 +0530495 + OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530496 + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN +
497 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530498 }
499
500 /**
501 * Returns override string.
502 *
503 * @return override string
504 */
505 public static String getOverRideString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530506 return NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530507 }
508
509 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530510 * Returns the getter method strings for interface file.
511 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530512 * @param yangName name of the attribute
513 * @param returnType return type of attribute
514 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530515 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530516 * @return getter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530517 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530518 static String getGetterForInterface(String yangName, String returnType, boolean isList,
519 int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530520
521 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530522 return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530523 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530524 String listAttr = getListString() + returnType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530525 return getGetterInterfaceString(listAttr, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530526 }
527
528 /**
529 * Returns getter for attribute in interface.
530 *
531 * @param returnType return type
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530532 * @param yangName attribute name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530533 * @return getter for interface
534 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530535 private static String getGetterInterfaceString(String returnType, String yangName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530536 int generatedJavaFiles) {
Bharat saraswale707f032016-07-14 23:33:55 +0530537 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530538 return getGetMethodWithArgument(returnType, yangName);
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530539 } else {
540 return FOUR_SPACE_INDENTATION + returnType + SPACE + yangName
541 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
542 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530543 }
544
545 /**
546 * Returns the setter method strings for interface file.
547 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530548 * @param attrName name of the attribute
549 * @param attrType return type of attribute
550 * @param className name of the java class being generated
551 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530552 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530553 * @return setter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530554 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530555 static String getSetterForInterface(String attrName, String attrType, String className,
556 boolean isList, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530557
558 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530559 return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530560 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530561 String listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530562 return getSetterInterfaceString(className, attrName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530563 }
564
565 /**
566 * Returns setter string for interface.
567 *
568 * @param className class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530569 * @param attrName attribute name
570 * @param attrType attribute type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530571 * @return setter string
572 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530573 private static String getSetterInterfaceString(String className, String attrName, String attrType,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530574 int generatedJavaFiles) {
Bharat saraswale707f032016-07-14 23:33:55 +0530575 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
janani b4a6711a2016-05-17 13:12:22 +0530576 return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(attrName)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530577 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
578 } else {
579 return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + attrName
580 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
581 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530582 }
583
584 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530585 * Returns list string.
586 *
587 * @return list string
588 */
589 private static String getListString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530590 return LIST + DIAMOND_OPEN_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530591 }
592
593 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530594 * Returns return type for attribute.
595 *
596 * @param attr attribute info
597 * @return return type
598 */
599 private static String getReturnType(JavaAttributeInfo attr) {
600
Bharat saraswale2d51d62016-03-23 19:40:35 +0530601 String returnType = EMPTY_STRING;
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530602 if (attr.isQualifiedName() && attr.getImportInfo().getPkgInfo() != null) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530603 returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
Vinod Kumar S38046502016-03-23 15:30:27 +0530604 }
605 returnType = returnType + attr.getImportInfo().getClassInfo();
606 return returnType;
607 }
608
609 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530610 * Returns the build method strings for interface file.
611 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530612 * @param yangName name of the interface
613 * @return build method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530614 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530615 static String getBuildForInterface(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530616 return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
617 + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530618 }
619
620 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530621 * Returns constructor string for impl class.
622 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530623 * @param yangName class name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530624 * @param pluginConfig plugin configurations
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530625 * @param isRootNode if root node
Vinod Kumar S38046502016-03-23 15:30:27 +0530626 * @return constructor string
627 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530628 static String getConstructorStart(String yangName, YangPluginConfig pluginConfig, boolean isRootNode) {
Vinod Kumar S38046502016-03-23 15:30:27 +0530629
Bharat saraswal33dfa012016-05-17 19:59:16 +0530630 String javadoc = getConstructorString(yangName, pluginConfig);
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530631
632 String returnType = getCapitalCase(DEFAULT) + yangName;
633 if (isRootNode) {
634 returnType = yangName + OP_PARAM;
635 }
636 String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + returnType +
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530637 OPEN_PARENTHESIS + yangName + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT
638 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
Vinod Kumar S38046502016-03-23 15:30:27 +0530639 return javadoc + constructor;
640 }
641
642 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530643 * Returns the constructor strings for class file.
644 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530645 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530646 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530647 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530648 * @return constructor for class
649 */
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530650 public static String getConstructor(JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530651 YangPluginConfig pluginConfig) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530652
janani b4a6711a2016-05-17 13:12:22 +0530653 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530654 String constructor;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530655
Bharat saraswale707f032016-07-14 23:33:55 +0530656 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530657 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD
658 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
659 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
660 + getCapitalCase(getCamelCase(attributeName, pluginConfig.getConflictResolver()))
661 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530662 } else {
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530663 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD
664 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
665 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD
666 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) +
667 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530668 }
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530669 return constructor;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530670 }
671
672 /**
Gaurav Agrawal56527662016-04-20 15:49:17 +0530673 * Returns the rpc strings for service interface.
674 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530675 * @param rpcName name of the rpc
676 * @param inputName name of input
677 * @param outputName name of output
Bharat saraswal33dfa012016-05-17 19:59:16 +0530678 * @param pluginConfig plugin configurations
Gaurav Agrawal56527662016-04-20 15:49:17 +0530679 * @return rpc method string
680 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530681 public static String getRpcServiceMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530682 YangPluginConfig pluginConfig) {
Gaurav Agrawal56527662016-04-20 15:49:17 +0530683
Bharat saraswal33dfa012016-05-17 19:59:16 +0530684 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswalcad0e652016-05-26 23:48:38 +0530685 if (!inputName.equals(EMPTY_STRING)) {
686 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530687 }
Bharat saraswalcad0e652016-05-26 23:48:38 +0530688 return FOUR_SPACE_INDENTATION + outputName + SPACE + rpcName + OPEN_PARENTHESIS + inputName
689 + CLOSE_PARENTHESIS + SEMI_COLAN;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530690 }
691
692 /**
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530693 * Returns the rpc strings for manager impl.
694 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530695 * @param rpcName name of the rpc
696 * @param inputName name of input
697 * @param outputName name of output
Bharat saraswal33dfa012016-05-17 19:59:16 +0530698 * @param pluginConfig plugin configurations
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530699 * @return rpc method string
700 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530701 public static String getRpcManagerMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530702 YangPluginConfig pluginConfig) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530703
Bharat saraswal33dfa012016-05-17 19:59:16 +0530704 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswalcad0e652016-05-26 23:48:38 +0530705 if (!inputName.equals(EMPTY_STRING)) {
706 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530707 }
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530708
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530709 String method = getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName
710 + OPEN_PARENTHESIS + inputName + CLOSE_PARENTHESIS + SPACE
711 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530712 if (!outputName.contentEquals(VOID)) {
Bharat saraswalcad0e652016-05-26 23:48:38 +0530713 method += EIGHT_SPACE_INDENTATION + RETURN + SPACE + parseTypeForReturnValue(outputName) + SEMI_COLAN
714 + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530715 }
716 method += FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
717
718 return method;
719 }
720
721 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530722 * Returns the build method strings for class file.
723 *
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530724 * @param yangName class name
725 * @param isRootNode if root node
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530726 * @return build method string for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530727 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530728 static String getBuild(String yangName, boolean isRootNode) {
729 String type = getCapitalCase(DEFAULT) + yangName;
730 if (isRootNode) {
731 type = yangName + OP_PARAM;
732 }
733 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS +
734 CLOSE_PARENTHESIS
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530735 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE +
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530736 type + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530737 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530738 }
739
740 /**
741 * Returns the Default constructor strings for class file.
742 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530743 * @param name name of the class
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530744 * @param modifierType modifier type for default constructor
Bharat saraswal870c56f2016-02-20 21:57:16 +0530745 * @return Default constructor for class
746 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530747 private static String getDefaultConstructor(String name, String modifierType) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530748 return FOUR_SPACE_INDENTATION + modifierType + SPACE + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
749 + OPEN_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530750 }
751
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530752 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530753 * Returns to string method's open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530754 *
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530755 * @return string method's open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530756 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530757 static String getToStringMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530758 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STRING_DATA_TYPE + SPACE + TO
759 + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
760 + EIGHT_SPACE_INDENTATION + RETURN + GOOGLE_MORE_OBJECT_METHOD_STRING + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530761 }
762
763 /**
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530764 * Returns whether the data type is of primitive data type.
765 *
766 * @param dataType data type to be checked
767 * @return true, if data type can have primitive data type, false otherwise
768 */
Bharat saraswale707f032016-07-14 23:33:55 +0530769 private static boolean isPrimitiveDataType(YangDataTypes dataType) {
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530770 return dataType == INT8
771 || dataType == INT16
772 || dataType == INT32
773 || dataType == INT64
774 || dataType == UINT8
775 || dataType == UINT16
776 || dataType == UINT32
777 || dataType == UINT64
778 || dataType == DECIMAL64
Bharat saraswald50c6382016-07-14 21:57:13 +0530779 || dataType == BOOLEAN
780 || dataType == EMPTY;
Bharat saraswale707f032016-07-14 23:33:55 +0530781
782 }
783
784 private static String getAttrTypeForFilterContentMatchWhenPrimitiveDataType(String attributeName) {
785 return APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
786 + SPACE + NOT + EQUAL + SPACE + attributeName + OPEN_PARENTHESIS
787 + CLOSE_PARENTHESIS;
788 }
789
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530790 private static String getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(String attributeName) {
Bharat saraswale707f032016-07-14 23:33:55 +0530791 return APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
792 + SPACE + EQUAL + EQUAL + SPACE + NULL + SPACE + OR_OPERATION + SPACE
793 + NOT + OPEN_PARENTHESIS + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
794 + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD
795 + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
796 + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS;
797 }
798
799 private static String getIfFilterContentMatchMethodImpl(String attributeName,
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530800 YangType dataType) {
Bharat saraswale707f032016-07-14 23:33:55 +0530801 String attrQualifiedType;
802
803 if (isPrimitiveDataType(dataType.getDataType())) {
804 attrQualifiedType = getAttrTypeForFilterContentMatchWhenPrimitiveDataType(attributeName);
805 } else if (dataType.getDataType() == LEAFREF) {
806 YangType type = ((YangLeafRef) dataType.getDataTypeExtendedInfo()).getEffectiveDataType();
807 if (isPrimitiveDataType(type.getDataType())) {
808 attrQualifiedType = getAttrTypeForFilterContentMatchWhenPrimitiveDataType(attributeName);
809 } else {
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530810 attrQualifiedType = getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(attributeName);
Bharat saraswale707f032016-07-14 23:33:55 +0530811 }
812 } else {
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530813 attrQualifiedType = getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(attributeName);
Bharat saraswale707f032016-07-14 23:33:55 +0530814 }
815
816 return attrQualifiedType;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530817 }
818
819 /**
820 * Returns string for is filter content match method.
821 *
Bharat saraswald50c6382016-07-14 21:57:13 +0530822 * @param curNode current YANG node
823 * @param pluginConfig plugin configurations
824 * @return string for is filter content match method
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530825 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530826 static String getIsFilterContentMatch(YangNode curNode, YangPluginConfig pluginConfig) {
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530827
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530828 String filterMethod = getOverRideString();
Bharat saraswald50c6382016-07-14 21:57:13 +0530829 TempJavaBeanFragmentFiles tempFragmentFiles = ((JavaCodeGeneratorInfo) curNode)
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530830 .getTempJavaCodeFragmentFiles().getBeanTempFiles();
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530831 JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
Bharat saraswald50c6382016-07-14 21:57:13 +0530832 if (curNode instanceof YangLeavesHolder) {
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530833 filterMethod = filterMethod + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE
834 + SPACE + FILTER_CONTENT_MATCH + OPEN_PARENTHESIS + getCapitalCase(javaFileInfo.getJavaName())
835 + SPACE + APP_INSTANCE + CLOSE_PARENTHESIS + SPACE
Bharat saraswale707f032016-07-14 23:33:55 +0530836 + OPEN_CURLY_BRACKET + NEW_LINE;
Bharat saraswale707f032016-07-14 23:33:55 +0530837 if (curNode instanceof YangAugmentableNode) {
838 filterMethod = filterMethod + getAugmentableOpParamSyntax();
839 }
840
Bharat saraswald50c6382016-07-14 21:57:13 +0530841 YangLeavesHolder leavesHolder = (YangLeavesHolder) curNode;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530842 List<YangLeaf> leaves = leavesHolder.getListOfLeaf();
843 List<YangLeafList> listOfLeafList = leavesHolder.getListOfLeafList();
Bharat saraswale707f032016-07-14 23:33:55 +0530844 String attrQualifiedType;
Bharat saraswald50c6382016-07-14 21:57:13 +0530845 if (leaves != null) {
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530846 for (YangLeaf leaf : leaves) {
847 JavaAttributeInfo javaAttributeInfo = getJavaAttributeOfLeaf(tempFragmentFiles, leaf,
Bharat saraswald50c6382016-07-14 21:57:13 +0530848 pluginConfig);
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530849 String attributeName = javaAttributeInfo.getAttributeName();
Bharat saraswale707f032016-07-14 23:33:55 +0530850 attrQualifiedType = getIfFilterContentMatchMethodImpl(attributeName,
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530851 leaf.getDataType());
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530852 filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS
853 + GET_FILTER_LEAF + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + GET_METHOD_PREFIX
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530854 + OPEN_PARENTHESIS + LEAF_IDENTIFIER + PERIOD + attributeName.toUpperCase() + PERIOD +
855 GET_LEAF_INDEX
856 + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530857 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE
Bharat saraswale707f032016-07-14 23:33:55 +0530858 + OPEN_PARENTHESIS + attrQualifiedType + CLOSE_PARENTHESIS + SPACE
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530859 + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE
860 + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530861 + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + NEW_LINE;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530862 }
863 }
864
Bharat saraswald50c6382016-07-14 21:57:13 +0530865 if (listOfLeafList != null) {
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530866 for (YangLeafList leafList : listOfLeafList) {
867 JavaAttributeInfo javaAttributeInfo = getJavaAttributeOfLeafList(tempFragmentFiles, leafList,
Bharat saraswald50c6382016-07-14 21:57:13 +0530868 pluginConfig);
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530869 String attributeName = javaAttributeInfo.getAttributeName();
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530870 filterMethod = filterMethod + getIsFileContentMatchForLists(getCapitalCase(attributeName), true,
871 javaAttributeInfo.getImportInfo().getClassInfo());
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530872 }
873 }
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530874 YangNode tempNode = curNode.getChild();
875 JavaFileInfo fileInfo;
876 String name;
877 while (tempNode != null) {
878 if (tempNode instanceof YangIsFilterContentNodes) {
879 fileInfo = ((JavaFileInfoContainer) tempNode).getJavaFileInfo();
880 name = getCapitalCase(fileInfo.getJavaName());
881 if (tempNode instanceof YangList) {
882 filterMethod = filterMethod +
883 getIsFileContentMatchForLists(name, false, null);
884 } else {
885
886 filterMethod = filterMethod + getIsFilerContentMatchForChildNode(name);
887 }
888 }
889 tempNode = tempNode.getNextSibling();
890 }
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530891
Bharat saraswale707f032016-07-14 23:33:55 +0530892 filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + RETURN + SPACE + TRUE + SEMI_COLAN +
893 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
894
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530895 }
896 return filterMethod;
897 }
898
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530899 /**
900 * Returns filter content match for child nodes.
901 *
902 * @param name name of node
903 * @return filter content match for child nodes
904 */
905 private static String getIsFilerContentMatchForChildNode(String name) {
906 name = getSmallCase(name);
907 String method = EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + name + OPEN_PARENTHESIS +
908 CLOSE_PARENTHESIS + SPACE + NOT + EQUAL + SPACE + NULL + CLOSE_PARENTHESIS + SPACE +
909 OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + APP_INSTANCE
910 + PERIOD + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + EQUAL
911 + EQUAL + SPACE + NULL + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
912 SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + NEW_LINE + TWELVE_SPACE_INDENTATION +
913 CLOSE_CURLY_BRACKET + NEW_LINE;
914 return method + TWELVE_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + name + OPEN_PARENTHESIS +
915 CLOSE_PARENTHESIS + PERIOD + FILTER_CONTENT_MATCH + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD + name +
916 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
917 OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + SEMI_COLAN +
918 NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
919 + CLOSE_CURLY_BRACKET + NEW_LINE;
920 }
921
922 /**
923 * Returns filter content match for list types.
924 *
925 * @param name name of node
926 * @param isLeafList if for leaf list
927 * @param type type of the attribute
928 * @return filter content match for list types
929 */
930 private static String getIsFileContentMatchForLists(String name, boolean isLeafList, String type) {
931 String method = EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + getSmallCase(name) + OPEN_PARENTHESIS
932 + CLOSE_PARENTHESIS + SPACE + NOT + EQUAL + SPACE + NULL + SPACE + AND + AND + SPACE + NOT +
933 getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + IS_EMPTY +
934 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
935 + NEW_LINE;
936 method = method + TWELVE_SPACE_INDENTATION + IF + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD + getSmallCase(name)
937 + OPEN_PARENTHESIS
938 + CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + SPACE + NULL + SPACE + "||" + SPACE +
939 getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + IS_EMPTY + CLOSE_PARENTHESIS +
940 SPACE + OPEN_CURLY_BRACKET
941 + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE +
942 TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
943 if (isLeafList) {
944 if (type.equals(getSmallCase(STRING_DATA_TYPE))) {
945 type = STRING_DATA_TYPE;
946 }
947 method = method + TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + type + SPACE +
948 getSmallCase(name)
949 + SPACE + COLAN + SPACE + getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
950 CLOSE_PARENTHESIS
951 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE +
952 FLAG + SPACE + EQUAL + SPACE + FALSE + SEMI_COLAN + NEW_LINE;
953 method = method + SIXTEEN_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + type + SPACE +
954 UNDER_SCORE + getSmallCase(name)
955 + SPACE + COLAN + SPACE + APP_INSTANCE + PERIOD + getSmallCase(name) + OPEN_PARENTHESIS
956 + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
957 method = method + TWENTY_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + getSmallCase(name) + PERIOD;
958 } else {
959 method = method + TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + name + SPACE +
960 getSmallCase(name)
961 + SPACE + COLAN + SPACE + getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
962 CLOSE_PARENTHESIS
963 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE +
964 FLAG + SPACE + EQUAL + SPACE + FALSE + SEMI_COLAN + NEW_LINE;
965 method = method + SIXTEEN_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + name + SPACE +
966 UNDER_SCORE + getSmallCase(name)
967 + SPACE + COLAN + SPACE + APP_INSTANCE + PERIOD + getSmallCase(name) + OPEN_PARENTHESIS
968 + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
969 method = method + TWENTY_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + getSmallCase(name) + PERIOD;
970 }
971 if (!isLeafList) {
972 method = method + FILTER_CONTENT_MATCH;
973 } else {
974 method = method + EQUALS_STRING;
975 }
976 method = method + OPEN_PARENTHESIS + UNDER_SCORE + getSmallCase(name) + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
977 + SPACE +
978 OPEN_CURLY_BRACKET + NEW_LINE + TWENTY_FOUR_SPACE_INDENTATION + FLAG + SPACE + EQUAL + SPACE + TRUE +
979 SEMI_COLAN
980 + NEW_LINE + TWENTY_FOUR_SPACE_INDENTATION + BREAK + SEMI_COLAN + NEW_LINE + TWENTY_SPACE_INDENTATION
981 + CLOSE_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
982
983 method = method + SIXTEEN_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + FLAG + SPACE + EQUAL + EQUAL
984 + SPACE + FALSE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWENTY_SPACE_INDENTATION
985 + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
986 NEW_LINE;
987 return method + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
988 CLOSE_CURLY_BRACKET + NEW_LINE + NEW_LINE;
989
990 }
991
992 //Returns method string for op params augmented syntax
Bharat saraswald50c6382016-07-14 21:57:13 +0530993 private static String getAugmentableOpParamSyntax() {
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530994 return EIGHT_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + OBJECT_STRING + SPACE +
Bharat saraswale707f032016-07-14 23:33:55 +0530995 getSmallCase(YANG_AUGMENTED_INFO) + SPACE + COLAN + SPACE + THIS +
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530996 PERIOD + getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD
Bharat saraswald50c6382016-07-14 21:57:13 +0530997 + VALUE + "s" + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
Bharat saraswal2d90b0c2016-08-04 02:00:03 +0530998 NEW_LINE + TWELVE_SPACE_INDENTATION + OBJECT_STRING + SPACE +
Bharat saraswald50c6382016-07-14 21:57:13 +0530999 getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO) + SPACE + EQUAL + SPACE + APP_INSTANCE + PERIOD +
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301000 getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD + GET_CLASS +
1001 CLOSE_PARENTHESIS + SEMI_COLAN +
1002 NEW_LINE + TWELVE_SPACE_INDENTATION
1003 + BOOLEAN_DATA_TYPE + SPACE + FILTER_CONTENT_MATCH + SPACE + EQUAL + SPACE + FALSE + SEMI_COLAN
1004 + NEW_LINE + TWELVE_SPACE_INDENTATION + TRY + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
1005 SIXTEEN_SPACE_INDENTATION +
1006 FILTER_CONTENT_MATCH + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS
1007 + BOOLEAN_DATA_TYPE + CLOSE_PARENTHESIS + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + PERIOD +
1008 GET_CLASS + NEW_LINE + TWENTY_SPACE_INDENTATION + PERIOD + GET_METHOD
1009 + OPEN_PARENTHESIS + QUOTES + FILTER_CONTENT_MATCH + QUOTES + COMMA + SPACE + OBJECT_STRING + PERIOD
1010 + CLASS + CLOSE_PARENTHESIS + PERIOD + INVOKE + OPEN_PARENTHESIS + getSmallCase(YANG_AUGMENTED_INFO) +
1011 NEW_LINE + TWENTY_FOUR_SPACE_INDENTATION + PERIOD + GET_CLASS + COMMA + SPACE +
1012 getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO)
1013 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
1014 + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + SPACE + CATCH + OPEN_PARENTHESIS
1015 + NO_SUCH_METHOD_EXCEPTION + " | " + INVOCATION_TARGET_EXCEPTION + " | " + ILLEGAL_ACCESS_EXCEPTION +
1016 SPACE + EXCEPTION_VAR + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1017 + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
1018 + CLOSE_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION
1019 + IF + OPEN_PARENTHESIS + NOT + FILTER_CONTENT_MATCH + CLOSE_PARENTHESIS +
Bharat saraswald50c6382016-07-14 21:57:13 +05301020 SPACE + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE +
1021 SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
1022 + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1023 }
1024
Bharat saraswald50c6382016-07-14 21:57:13 +05301025 /*
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301026 * Returns omit null value string.
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301027 *
1028 * @return omit null value string
1029 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301030 static String getOmitNullValueString() {
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301031 return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING + NEW_LINE;
1032 }
1033
1034 /**
1035 * Returns to string method's close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301036 *
1037 * @return to string method close string
1038 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301039 static String getToStringMethodClose() {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301040 return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
1041 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301042 }
1043
1044 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301045 * Returns to string method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301046 *
1047 * @param attr attribute info
1048 * @return to string method
1049 */
Vinod Kumar S38046502016-03-23 15:30:27 +05301050 public static String getToStringMethod(JavaAttributeInfo attr) {
1051
janani b4a6711a2016-05-17 13:12:22 +05301052 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +05301053 return TWELVE_SPACE_INDENTATION + PERIOD + ADD_STRING + OPEN_PARENTHESIS + QUOTES + attributeName + QUOTES
1054 + COMMA + SPACE + attributeName + CLOSE_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301055 }
1056
1057 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301058 * Returns from string method's open string.
1059 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301060 * @param className name of the class
Bharat saraswal33dfa012016-05-17 19:59:16 +05301061 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301062 * @return from string method's open string
1063 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301064 static String getFromStringMethodSignature(String className, YangPluginConfig pluginConfig) {
Bharat saraswal33dfa012016-05-17 19:59:16 +05301065 return getJavaDoc(FROM_METHOD, className, false, pluginConfig) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
1066 + STATIC + SPACE + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS
1067 + STRING_DATA_TYPE + SPACE + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE
1068 + OPEN_CURLY_BRACKET + NEW_LINE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301069 }
1070
1071 /**
1072 * Return from string method's close string.
1073 *
1074 * @return from string method's close string
1075 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301076 static String getFromStringMethodClose() {
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301077 return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1078 CLOSE_CURLY_BRACKET + NEW_LINE;
1079 }
1080
1081 /**
1082 * Return from string method's body string.
1083 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301084 * @param attr attribute info
Bharat saraswald50c6382016-07-14 21:57:13 +05301085 * @param fromStringAttributeInfo attribute info for the from string wrapper type
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301086 * @return from string method's body string
1087 */
1088 public static String getFromStringMethod(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301089 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301090
1091 return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
Mahesh Poojary Sbbd48492016-07-19 10:58:07 +05301092 + getParsedSubString(attr, fromStringAttributeInfo) + NEW_LINE + TWELVE_SPACE_INDENTATION
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301093 + getReturnOfSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION + getCatchSubString()
1094 + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1095 }
1096
1097 /**
1098 * Returns sub string with try statement for union's from string method.
1099 *
1100 * @return sub string with try statement for union's from string method
1101 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301102 private static String getTrySubString() {
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301103 return TRY + SPACE + OPEN_CURLY_BRACKET;
1104 }
1105
1106 /**
1107 * Returns sub string with return statement for union's from string method.
1108 *
1109 * @return sub string with return statement for union's from string method
1110 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301111 private static String getReturnOfSubString() {
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301112 return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL + CLOSE_PARENTHESIS + SEMI_COLAN;
1113 }
1114
1115 /**
1116 * Returns sub string with catch statement for union's from string method.
1117 *
1118 * @return sub string with catch statement for union's from string method
1119 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301120 private static String getCatchSubString() {
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301121 return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS + EXCEPTION + SPACE + EXCEPTION_VAR
1122 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
1123 }
1124
1125 /**
1126 * Returns sub string with parsed statement for union's from string method.
1127 *
1128 * @param attr attribute info
1129 * @return sub string with parsed statement for union's from string method
1130 */
1131 private static String getParsedSubString(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301132 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301133
1134 String targetDataType = getReturnType(attr);
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +05301135 if (fromStringAttributeInfo.getAttributeType().getDataType() == BITS) {
1136 String lines = targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + NEW + SPACE + targetDataType
1137 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1138 lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
1139 + PERIOD + REPLACE_STRING + OPEN_PARENTHESIS + SINGLE_QUOTE + OPEN_CURLY_BRACKET + SINGLE_QUOTE
1140 + COMMA + SPACE + SINGLE_QUOTE + SPACE + SINGLE_QUOTE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1141 lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
1142 + PERIOD + REPLACE_STRING + OPEN_PARENTHESIS + SINGLE_QUOTE + CLOSE_CURLY_BRACKET + SINGLE_QUOTE
1143 + COMMA + SPACE + SINGLE_QUOTE + SPACE + SINGLE_QUOTE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1144 lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
1145 + PERIOD + TRIM_STRING + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1146 lines += TWELVE_SPACE_INDENTATION + STRING_DATA_TYPE + SQUARE_BRACKETS + SPACE + BITS_STRING_ARRAY_VAR
1147 + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME + PERIOD + SPLIT_STRING + OPEN_PARENTHESIS
1148 + QUOTES + COMMA + QUOTES + COMMA + SPACE + ZERO + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1149 lines += TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + STRING_DATA_TYPE + SPACE
1150 + BIT_TEMP_VAR + SPACE + COLON + SPACE + BITS_STRING_ARRAY_VAR + CLOSE_PARENTHESIS + SPACE
1151 + OPEN_CURLY_BRACKET + NEW_LINE;
1152 lines += SIXTEEN_SPACE_INDENTATION + BIT_TEMP_VAR + SPACE + EQUAL + SPACE + BIT_TEMP_VAR + PERIOD
1153 + TRIM_STRING + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1154 lines += SIXTEEN_SPACE_INDENTATION + TMP_VAL + PERIOD + SET_METHOD_PREFIX + OPEN_PARENTHESIS
1155 + INTEGER_WRAPPER + PERIOD + PARSE_INT + OPEN_PARENTHESIS + BIT_TEMP_VAR + CLOSE_PARENTHESIS
1156 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1157 lines += TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1158 return lines;
1159 } else if (attr.getAttributeType().getDataType() == BINARY) {
1160 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + BASE64 + PERIOD
1161 + GET_DECODER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + DECODE + OPEN_PARENTHESIS
1162 + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +05301163 } else {
1164 String parseFromStringMethod = getParseFromStringMethod(targetDataType,
Bharat saraswald50c6382016-07-14 21:57:13 +05301165 fromStringAttributeInfo.getAttributeType());
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +05301166 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + parseFromStringMethod
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +05301167 + OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +05301168 }
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301169 }
1170
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301171 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301172 * Returns hash code method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301173 *
Bharat saraswald9822e92016-04-05 15:13:44 +05301174 * @return hash code method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301175 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301176 static String getHashCodeMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301177 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + INT + SPACE + HASH_CODE_STRING
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301178 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
1179 EIGHT_SPACE_INDENTATION
1180 + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301181 }
1182
1183 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301184 * Returns hash code methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301185 *
1186 * @param hashcodeString hash code string
1187 * @return to hash code method close string
1188 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301189 static String getHashCodeMethodClose(String hashcodeString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301190 hashcodeString = trimAtLast(hashcodeString, COMMA);
1191 hashcodeString = trimAtLast(hashcodeString, SPACE);
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301192 return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1193 CLOSE_CURLY_BRACKET
Bharat saraswale2d51d62016-03-23 19:40:35 +05301194 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301195 }
1196
1197 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301198 * Returns hash code method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301199 *
1200 * @param attr attribute info
1201 * @return hash code method
1202 */
Vinod Kumar S38046502016-03-23 15:30:27 +05301203 public static String getHashCodeMethod(JavaAttributeInfo attr) {
janani b4a6711a2016-05-17 13:12:22 +05301204 return attr.getAttributeName() + COMMA + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301205 }
1206
1207 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301208 * Returns equals method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301209 *
1210 * @param className class name
Bharat saraswald9822e92016-04-05 15:13:44 +05301211 * @return equals method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301212 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301213 static String getEqualsMethodOpen(String className) {
1214 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE +
1215 EQUALS_STRING
Bharat saraswale2d51d62016-03-23 19:40:35 +05301216 + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + OBJ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
1217 + NEW_LINE + getEqualsMethodsCommonIfCondition() + getEqualsMethodsSpecificIfCondition(className);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301218 }
1219
1220 /**
1221 * Returns equal methods if condition string.
1222 *
1223 * @return if condition string
1224 */
1225 private static String getEqualsMethodsCommonIfCondition() {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301226 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + THIS + SPACE + EQUAL + EQUAL + SPACE + OBJ
1227 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + SPACE
1228 + TRUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301229 }
1230
1231 /**
1232 * Returns if condition for specific class object in equals method.
1233 *
1234 * @param className class name
1235 * @return if condition string
1236 */
1237 private static String getEqualsMethodsSpecificIfCondition(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301238 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + OBJ + INSTANCE_OF + className
1239 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + className
1240 + SPACE + OTHER + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS + className + CLOSE_PARENTHESIS + SPACE
1241 + OBJ + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301242 }
1243
1244 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301245 * Returns equals methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301246 *
1247 * @param equalMethodString equal method string
Bharat saraswald9822e92016-04-05 15:13:44 +05301248 * @return equals method close string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301249 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301250 static String getEqualsMethodClose(String equalMethodString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301251 equalMethodString = trimAtLast(equalMethodString, AND);
1252 equalMethodString = trimAtLast(equalMethodString, AND);
1253 equalMethodString = trimAtLast(equalMethodString, SPACE);
1254 equalMethodString = trimAtLast(equalMethodString, NEW_LINE) + SEMI_COLAN + NEW_LINE;
1255 return equalMethodString + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
1256 + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1257 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301258 }
1259
1260 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301261 * Returns equals method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301262 *
1263 * @param attr attribute info
1264 * @return equals method
1265 */
Vinod Kumar S38046502016-03-23 15:30:27 +05301266 public static String getEqualsMethod(JavaAttributeInfo attr) {
1267
janani b4a6711a2016-05-17 13:12:22 +05301268 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +05301269 return SIXTEEN_SPACE_INDENTATION + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS
1270 + attributeName + COMMA + SPACE + OTHER + PERIOD + attributeName + CLOSE_PARENTHESIS + SPACE + AND
1271 + AND;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301272 }
1273
1274 /**
1275 * Returns of method string for class.
1276 *
1277 * @param name class name
1278 * @param attr attribute info
1279 * @return of method string
1280 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301281 static String getOfMethod(String name, JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301282
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301283 String attrQualifiedType = getReturnType(attr);
1284
Bharat saraswale2d51d62016-03-23 19:40:35 +05301285 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name + SPACE + OF + OPEN_PARENTHESIS
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301286 + attrQualifiedType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Bharat saraswale2d51d62016-03-23 19:40:35 +05301287 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name + OPEN_PARENTHESIS + VALUE
1288 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301289 }
1290
Bharat saraswalcc1cdab2016-04-16 02:28:25 +05301291 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301292 * Returns of method's string and java doc for special type.
1293 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301294 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301295 * @param generatedJavaClassName class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301296 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301297 * @return of method's string and java doc for special type
1298 */
Bharat saraswal33dfa012016-05-17 19:59:16 +05301299 public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301300 YangPluginConfig pluginConfig) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301301
1302 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +05301303 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301304
Bharat saraswal33dfa012016-05-17 19:59:16 +05301305 return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301306 + getOfMethodString(attrType, generatedJavaClassName);
1307 }
1308
1309 /**
1310 * Returns of method's string.
1311 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301312 * @param type data type
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301313 * @param className class name
1314 * @return of method's string
1315 */
1316 private static String getOfMethodString(String type, String className) {
1317
1318 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + className + SPACE + OF + OPEN_PARENTHESIS
1319 + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1320 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + className + OPEN_PARENTHESIS + VALUE
1321 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1322 }
1323
1324 /**
1325 * Returns string and java doc for constructor of type class.
1326 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301327 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301328 * @param generatedJavaClassName class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301329 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301330 * @return string and java doc for constructor of type class
1331 */
Bharat saraswal33dfa012016-05-17 19:59:16 +05301332 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301333 String generatedJavaClassName,
1334 YangPluginConfig pluginConfig) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301335
1336 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +05301337 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301338
Bharat saraswal33dfa012016-05-17 19:59:16 +05301339 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301340 + getTypeConstructorString(attrType, attrName, generatedJavaClassName);
1341 }
1342
1343 /**
Bharat saraswale707f032016-07-14 23:33:55 +05301344 * Returns string and java doc for constructor of type class.
1345 *
1346 * @param attr1 first attribute info
1347 * @param attr2 second attribute info
1348 * @param generatedJavaClassName class name
1349 * @param pluginConfig plugin config
1350 * @param type conflict validate type
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301351 * @param addFirst whether int came first or uInt came first
Bharat saraswale707f032016-07-14 23:33:55 +05301352 * @return string and java doc for constructor of type class
1353 */
1354 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr1, JavaAttributeInfo
1355 attr2, String generatedJavaClassName, YangPluginConfig pluginConfig, ValidatorTypeForUnionTypes type,
1356 boolean addFirst) {
1357
1358 String attrType = getReturnType(attr1);
1359 String attrName1 = "";
1360 String attrName2 = "";
1361 if (attr1 != null) {
1362 attrName1 = attr1.getAttributeName();
1363 }
1364 if (attr2 != null) {
1365 attrName2 = attr2.getAttributeName();
1366 }
1367
1368 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName1, false, pluginConfig)
1369 + getTypeConstructorString(attrType, attrName1, attrName2, generatedJavaClassName, type, addFirst);
1370 }
1371
1372 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301373 * Returns type constructor string.
1374 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301375 * @param type data type
1376 * @param name attribute name
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301377 * @param className class name
1378 * @return type constructor string
1379 */
1380 private static String getTypeConstructorString(String type, String name, String className) {
1381
1382 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
1383 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
1384 + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
1385 + CLOSE_CURLY_BRACKET;
1386 }
1387
1388 /**
Bharat saraswale707f032016-07-14 23:33:55 +05301389 * Returns type constructor string.
1390 *
1391 * @param type data type
1392 * @param attr1 attribute attr1
1393 * @param className class attr1
1394 * @return type constructor string
1395 */
1396 private static String getTypeConstructorString(String type, String attr1, String attr2, String className,
1397 ValidatorTypeForUnionTypes validatorType, boolean addInt) {
1398
1399 String constructor;
1400 constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
1401 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1402
1403 String name1;
1404 String name2;
1405 if (addInt) {
1406 name1 = attr1;
1407 name2 = attr2;
1408 } else {
1409 name1 = attr2;
1410 name2 = attr1;
1411 }
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301412 constructor = constructor + ifConditionForIntInTypeDefConstructor(validatorType, addInt) +
Bharat saraswale707f032016-07-14 23:33:55 +05301413 TWELVE_SPACE_INDENTATION + THIS + PERIOD
1414 + name1 + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
1415 + CLOSE_CURLY_BRACKET + SPACE + ELSE + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION
1416 + THIS + PERIOD
1417 + name2 + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
1418 + CLOSE_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION
1419 + CLOSE_CURLY_BRACKET;
1420
1421 return constructor;
1422 }
1423
1424 /**
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301425 * Returns interface of add augmentation.
1426 *
1427 * @return interface of add augmentation
1428 */
1429 static String getAddAugmentInfoMethodInterface() {
1430 return generateForAddAugmentation() + FOUR_SPACE_INDENTATION + VOID + SPACE +
1431 ADD_STRING + YANG_AUGMENTED_INFO + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + VALUE + COMMA +
1432 SPACE + CLASS_STRING + SPACE + CLASS + OBJECT_STRING + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1433 }
1434
1435 /**
Bharat saraswalb551aae2016-07-14 15:18:20 +05301436 * Returns implementation of add augmentation.
1437 *
1438 * @return implementation of add augmentation
1439 */
Bharat saraswald50c6382016-07-14 21:57:13 +05301440 static String getAddAugmentInfoMethodImpl() {
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301441 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE +
1442 ADD_STRING + YANG_AUGMENTED_INFO + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + VALUE + COMMA +
Bharat saraswald50c6382016-07-14 21:57:13 +05301443 SPACE + CLASS_STRING + SPACE + CLASS + OBJECT_STRING + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
1444 NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + PUT +
1445 OPEN_PARENTHESIS + CLASS + OBJECT_STRING + COMMA + SPACE + VALUE +
Bharat saraswalb551aae2016-07-14 15:18:20 +05301446 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1447 CLOSE_CURLY_BRACKET + NEW_LINE;
1448 }
1449
1450 /**
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301451 * Returns interface of get YANG augment info.
Bharat saraswalb551aae2016-07-14 15:18:20 +05301452 *
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301453 * @return interface of get YANG augment info
Bharat saraswalb551aae2016-07-14 15:18:20 +05301454 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301455 static String getYangAugmentInfoInterface() {
1456 return generateForGetAugmentation() + FOUR_SPACE_INDENTATION + OBJECT_STRING + SPACE +
1457 getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
1458 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1459 }
Bharat saraswalb551aae2016-07-14 15:18:20 +05301460
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301461 /**
1462 * Returns implementation of get YANG augment info.
1463 *
1464 * @return implementation of get YANG augment info
1465 */
1466 static String getYangAugmentInfoImpl() {
1467 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
1468 OBJECT_STRING + SPACE +
1469 getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
Bharat saraswalb551aae2016-07-14 15:18:20 +05301470 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
1471 RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + GET + OPEN_PARENTHESIS + CLASS +
1472 OBJECT_STRING + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1473 CLOSE_CURLY_BRACKET + NEW_LINE;
1474 }
1475
1476 /**
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301477 * Returns implementation of get YANG augment info.
Bharat saraswald50c6382016-07-14 21:57:13 +05301478 *
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301479 * @return implementation of get YANG augment info
Bharat saraswald50c6382016-07-14 21:57:13 +05301480 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301481 static String getYangAugmentInfoMapInterface(YangPluginConfig pluginConfig) {
Bharat saraswald50c6382016-07-14 21:57:13 +05301482 return getJavaDoc(GETTER_METHOD, getSmallCase(YANG_AUGMENTED_INFO) + MAP, false, pluginConfig)
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301483 + FOUR_SPACE_INDENTATION + MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING + DIAMOND_OPEN_BRACKET +
1484 QUESTION_MARK + DIAMOND_CLOSE_BRACKET + COMMA + SPACE + OBJECT_STRING + DIAMOND_CLOSE_BRACKET +
1485 SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS +
1486 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1487 }
1488
1489 /**
1490 * Returns implementation of get YANG augment info.
1491 *
1492 * @return implementation of get YANG augment info
1493 */
1494 static String getYangAugmentInfoMapImpl() {
1495 return getOverRideString()
Bharat saraswald50c6382016-07-14 21:57:13 +05301496 + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
1497 MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING + DIAMOND_OPEN_BRACKET + QUESTION_MARK +
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301498 DIAMOND_CLOSE_BRACKET + COMMA + SPACE + OBJECT_STRING + DIAMOND_CLOSE_BRACKET + SPACE +
1499 getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS +
Bharat saraswald50c6382016-07-14 21:57:13 +05301500 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
1501 RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + SEMI_COLAN + NEW_LINE
1502 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1503 }
1504
1505 /**
Bharat saraswald72411a2016-04-19 01:00:16 +05301506 * Returns enum's constructor.
1507 *
1508 * @param className enum's class name
1509 * @return enum's constructor
1510 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301511 static String getEnumsConstructor(String className) {
Bharat saraswald72411a2016-04-19 01:00:16 +05301512 return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
1513 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
1514 + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1515 }
Bharat saraswalc0e04842016-05-12 13:16:57 +05301516
1517 /**
1518 * Returns of method for enum class.
1519 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301520 * @param className class name
1521 * @param attr java attribute
1522 * @param enumMap enum's sets map
1523 * @param enumList enum's sets list
Bharat saraswal33dfa012016-05-17 19:59:16 +05301524 * @param pluginConfig plugin configurations
Bharat saraswalc0e04842016-05-12 13:16:57 +05301525 * @return of method
1526 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301527 static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
1528 Map<String, Integer> enumMap, List<String> enumList,
1529 YangPluginConfig pluginConfig) {
Bharat saraswalc0e04842016-05-12 13:16:57 +05301530 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +05301531 String attrName = attr.getAttributeName();
Bharat saraswalc0e04842016-05-12 13:16:57 +05301532
janani b4a6711a2016-05-17 13:12:22 +05301533 String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + getCapitalCase(className) + SPACE
1534 + OF + OPEN_PARENTHESIS
Bharat saraswalc0e04842016-05-12 13:16:57 +05301535 + attrType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1536 + EIGHT_SPACE_INDENTATION + SWITCH + SPACE + OPEN_PARENTHESIS + VALUE
1537 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301538 int value;
Bharat saraswalc0e04842016-05-12 13:16:57 +05301539 for (String str : enumList) {
1540
1541 value = enumMap.get(str);
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +05301542 method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value + COLON + NEW_LINE
janani b4a6711a2016-05-17 13:12:22 +05301543 + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + getCapitalCase(className) + PERIOD
Bharat saraswalc0e04842016-05-12 13:16:57 +05301544 + str + SEMI_COLAN + NEW_LINE;
1545 }
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +05301546 method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLON + NEW_LINE + SIXTEEN_SPACE_INDENTATION
Bharat saraswalc0e04842016-05-12 13:16:57 +05301547 + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1548 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1549
Bharat saraswale707f032016-07-14 23:33:55 +05301550 return getJavaDoc(OF_METHOD, getCapitalCase(className) + " for type " + attrName, false, pluginConfig)
Bharat saraswal33dfa012016-05-17 19:59:16 +05301551 + method;
Bharat saraswalc0e04842016-05-12 13:16:57 +05301552 }
Bharat saraswal33dfa012016-05-17 19:59:16 +05301553
1554 /**
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301555 * Returns from string method parsed string.
1556 *
1557 * @param targetDataType target data type
1558 * @param yangType YANG type
1559 * @return parsed string
1560 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301561 private static String getParseFromStringMethod(String targetDataType, YangType<?> yangType) {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301562
1563 YangDataTypes type = yangType.getDataType();
1564
1565 switch (type) {
1566 case INT8:
1567 return BYTE_WRAPPER + PERIOD + PARSE_BYTE;
1568 case INT16:
1569 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1570 case INT32:
1571 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1572 case INT64:
1573 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1574 case UINT8:
1575 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1576 case UINT16:
1577 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1578 case UINT32:
1579 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1580 case UINT64:
1581 return NEW + SPACE + BIG_INTEGER;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +05301582 case DECIMAL64:
1583 return NEW + SPACE + BIG_DECIMAL;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301584 case STRING:
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +05301585 case IDENTITYREF:
1586 return EMPTY_STRING;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301587 case EMPTY:
1588 case BOOLEAN:
1589 return BOOLEAN_WRAPPER + PERIOD + PARSE_BOOLEAN;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301590 case BITS:
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301591 case UNION:
1592 case ENUMERATION:
1593 case DERIVED:
1594 return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
1595 default:
1596 throw new TranslatorException("given data type is not supported.");
1597 }
1598 }
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301599
1600 /**
Bharat saraswalb551aae2016-07-14 15:18:20 +05301601 * Returns augmented data getter and setter methods for service class.
1602 *
1603 * @param parent parent node
1604 * @return augmented data getter and setter methods for service class
1605 */
Bharat saraswald50c6382016-07-14 21:57:13 +05301606 static String getAugmentsDataMethodForService(YangNode parent) {
Bharat saraswalb551aae2016-07-14 15:18:20 +05301607 List<YangAtomicPath> targets = getSetOfNodeIdentifiers(parent);
1608 YangNode augmentedNode;
1609 String curNodeName;
1610 String method;
1611 StringBuilder methods = new StringBuilder();
1612 String parentName;
1613 String returnType;
Bharat saraswale707f032016-07-14 23:33:55 +05301614 YangNode methodNode;
Bharat saraswalb551aae2016-07-14 15:18:20 +05301615 YangPluginConfig pluginConfig = ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig();
1616 for (YangAtomicPath nodeId : targets) {
Bharat saraswald50c6382016-07-14 21:57:13 +05301617 augmentedNode = nodeId.getResolvedNode().getParent();
Bharat saraswale707f032016-07-14 23:33:55 +05301618 methodNode = nodeId.getResolvedNode();
1619 if (((JavaFileInfoContainer) methodNode).getJavaFileInfo().getJavaName() != null) {
1620 curNodeName = ((JavaFileInfoContainer) methodNode).getJavaFileInfo().getJavaName();
Bharat saraswalb551aae2016-07-14 15:18:20 +05301621 } else {
Bharat saraswale707f032016-07-14 23:33:55 +05301622 curNodeName = getCapitalCase(getCamelCase(methodNode.getName(), pluginConfig
Bharat saraswalb551aae2016-07-14 15:18:20 +05301623 .getConflictResolver()));
1624 }
1625 returnType = getAugmentedClassNameForDataMethods(augmentedNode, parent);
Bharat saraswald50c6382016-07-14 21:57:13 +05301626 parentName = getParentNodeNameForDataMethods(augmentedNode, pluginConfig);
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301627 method = generateForGetMethodWithAttribute(returnType)
1628 + getGetMethodWithArgument(returnType, AUGMENTED + parentName
1629 + getCapitalCase(curNodeName)) + NEW_LINE;
Bharat saraswalb551aae2016-07-14 15:18:20 +05301630 methods.append(method);
1631
1632 method = getJavaDoc(MANAGER_SETTER_METHOD, AUGMENTED +
Bharat saraswale707f032016-07-14 23:33:55 +05301633 getCapitalCase(parentName) + getCapitalCase(curNodeName), false, pluginConfig) +
Bharat saraswalb551aae2016-07-14 15:18:20 +05301634 getSetterForInterface(getSmallCase(AUGMENTED) + parentName +
1635 getCapitalCase(curNodeName), returnType, parentName,
1636 false,
1637 GENERATE_SERVICE_AND_MANAGER) + NEW_LINE;
1638 methods.append(method);
1639 }
1640 return methods.toString();
1641 }
1642
1643 /**
Bharat saraswale707f032016-07-14 23:33:55 +05301644 * Returns validator method for range in union class.
1645 *
1646 * @param type type
1647 * @return validator method for range in union class
1648 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301649 static String getRangeValidatorMethodForUnion(String type) {
Bharat saraswale707f032016-07-14 23:33:55 +05301650 String newType;
1651 if (type.contentEquals(BIG_INTEGER)) {
1652 newType = LONG;
1653 } else {
1654 newType = INT;
1655 }
1656 String method = generateForValidatorMethod() + FOUR_SPACE_INDENTATION + PRIVATE + SPACE + BOOLEAN_DATA_TYPE +
1657 SPACE +
1658 VALIDATE_RANGE +
1659 OPEN_PARENTHESIS
1660 + type + SPACE + MIN_RANGE + COMMA + SPACE + type + SPACE + MAX_RANGE + COMMA + SPACE +
1661 newType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1662 if (type.contentEquals(BIG_INTEGER)) {
1663 method = method + EIGHT_SPACE_INDENTATION + BIG_INTEGER + SPACE + getSmallCase(BIG_INTEGER)
1664 + SPACE + EQUAL + SPACE + NEW + SPACE + BIG_INTEGER + OPEN_PARENTHESIS + QUOTES + SPACE +
1665 QUOTES + SPACE + ADD + SPACE + VALUE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE +
1666 EIGHT_SPACE_INDENTATION + RETURN + SPACE + getSmallCase(BIG_INTEGER) + PERIOD + "compareTo"
1667 + OPEN_PARENTHESIS + MIN_RANGE + CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + " 1" + SPACE + AND +
1668 AND + SPACE + getSmallCase(BIG_INTEGER) + PERIOD + "compareTo" + OPEN_PARENTHESIS + MAX_RANGE +
1669 CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + " 1" + SEMI_COLAN + NEW_LINE;
1670 } else {
1671 method = method + EIGHT_SPACE_INDENTATION
1672 + RETURN + SPACE + VALUE + SPACE + DIAMOND_CLOSE_BRACKET + EQUAL + SPACE + MIN_RANGE + SPACE + AND +
1673 AND + SPACE + VALUE + DIAMOND_OPEN_BRACKET + EQUAL + SPACE + MAX_RANGE + SEMI_COLAN + NEW_LINE;
1674 }
1675 return method + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1676 }
1677
1678 /**
1679 * Returns if condition string for typedef constructor.
1680 *
1681 * @param type type of conflict
1682 * @param addFirst true int/long need to be added first
1683 * @return if condition string for typedef constructor
1684 */
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301685 private static String ifConditionForIntInTypeDefConstructor(ValidatorTypeForUnionTypes type, boolean addFirst) {
Bharat saraswale707f032016-07-14 23:33:55 +05301686 String condition = EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + VALIDATE_RANGE + OPEN_PARENTHESIS;
1687
1688 if (type == INT_TYPE_CONFLICT) {
1689 if (addFirst) {
1690 condition = condition + INT_MIN_RANGE + COMMA + SPACE + INT_MAX_RANGE + COMMA + SPACE + VALUE;
1691 } else {
1692 condition = condition + UINT_MIN_RANGE + COMMA + SPACE + UINT_MAX_RANGE + COMMA + SPACE + VALUE;
1693 }
1694 } else {
1695 if (addFirst) {
1696 condition = condition + LONG_MIN_RANGE + COMMA + SPACE + LONG_MAX_RANGE + COMMA + SPACE + VALUE;
1697 } else {
1698 condition = condition + ULONG_MIN_RANGE + COMMA + SPACE + ULONG_MAX_RANGE + COMMA + SPACE + VALUE;
1699 }
1700 }
1701 return condition + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1702 }
1703
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301704 //Get method with arguments.
1705 private static String getGetMethodWithArgument(String returnType, String yangName) {
1706 return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCapitalCase(yangName)
1707 + OPEN_PARENTHESIS + returnType + OP_PARAM + SPACE + getSmallCase(returnType) + CLOSE_PARENTHESIS +
1708 SEMI_COLAN;
1709 }
Bharat saraswale707f032016-07-14 23:33:55 +05301710
Bharat saraswal2d90b0c2016-08-04 02:00:03 +05301711 /**
1712 * Returns add to list method interface.
1713 *
1714 * @param attr java attribute
1715 * @return add to list method interface
1716 */
1717 public static String getAddToListMethodInterface(JavaAttributeInfo attr) {
1718 return FOUR_SPACE_INDENTATION + VOID + SPACE + ADD_STRING + getCapitalCase(TO) +
1719 getCapitalCase(attr.getAttributeName()) + OPEN_PARENTHESIS + getReturnType(attr) + SPACE +
1720 VALUE + CLOSE_PARENTHESIS + SEMI_COLAN;
1721 }
1722
1723 /**
1724 * Returns add to list method impl.
1725 *
1726 * @param attr java attribute
1727 * @return add to list method impl
1728 */
1729 public static String getAddToListMethodImpl(JavaAttributeInfo attr) {
1730 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + ADD_STRING +
1731 getCapitalCase(TO) + getCapitalCase(attr.getAttributeName()) + OPEN_PARENTHESIS +
1732 getReturnType(attr) + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
1733 + NEW_LINE + EIGHT_SPACE_INDENTATION + attr.getAttributeName() + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
1734 + PERIOD + ADD_STRING + OPEN_PARENTHESIS + VALUE + CLOSE_PARENTHESIS + SEMI_COLAN +
1735 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1736 }
1737
1738 /**
1739 * Returns builder method for class.
1740 *
1741 * @param name name of class
1742 * @return builder method for class
1743 */
1744 static String builderMethod(String name) {
1745 return NEW_LINE + generateForBuilderMethod(name) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE
1746 + name + BUILDER + SPACE + getSmallCase(BUILDER) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
1747 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name +
1748 BUILDER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1749 CLOSE_CURLY_BRACKET;
1750 }
1751
1752 /**
1753 * Returns is filter content match interface.
1754 *
1755 * @param name name of node
1756 * @return is filter content match interface
1757 */
1758 static String isFilterContentMatchInterface(String name) {
1759 String method = " /**\n" +
1760 " * Checks if the passed " + name + " maps the content match query condition.\n" +
1761 " *\n" +
1762 " * @param " + getSmallCase(name) + SPACE + getSmallCase(name) + SPACE + "being passed to check" +
1763 " for" +
1764 " content match\n" +
1765 " * @return match result\n" +
1766 " */\n";
1767 return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE + FILTER_CONTENT_MATCH + OPEN_PARENTHESIS
1768 + name + SPACE + getSmallCase(name) + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1769 }
1770
1771 /**
1772 * Returns is value set interface.
1773 *
1774 * @return is value set interface
1775 */
1776 static String isLeafValueSetInterface() {
1777 String method = " /**\n" +
1778 " * Checks if the leaf value is set.\n" +
1779 " *\n" +
1780 " * @param leaf leaf whose value status needs to checked\n" +
1781 " * @return result of leaf value set in object\n" +
1782 " */\n";
1783 return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE + VALUE_LEAF_SET + OPEN_PARENTHESIS
1784 + LEAF_IDENTIFIER + SPACE + "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1785 }
1786
1787 /**
1788 * Returns is select leaf set interface.
1789 *
1790 * @return is select leaf set interface
1791 */
1792 static String isSelectLeafSetInterface() {
1793 String method = " /**\n" +
1794 " * Checks if the leaf is set to be a selected leaf.\n" +
1795 " *\n" +
1796 " * @param leaf if leaf needs to be selected\n" +
1797 " * @return result of leaf value set in object\n" +
1798 " */\n";
1799 return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE + IS_SELECT_LEAF + OPEN_PARENTHESIS
1800 + LEAF_IDENTIFIER + SPACE + "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1801 }
1802
1803 /**
1804 * Returns set select leaf set interface.
1805 *
1806 * @param name node name
1807 * @return set select leaf set interface
1808 */
1809 static String setSelectLeafSetInterface(String name) {
1810 String method = " /**\n" +
1811 " * Set a leaf to be selected.\n" +
1812 " *\n" +
1813 " * @param leaf leaf needs to be selected\n" +
1814 " */\n";
1815 return method + FOUR_SPACE_INDENTATION + name + BUILDER + SPACE + SET_SELECT_LEAF + OPEN_PARENTHESIS
1816 + LEAF_IDENTIFIER + SPACE + "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1817 }
1818
1819 /**
1820 * Returns leaf identifier interface enum signature.
1821 *
1822 * @param name name of node
1823 * @return leaf identifier interface enum signature
1824 */
1825 static String getInterfaceLeafIdEnumSignature(String name) {
1826 String start = " /**\n" +
1827 " * Identify the leaf of " + name + PERIOD + NEW_LINE +
1828 " */\n";
1829 return start + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + ENUM + SPACE + LEAF_IDENTIFIER + SPACE +
1830 OPEN_CURLY_BRACKET + NEW_LINE;
1831 }
1832
1833 /**
1834 * Returns interface leaf identifier enum method.
1835 *
1836 * @return interface leaf identifier enum method
1837 */
1838 static String getInterfaceLeafIdEnumMethods() {
1839 return " private int leafIndex;\n" +
1840 "\n" +
1841 " public int getLeafIndex() {\n" +
1842 " return leafIndex;\n" +
1843 " }\n" +
1844 "\n" +
1845 " LeafIdentifier(int value) {\n" +
1846 " this.leafIndex = value;\n" +
1847 " }\n" +
1848 " }\n";
1849 }
1850
1851 /**
1852 * Returns getter methods for operation attributes.
1853 *
1854 * @return getter methods for operation attributes
1855 */
1856 static String getOperationAttributesGetters() {
1857 return "\n" +
1858 " /**\n" +
1859 " * Returns the _valueLeafFlags.\n" +
1860 " *\n" +
1861 " * @return value of _valueLeafFlags\n" +
1862 " */\n" +
1863 " public BitSet get_valueLeafFlags() {\n" +
1864 " return _valueLeafFlags;\n" +
1865 " }\n" +
1866 "\n" +
1867 " /**\n" +
1868 " * Returns the _selectLeafFlags.\n" +
1869 " *\n" +
1870 " * @return value of _selectLeafFlags\n" +
1871 " */\n" +
1872 " public BitSet get_selectLeafFlags() {\n" +
1873 " return _selectLeafFlags;\n" +
1874 " }\n" +
1875 "\n";
1876 }
1877
1878 /**
1879 * Returns getter for operation type.
1880 *
1881 * @return getter for operation type
1882 */
1883 static String getGetterForOperationType() {
1884 return " /**\n" +
1885 " * Returns the _operationType.\n" +
1886 " *\n" +
1887 " * @return value of _operationType\n" +
1888 " */\n" +
1889 " public OperationType get_operationType() {\n" +
1890 " return _operationType;\n" +
1891 " }\n";
1892 }
1893
1894 /**
1895 * Returns getters for value and select leaf.
1896 *
1897 * @return getters for value and select leaf
1898 */
1899 static String getGettersForValueAndSelectLeaf() {
1900 return "\n" +
1901 " @Override\n" +
1902 " public boolean isLeafValueSet(LeafIdentifier leaf) {\n" +
1903 " return get_valueLeafFlags().get(leaf.getLeafIndex());\n" +
1904 " }\n" +
1905 "\n" +
1906 " @Override\n" +
1907 " public boolean isSelectLeaf(LeafIdentifier leaf) {\n" +
1908 " return get_selectLeafFlags().get(leaf.getLeafIndex());\n" +
1909 " }\n";
1910 }
1911
1912 /**
1913 * Returns setter for operation type.
1914 *
1915 * @param name name of node
1916 * @return setter for operation type
1917 */
1918 static String getSetterForOperationType(String name) {
1919 return " /**\n" +
1920 " * Set operation type.\n" +
1921 " *\n" +
1922 " * @param _operationType operation type\n" +
1923 " */\n" +
1924 " public " + name + BUILDER + " set_operationType(OperationType _operationType) {\n" +
1925 " this._operationType = _operationType;\n" +
1926 " return this;\n" +
1927 " }\n";
1928 }
1929
1930 /**
1931 * Returns setter for select leaf.
1932 *
1933 * @param name name of node
1934 * @param isRootNode if root node
1935 * @return setter for select leaf
1936 */
1937 static String getSetterForSelectLeaf(String name, boolean isRootNode) {
1938 String append = OVERRIDE;
1939 if (isRootNode) {
1940 append = EMPTY_STRING;
1941 }
1942 return "\n" +
1943 " " + append + "\n" +
1944 " public " + name + BUILDER + " selectLeaf(LeafIdentifier leaf) {\n" +
1945 " get_selectLeafFlags().set(leaf.getLeafIndex());\n" +
1946 " return this;\n" +
1947 " }\n";
1948 }
Bharat saraswal870c56f2016-02-20 21:57:16 +05301949}