blob: 431eecf267ec874f3cfd31d3d0d9136f4d4a860e [file] [log] [blame]
Bharat saraswal97459962016-02-20 21:57:16 +05301/*
Brian O'Connor0f7908b2016-04-09 01:19:45 -07002 * Copyright 2016-present Open Networking Laboratory
Bharat saraswal97459962016-02-20 21:57:16 +05303 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.onosproject.yangutils.translator.tojava.utils;
18
Bharat saraswal250a7472016-05-12 13:16:57 +053019import java.util.List;
20import java.util.Map;
Bharat saraswal039f59c2016-07-14 21:57:13 +053021import org.onosproject.yangutils.datamodel.YangAtomicPath;
Bharat saraswale50edca2016-08-05 01:58:25 +053022import org.onosproject.yangutils.datamodel.YangAugment;
Bharat saraswal039f59c2016-07-14 21:57:13 +053023import org.onosproject.yangutils.datamodel.YangAugmentableNode;
Bharat saraswale50edca2016-08-05 01:58:25 +053024import org.onosproject.yangutils.datamodel.YangCase;
25import org.onosproject.yangutils.datamodel.YangChoice;
Gaurav Agrawal8a147522016-08-10 13:43:01 +053026import org.onosproject.yangutils.datamodel.YangCompilerAnnotation;
Bharat saraswal64e7e232016-07-14 23:33:55 +053027import org.onosproject.yangutils.datamodel.YangLeafRef;
Bharat saraswalaf413b82016-07-14 15:18:20 +053028import org.onosproject.yangutils.datamodel.YangNode;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +053029import org.onosproject.yangutils.datamodel.YangType;
janani b0e4e8ae2016-07-13 21:06:41 +053030import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +053031import org.onosproject.yangutils.translator.exception.TranslatorException;
Vinod Kumar S9f26ae52016-03-23 15:30:27 +053032import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
Bharat saraswal039f59c2016-07-14 21:57:13 +053033import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
Gaurav Agrawal8a147522016-08-10 13:43:01 +053034import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
35import org.onosproject.yangutils.utils.io.YangPluginConfig;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +053036import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
Bharat saraswal84366c52016-03-23 19:40:35 +053037
Bharat saraswal039f59c2016-07-14 21:57:13 +053038import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BINARY;
39import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BITS;
40import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BOOLEAN;
Shankara-Huaweia1039e52016-07-14 16:53:09 +053041import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DECIMAL64;
Bharat saraswal039f59c2016-07-14 21:57:13 +053042import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.EMPTY;
Shankara-Huaweia1039e52016-07-14 16:53:09 +053043import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT16;
44import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT32;
45import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT64;
Bharat saraswal039f59c2016-07-14 21:57:13 +053046import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT8;
Bharat saraswal64e7e232016-07-14 23:33:55 +053047import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.LEAFREF;
Shankara-Huaweia1039e52016-07-14 16:53:09 +053048import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT16;
Shankara-Huaweia1039e52016-07-14 16:53:09 +053049import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT32;
Bharat saraswal039f59c2016-07-14 21:57:13 +053050import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT64;
51import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT8;
Bharat saraswal715d3fc2016-05-17 19:59:16 +053052import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +053053import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
Bharat saraswal039f59c2016-07-14 21:57:13 +053054import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getAugmentedClassNameForDataMethods;
55import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getParentNodeNameForDataMethods;
56import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getSetOfNodeIdentifiers;
Bharat saraswal64e7e232016-07-14 23:33:55 +053057import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.INT_TYPE_CONFLICT;
Bharat saraswal64e7e232016-07-14 23:33:55 +053058import static org.onosproject.yangutils.utils.UtilConstants.ADD;
Bharat saraswal84366c52016-03-23 19:40:35 +053059import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
60import static org.onosproject.yangutils.utils.UtilConstants.AND;
Bharat saraswal039f59c2016-07-14 21:57:13 +053061import static org.onosproject.yangutils.utils.UtilConstants.APP_INSTANCE;
Bharat saraswalaf413b82016-07-14 15:18:20 +053062import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +053063import static org.onosproject.yangutils.utils.UtilConstants.BASE64;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +053064import static org.onosproject.yangutils.utils.UtilConstants.BIG_DECIMAL;
Bharat saraswald14cbe82016-07-14 13:26:18 +053065import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
Bharat saraswal84366c52016-03-23 19:40:35 +053066import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +053067import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
Bharat saraswal8beac342016-08-04 02:00:03 +053068import static org.onosproject.yangutils.utils.UtilConstants.BREAK;
Bharat saraswal84366c52016-03-23 19:40:35 +053069import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
70import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +053071import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +053072import static org.onosproject.yangutils.utils.UtilConstants.BYTE_WRAPPER;
Bharat saraswal250a7472016-05-12 13:16:57 +053073import static org.onosproject.yangutils.utils.UtilConstants.CASE;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +053074import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
Bharat saraswal84366c52016-03-23 19:40:35 +053075import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
Bharat saraswalaf413b82016-07-14 15:18:20 +053076import static org.onosproject.yangutils.utils.UtilConstants.CLASS;
77import static org.onosproject.yangutils.utils.UtilConstants.CLASS_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +053078import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
79import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
Bharat saraswal039f59c2016-07-14 21:57:13 +053080import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +053081import static org.onosproject.yangutils.utils.UtilConstants.COLON;
Bharat saraswal84366c52016-03-23 19:40:35 +053082import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +053083import static org.onosproject.yangutils.utils.UtilConstants.DECODE;
Bharat saraswal250a7472016-05-12 13:16:57 +053084import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
Bharat saraswal84366c52016-03-23 19:40:35 +053085import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
86import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +053087import static org.onosproject.yangutils.utils.UtilConstants.DOUBLE;
Bharat saraswal84366c52016-03-23 19:40:35 +053088import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
Bharat saraswal64e7e232016-07-14 23:33:55 +053089import static org.onosproject.yangutils.utils.UtilConstants.ELSE;
Bharat saraswal84366c52016-03-23 19:40:35 +053090import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
Bharat saraswal8beac342016-08-04 02:00:03 +053091import static org.onosproject.yangutils.utils.UtilConstants.ENUM;
Bharat saraswal84366c52016-03-23 19:40:35 +053092import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
93import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +053094import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
95import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
Bharat saraswal84366c52016-03-23 19:40:35 +053096import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
Bharat saraswal039f59c2016-07-14 21:57:13 +053097import static org.onosproject.yangutils.utils.UtilConstants.FILTER_CONTENT_MATCH;
Bharat saraswal8beac342016-08-04 02:00:03 +053098import static org.onosproject.yangutils.utils.UtilConstants.FLAG;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +053099import static org.onosproject.yangutils.utils.UtilConstants.FOR;
Bharat saraswal84366c52016-03-23 19:40:35 +0530100import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530101import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
102import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530103import static org.onosproject.yangutils.utils.UtilConstants.GET;
Bharat saraswal8beac342016-08-04 02:00:03 +0530104import static org.onosproject.yangutils.utils.UtilConstants.GET_CLASS;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +0530105import static org.onosproject.yangutils.utils.UtilConstants.GET_DECODER;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530106import static org.onosproject.yangutils.utils.UtilConstants.GET_FILTER_LEAF;
Bharat saraswal8beac342016-08-04 02:00:03 +0530107import static org.onosproject.yangutils.utils.UtilConstants.GET_LEAF_INDEX;
108import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD;
Bharat saraswal84366c52016-03-23 19:40:35 +0530109import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
110import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
111import static org.onosproject.yangutils.utils.UtilConstants.HASH;
112import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
113import static org.onosproject.yangutils.utils.UtilConstants.IF;
Bharat saraswal8beac342016-08-04 02:00:03 +0530114import static org.onosproject.yangutils.utils.UtilConstants.ILLEGAL_ACCESS_EXCEPTION;
Bharat saraswale50edca2016-08-05 01:58:25 +0530115import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE;
Bharat saraswal84366c52016-03-23 19:40:35 +0530116import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
117import static org.onosproject.yangutils.utils.UtilConstants.INT;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530118import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530119import static org.onosproject.yangutils.utils.UtilConstants.INT_MAX_RANGE;
120import static org.onosproject.yangutils.utils.UtilConstants.INT_MIN_RANGE;
Bharat saraswal8beac342016-08-04 02:00:03 +0530121import static org.onosproject.yangutils.utils.UtilConstants.INVOCATION_TARGET_EXCEPTION;
122import static org.onosproject.yangutils.utils.UtilConstants.INVOKE;
123import static org.onosproject.yangutils.utils.UtilConstants.IS_EMPTY;
124import static org.onosproject.yangutils.utils.UtilConstants.IS_SELECT_LEAF;
125import static org.onosproject.yangutils.utils.UtilConstants.LEAF_IDENTIFIER;
Bharat saraswal84366c52016-03-23 19:40:35 +0530126import static org.onosproject.yangutils.utils.UtilConstants.LIST;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530127import static org.onosproject.yangutils.utils.UtilConstants.LONG;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530128import static org.onosproject.yangutils.utils.UtilConstants.LONG_MAX_RANGE;
129import static org.onosproject.yangutils.utils.UtilConstants.LONG_MIN_RANGE;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530130import static org.onosproject.yangutils.utils.UtilConstants.LONG_WRAPPER;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530131import static org.onosproject.yangutils.utils.UtilConstants.MAP;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530132import static org.onosproject.yangutils.utils.UtilConstants.MAX_RANGE;
133import static org.onosproject.yangutils.utils.UtilConstants.MIN_RANGE;
Bharat saraswal84366c52016-03-23 19:40:35 +0530134import static org.onosproject.yangutils.utils.UtilConstants.NEW;
135import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530136import static org.onosproject.yangutils.utils.UtilConstants.NOT;
Bharat saraswal8beac342016-08-04 02:00:03 +0530137import static org.onosproject.yangutils.utils.UtilConstants.NO_SUCH_METHOD_EXCEPTION;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530138import static org.onosproject.yangutils.utils.UtilConstants.NULL;
Bharat saraswal84366c52016-03-23 19:40:35 +0530139import static org.onosproject.yangutils.utils.UtilConstants.OBJ;
140import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
141import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
142import static org.onosproject.yangutils.utils.UtilConstants.OF;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530143import static org.onosproject.yangutils.utils.UtilConstants.OMIT_NULL_VALUE_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +0530144import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
145import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
Bharat saraswal8beac342016-08-04 02:00:03 +0530146import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530147import static org.onosproject.yangutils.utils.UtilConstants.OR_OPERATION;
Bharat saraswal84366c52016-03-23 19:40:35 +0530148import static org.onosproject.yangutils.utils.UtilConstants.OTHER;
149import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530150import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BOOLEAN;
151import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BYTE;
152import static org.onosproject.yangutils.utils.UtilConstants.PARSE_INT;
153import static org.onosproject.yangutils.utils.UtilConstants.PARSE_LONG;
154import static org.onosproject.yangutils.utils.UtilConstants.PARSE_SHORT;
Bharat saraswal84366c52016-03-23 19:40:35 +0530155import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530156import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
Bharat saraswal84366c52016-03-23 19:40:35 +0530157import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530158import static org.onosproject.yangutils.utils.UtilConstants.PUT;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530159import static org.onosproject.yangutils.utils.UtilConstants.QUESTION_MARK;
Vidyashree Ramab3670472016-08-06 15:49:56 +0530160import static org.onosproject.yangutils.utils.UtilConstants.QUEUE;
Bharat saraswal84366c52016-03-23 19:40:35 +0530161import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530162import static org.onosproject.yangutils.utils.UtilConstants.REPLACE_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +0530163import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530164import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
Bharat saraswal84366c52016-03-23 19:40:35 +0530165import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
Vidyashree Ramab3670472016-08-06 15:49:56 +0530166import static org.onosproject.yangutils.utils.UtilConstants.SET;
Bharat saraswal84366c52016-03-23 19:40:35 +0530167import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
Bharat saraswal8beac342016-08-04 02:00:03 +0530168import static org.onosproject.yangutils.utils.UtilConstants.SET_SELECT_LEAF;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530169import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530170import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530171import static org.onosproject.yangutils.utils.UtilConstants.SINGLE_QUOTE;
Bharat saraswal84366c52016-03-23 19:40:35 +0530172import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
173import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530174import static org.onosproject.yangutils.utils.UtilConstants.SPLIT_STRING;
175import static org.onosproject.yangutils.utils.UtilConstants.SQUARE_BRACKETS;
Bharat saraswal84366c52016-03-23 19:40:35 +0530176import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
177import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
178import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
Bharat saraswal250a7472016-05-12 13:16:57 +0530179import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
Bharat saraswal84366c52016-03-23 19:40:35 +0530180import static org.onosproject.yangutils.utils.UtilConstants.THIS;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530181import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
Gaurav Agrawal8a147522016-08-10 13:43:01 +0530182import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAR;
Bharat saraswal84366c52016-03-23 19:40:35 +0530183import static org.onosproject.yangutils.utils.UtilConstants.TO;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530184import static org.onosproject.yangutils.utils.UtilConstants.TRIM_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +0530185import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530186import static org.onosproject.yangutils.utils.UtilConstants.TRY;
Bharat saraswal84366c52016-03-23 19:40:35 +0530187import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
Bharat saraswal8beac342016-08-04 02:00:03 +0530188import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_FOUR_SPACE_INDENTATION;
189import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_SPACE_INDENTATION;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530190import static org.onosproject.yangutils.utils.UtilConstants.UINT_MAX_RANGE;
191import static org.onosproject.yangutils.utils.UtilConstants.UINT_MIN_RANGE;
192import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MAX_RANGE;
193import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MIN_RANGE;
194import static org.onosproject.yangutils.utils.UtilConstants.VALIDATE_RANGE;
Bharat saraswal84366c52016-03-23 19:40:35 +0530195import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
Bharat saraswal8beac342016-08-04 02:00:03 +0530196import static org.onosproject.yangutils.utils.UtilConstants.VALUE_LEAF_SET;
Bharat saraswal84366c52016-03-23 19:40:35 +0530197import static org.onosproject.yangutils.utils.UtilConstants.VOID;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530198import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530199import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_OP_PARAM_INFO;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530200import static org.onosproject.yangutils.utils.UtilConstants.YANG_UTILS_TODO;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +0530201import static org.onosproject.yangutils.utils.UtilConstants.ZERO;
Bharat saraswal84366c52016-03-23 19:40:35 +0530202import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
203import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
204import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530205import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.FROM_METHOD;
Bharat saraswal84366c52016-03-23 19:40:35 +0530206import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530207import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.MANAGER_SETTER_METHOD;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530208import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
Bharat saraswal84366c52016-03-23 19:40:35 +0530209import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530210import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530211import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForAddAugmentation;
Bharat saraswal8beac342016-08-04 02:00:03 +0530212import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForBuilderMethod;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530213import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForGetAugmentation;
Bharat saraswal8beac342016-08-04 02:00:03 +0530214import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForGetMethodWithAttribute;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530215import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForValidatorMethod;
Bharat saraswald14cbe82016-07-14 13:26:18 +0530216import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530217import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
218import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
219import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
Bharat saraswal84366c52016-03-23 19:40:35 +0530220import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
Bharat saraswal97459962016-02-20 21:57:16 +0530221
222/**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530223 * Represents generator for methods of generated files based on the file type.
Bharat saraswal97459962016-02-20 21:57:16 +0530224 */
225public final class MethodsGenerator {
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +0530226 private static final String BITS_STRING_ARRAY_VAR = "bitsTemp";
227 private static final String BIT_TEMP_VAR = "bitTemp";
Bharat saraswal97459962016-02-20 21:57:16 +0530228
Bharat saraswal97459962016-02-20 21:57:16 +0530229 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530230 * Creates an instance of method generator.
Bharat saraswal97459962016-02-20 21:57:16 +0530231 */
232 private MethodsGenerator() {
233 }
234
235 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530236 * Returns the methods strings for builder interface.
237 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530238 * @param name attribute name
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530239 * @param pluginConfig plugin configurations
Vinod Kumar S08710982016-03-03 19:55:30 +0530240 * @return method string for builder interface
Bharat saraswal97459962016-02-20 21:57:16 +0530241 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530242 public static String parseBuilderInterfaceBuildMethodString(String name, YangPluginConfig pluginConfig) {
Vidyashree Ramab3670472016-08-06 15:49:56 +0530243 return getJavaDoc(BUILD_METHOD, name, false, pluginConfig, null) + getBuildForInterface(name);
Bharat saraswal97459962016-02-20 21:57:16 +0530244 }
245
246 /**
247 * Returns getter string.
248 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530249 * @param attr attribute info
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530250 * @param generatedJavaFiles generated java files
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530251 * @param pluginConfig plugin configurations
Bharat saraswal97459962016-02-20 21:57:16 +0530252 * @return getter string
253 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530254 public static String getGetterString(JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530255 YangPluginConfig pluginConfig) {
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530256 String returnType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530257 String attributeName = attr.getAttributeName();
Vidyashree Ramab3670472016-08-06 15:49:56 +0530258 String appDataStructure = null;
259 if (attr.getCompilerAnnotation() != null) {
260 appDataStructure = attr.getCompilerAnnotation().getYangAppDataStructure().getDataStructure().name();
261 }
Bharat saraswal8beac342016-08-04 02:00:03 +0530262 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
263 return generateForGetMethodWithAttribute(returnType)
Vidyashree Ramab3670472016-08-06 15:49:56 +0530264 + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles,
265 attr.getCompilerAnnotation());
Bharat saraswal8beac342016-08-04 02:00:03 +0530266 }
Vinod Kumar S08710982016-03-03 19:55:30 +0530267
Vidyashree Ramab3670472016-08-06 15:49:56 +0530268 return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr(), pluginConfig, appDataStructure)
269 + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles,
270 attr.getCompilerAnnotation());
Bharat saraswal97459962016-02-20 21:57:16 +0530271 }
272
273 /**
274 * Returns setter string.
275 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530276 * @param attr attribute info
277 * @param className java class name
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530278 * @param generatedJavaFiles generated java files
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530279 * @param pluginConfig plugin configurations
Bharat saraswal97459962016-02-20 21:57:16 +0530280 * @return setter string
281 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530282 public static String getSetterString(JavaAttributeInfo attr, String className, int generatedJavaFiles,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530283 YangPluginConfig pluginConfig) {
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530284 String attrType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530285 String attributeName = attr.getAttributeName();
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530286 JavaDocGen.JavaDocType type;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530287 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530288 type = MANAGER_SETTER_METHOD;
289 } else {
290 type = SETTER_METHOD;
291 }
Bharat saraswal97459962016-02-20 21:57:16 +0530292
Vidyashree Ramab3670472016-08-06 15:49:56 +0530293 String appDataStructure = null;
294 if (attr.getCompilerAnnotation() != null) {
295 appDataStructure = attr.getCompilerAnnotation().getYangAppDataStructure().getDataStructure().name();
296 }
297 return getJavaDoc(type, attributeName, attr.isListAttr(), pluginConfig, appDataStructure)
298 + getSetterForInterface(attributeName, attrType, className, attr.isListAttr(), generatedJavaFiles,
299 attr.getCompilerAnnotation());
Bharat saraswal97459962016-02-20 21:57:16 +0530300 }
301
302 /**
303 * Returns constructor method string.
304 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530305 * @param name class name
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530306 * @param pluginConfig plugin configurations
Bharat saraswal97459962016-02-20 21:57:16 +0530307 * @return constructor string
308 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530309 private static String getConstructorString(String name, YangPluginConfig pluginConfig) {
Vidyashree Ramab3670472016-08-06 15:49:56 +0530310 return getJavaDoc(CONSTRUCTOR, name, false, pluginConfig, null);
Bharat saraswal97459962016-02-20 21:57:16 +0530311 }
312
313 /**
314 * Returns default constructor method string.
315 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530316 * @param name class name
Bharat saraswal022dae92016-03-04 20:08:09 +0530317 * @param modifierType modifier type
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530318 * @param pluginConfig plugin configurations
Bharat saraswal97459962016-02-20 21:57:16 +0530319 * @return default constructor string
320 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530321 public static String getDefaultConstructorString(String name, String modifierType,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530322 YangPluginConfig pluginConfig) {
Vidyashree Ramab3670472016-08-06 15:49:56 +0530323 return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false, pluginConfig, null)
324 + getDefaultConstructor(name, modifierType) + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530325 }
326
327 /**
328 * Returns check not null string.
329 *
330 * @param name attribute name
331 * @return check not null string
332 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530333 static String getCheckNotNull(String name) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530334 return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING + OPEN_PARENTHESIS + name + COMMA + SPACE + name
335 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal97459962016-02-20 21:57:16 +0530336 }
337
338 /**
339 * Returns build method string.
340 *
Bharat saraswal8beac342016-08-04 02:00:03 +0530341 * @param name class name
342 * @param isRootNode if root node
Bharat saraswal97459962016-02-20 21:57:16 +0530343 * @return build string
344 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530345 public static String getBuildString(String name, boolean isRootNode) {
346 if (isRootNode) {
347 return NEW_LINE + getBuild(name, true);
348 }
349 return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name, false);
Bharat saraswal97459962016-02-20 21:57:16 +0530350 }
351
352 /**
353 * Returns the getter method strings for class file.
354 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530355 * @param attr attribute info
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530356 * @param generatedJavaFiles for the type of java file being generated
Vinod Kumar S08710982016-03-03 19:55:30 +0530357 * @return getter method for class
Bharat saraswal97459962016-02-20 21:57:16 +0530358 */
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530359 public static String getGetterForClass(JavaAttributeInfo attr, int generatedJavaFiles) {
Bharat saraswal8beac342016-08-04 02:00:03 +0530360 String attrQualifiedType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530361 String attributeName = attr.getAttributeName();
Bharat saraswal022dae92016-03-04 20:08:09 +0530362
363 if (!attr.isListAttr()) {
Bharat saraswal8beac342016-08-04 02:00:03 +0530364 return getGetter(attrQualifiedType, attributeName, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530365 }
Vidyashree Ramab3670472016-08-06 15:49:56 +0530366 String attrParam = getListAttribute(attrQualifiedType, attr.getCompilerAnnotation());
367 return getGetter(attrParam, attributeName, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530368 }
369
370 /**
371 * Returns getter for attribute.
372 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530373 * @param type return type
374 * @param name attribute name
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530375 * @param generatedJavaFiles generated java files
Bharat saraswal022dae92016-03-04 20:08:09 +0530376 * @return getter for attribute
377 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530378 static String getGetter(String type, String name, int generatedJavaFiles) {
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530379 String ret = parseTypeForReturnValue(type);
Bharat saraswal64e7e232016-07-14 23:33:55 +0530380 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
janani b703cfe42016-05-17 13:12:22 +0530381 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCapitalCase(name)
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530382 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
383 EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION +
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530384 RETURN + SPACE + ret + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530385 } else {
386 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + name
387 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
388 EIGHT_SPACE_INDENTATION + RETURN + SPACE + name + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
389 + CLOSE_CURLY_BRACKET;
390 }
Bharat saraswal97459962016-02-20 21:57:16 +0530391 }
392
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530393 /*Provides string to return for type.*/
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530394 private static String parseTypeForReturnValue(String type) {
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530395 switch (type) {
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530396 case BYTE:
397 case INT:
398 case SHORT:
399 case LONG:
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +0530400 case DOUBLE:
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530401 return "0";
402 case BOOLEAN_DATA_TYPE:
403 return FALSE;
404 default:
405 return null;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530406 }
407 }
408
Bharat saraswal97459962016-02-20 21:57:16 +0530409 /**
410 * Returns the setter method strings for class file.
411 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530412 * @param attr attribute info
413 * @param className name of the class
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530414 * @param generatedJavaFiles generated java files
Vinod Kumar S08710982016-03-03 19:55:30 +0530415 * @return setter method for class
Bharat saraswal97459962016-02-20 21:57:16 +0530416 */
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530417 public static String getSetterForClass(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
Bharat saraswal8beac342016-08-04 02:00:03 +0530418 String attrQualifiedType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530419 String attributeName = attr.getAttributeName();
Bharat saraswal8beac342016-08-04 02:00:03 +0530420 boolean isTypeNull = false;
421 if (attr.getAttributeType() == null) {
422 isTypeNull = true;
Bharat saraswal022dae92016-03-04 20:08:09 +0530423 }
Bharat saraswal8beac342016-08-04 02:00:03 +0530424 if (!attr.isListAttr()) {
425 return getSetter(className, attributeName, attrQualifiedType, generatedJavaFiles, isTypeNull, false);
426 }
Vidyashree Ramab3670472016-08-06 15:49:56 +0530427 String attrParam = getListAttribute(attrQualifiedType, attr.getCompilerAnnotation());
428 return getSetter(className, attributeName, attrParam, generatedJavaFiles, isTypeNull, true);
Bharat saraswal022dae92016-03-04 20:08:09 +0530429 }
430
431 /**
432 * Returns setter for attribute.
433 *
Bharat saraswal8beac342016-08-04 02:00:03 +0530434 * @param className class name
435 * @param name attribute name
436 * @param type return type
437 * @param isTypeNull if attribute type is null
438 * @param isList true if leaf-list
Bharat saraswal022dae92016-03-04 20:08:09 +0530439 * @return setter for attribute
440 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530441 private static String getSetter(String className, String name, String type, int generatedJavaFiles,
442 boolean isTypeNull, boolean isList) {
Bharat saraswal64e7e232016-07-14 23:33:55 +0530443 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530444 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX
janani b703cfe42016-05-17 13:12:22 +0530445 + getCapitalCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530446 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO +
447 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530448 } else if (generatedJavaFiles == GENERATE_EVENT_SUBJECT_CLASS) {
449 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + name + OPEN_PARENTHESIS + type + SPACE
450 + name + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
451 + THIS + PERIOD + name + SPACE + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE
452 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530453 } else {
Bharat saraswal8beac342016-08-04 02:00:03 +0530454 String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE +
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530455 name + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
Bharat saraswal8beac342016-08-04 02:00:03 +0530456 + OPEN_CURLY_BRACKET;
457 if (!isTypeNull && !isList) {
458 method = method + getValueLeafSetString(name);
459 } else {
460 method = method + EMPTY_STRING;
461 }
462 return method + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS +
463 PERIOD + name + SPACE
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530464 + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE
465 + THIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530466 }
Bharat saraswal8beac342016-08-04 02:00:03 +0530467
468 }
469
470 //Returns value leaf flag setter.
471 private static String getValueLeafSetString(String name) {
Gaurav Agrawal8a147522016-08-10 13:43:01 +0530472 return "\n getValueLeafFlags().set(LeafIdentifier." + name.toUpperCase() + ".getLeafIndex());";
Bharat saraswal97459962016-02-20 21:57:16 +0530473 }
474
475 /**
Bharat saraswal022dae92016-03-04 20:08:09 +0530476 * Returns the setter method strings for class file.
477 *
478 * @param attr attribute info
479 * @return setter method for class
480 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530481 static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
Bharat saraswal022dae92016-03-04 20:08:09 +0530482
Bharat saraswal8beac342016-08-04 02:00:03 +0530483 String attrQualifiedType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530484 String attributeName = attr.getAttributeName();
Bharat saraswal8beac342016-08-04 02:00:03 +0530485 return getTypeDefSetter(attrQualifiedType, attributeName);
Bharat saraswal022dae92016-03-04 20:08:09 +0530486 }
487
488 /**
489 * Returns type def's setter for attribute.
490 *
491 * @param type data type
492 * @param name attribute name
493 * @return setter for type def's attribute
494 */
495 private static String getTypeDefSetter(String type, String name) {
janani b703cfe42016-05-17 13:12:22 +0530496 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(name)
Bharat saraswal84366c52016-03-23 19:40:35 +0530497 + OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Bharat saraswal8beac342016-08-04 02:00:03 +0530498 + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN +
499 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal022dae92016-03-04 20:08:09 +0530500 }
501
502 /**
503 * Returns override string.
504 *
505 * @return override string
506 */
507 public static String getOverRideString() {
Bharat saraswal84366c52016-03-23 19:40:35 +0530508 return NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530509 }
510
511 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530512 * Returns the getter method strings for interface file.
513 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530514 * @param yangName name of the attribute
515 * @param returnType return type of attribute
516 * @param isList is list attribute
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530517 * @param generatedJavaFiles generated java files
Vidyashree Ramab3670472016-08-06 15:49:56 +0530518 * @param compilerAnnotation compiler annotation
Vinod Kumar S08710982016-03-03 19:55:30 +0530519 * @return getter method for interface
Bharat saraswal97459962016-02-20 21:57:16 +0530520 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530521 static String getGetterForInterface(String yangName, String returnType, boolean isList,
Gaurav Agrawal8a147522016-08-10 13:43:01 +0530522 int generatedJavaFiles, YangCompilerAnnotation compilerAnnotation) {
Bharat saraswal022dae92016-03-04 20:08:09 +0530523 if (!isList) {
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530524 return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530525 }
Vidyashree Ramab3670472016-08-06 15:49:56 +0530526 String listAttr = getListAttribute(returnType, compilerAnnotation);
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530527 return getGetterInterfaceString(listAttr, yangName, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530528 }
529
530 /**
531 * Returns getter for attribute in interface.
532 *
533 * @param returnType return type
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530534 * @param yangName attribute name
Bharat saraswal022dae92016-03-04 20:08:09 +0530535 * @return getter for interface
536 */
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530537 private static String getGetterInterfaceString(String returnType, String yangName,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530538 int generatedJavaFiles) {
Bharat saraswal64e7e232016-07-14 23:33:55 +0530539 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
Bharat saraswal8beac342016-08-04 02:00:03 +0530540 return getGetMethodWithArgument(returnType, yangName);
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530541 } else {
542 return FOUR_SPACE_INDENTATION + returnType + SPACE + yangName
543 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
544 }
Bharat saraswal97459962016-02-20 21:57:16 +0530545 }
546
547 /**
548 * Returns the setter method strings for interface file.
549 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530550 * @param attrName name of the attribute
551 * @param attrType return type of attribute
552 * @param className name of the java class being generated
553 * @param isList is list attribute
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530554 * @param generatedJavaFiles generated java files
Vidyashree Ramab3670472016-08-06 15:49:56 +0530555 * @param compilerAnnotation compiler annotations
Vinod Kumar S08710982016-03-03 19:55:30 +0530556 * @return setter method for interface
Bharat saraswal97459962016-02-20 21:57:16 +0530557 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530558 static String getSetterForInterface(String attrName, String attrType, String className,
Gaurav Agrawal8a147522016-08-10 13:43:01 +0530559 boolean isList, int generatedJavaFiles,
560 YangCompilerAnnotation compilerAnnotation) {
Bharat saraswal022dae92016-03-04 20:08:09 +0530561 if (!isList) {
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530562 return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530563 }
Vidyashree Ramab3670472016-08-06 15:49:56 +0530564
565 String listAttr = getListAttribute(attrType, compilerAnnotation);
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530566 return getSetterInterfaceString(className, attrName, listAttr, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530567 }
568
569 /**
570 * Returns setter string for interface.
571 *
572 * @param className class name
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530573 * @param attrName attribute name
574 * @param attrType attribute type
Bharat saraswal022dae92016-03-04 20:08:09 +0530575 * @return setter string
576 */
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530577 private static String getSetterInterfaceString(String className, String attrName, String attrType,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530578 int generatedJavaFiles) {
Bharat saraswal64e7e232016-07-14 23:33:55 +0530579 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
janani b703cfe42016-05-17 13:12:22 +0530580 return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(attrName)
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530581 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
582 } else {
583 return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + attrName
584 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
585 }
Bharat saraswal97459962016-02-20 21:57:16 +0530586 }
587
588 /**
Bharat saraswal022dae92016-03-04 20:08:09 +0530589 * Returns list string.
590 *
591 * @return list string
592 */
593 private static String getListString() {
Bharat saraswal84366c52016-03-23 19:40:35 +0530594 return LIST + DIAMOND_OPEN_BRACKET;
Bharat saraswal022dae92016-03-04 20:08:09 +0530595 }
596
597 /**
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530598 * Returns return type for attribute.
599 *
600 * @param attr attribute info
601 * @return return type
602 */
603 private static String getReturnType(JavaAttributeInfo attr) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530604 String returnType = EMPTY_STRING;
Vidyashree Rama13960652016-04-26 15:06:06 +0530605 if (attr.isQualifiedName() && attr.getImportInfo().getPkgInfo() != null) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530606 returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530607 }
608 returnType = returnType + attr.getImportInfo().getClassInfo();
609 return returnType;
610 }
611
612 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530613 * Returns the build method strings for interface file.
614 *
Vinod Kumar S08710982016-03-03 19:55:30 +0530615 * @param yangName name of the interface
616 * @return build method for interface
Bharat saraswal97459962016-02-20 21:57:16 +0530617 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530618 static String getBuildForInterface(String yangName) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530619 return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
620 + NEW_LINE;
Bharat saraswal97459962016-02-20 21:57:16 +0530621 }
622
623 /**
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530624 * Returns constructor string for impl class.
625 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530626 * @param yangName class name
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530627 * @param pluginConfig plugin configurations
Bharat saraswal8beac342016-08-04 02:00:03 +0530628 * @param isRootNode if root node
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530629 * @return constructor string
630 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530631 static String getConstructorStart(String yangName, YangPluginConfig pluginConfig, boolean isRootNode) {
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530632 String javadoc = getConstructorString(yangName, pluginConfig);
Bharat saraswal8beac342016-08-04 02:00:03 +0530633
634 String returnType = getCapitalCase(DEFAULT) + yangName;
635 if (isRootNode) {
636 returnType = yangName + OP_PARAM;
637 }
638 String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + returnType +
Bharat saraswald14cbe82016-07-14 13:26:18 +0530639 OPEN_PARENTHESIS + yangName + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT
640 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530641 return javadoc + constructor;
642 }
643
644 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530645 * Returns the constructor strings for class file.
646 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530647 * @param attr attribute info
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530648 * @param generatedJavaFiles generated java files
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530649 * @param pluginConfig plugin configurations
Bharat saraswal97459962016-02-20 21:57:16 +0530650 * @return constructor for class
651 */
Bharat saraswald14cbe82016-07-14 13:26:18 +0530652 public static String getConstructor(JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530653 YangPluginConfig pluginConfig) {
janani b703cfe42016-05-17 13:12:22 +0530654 String attributeName = attr.getAttributeName();
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530655 String constructor;
Bharat saraswal84366c52016-03-23 19:40:35 +0530656
Bharat saraswal64e7e232016-07-14 23:33:55 +0530657 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
Bharat saraswald14cbe82016-07-14 13:26:18 +0530658 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD
659 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
660 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
661 + getCapitalCase(getCamelCase(attributeName, pluginConfig.getConflictResolver()))
662 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530663 } else {
Bharat saraswald14cbe82016-07-14 13:26:18 +0530664 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD
665 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
666 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD
667 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) +
668 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530669 }
Bharat saraswal022dae92016-03-04 20:08:09 +0530670 return constructor;
Bharat saraswal97459962016-02-20 21:57:16 +0530671 }
672
673 /**
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530674 * Returns the rpc strings for service interface.
675 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530676 * @param rpcName name of the rpc
677 * @param inputName name of input
678 * @param outputName name of output
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530679 * @param pluginConfig plugin configurations
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530680 * @return rpc method string
681 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530682 public static String getRpcServiceMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530683 YangPluginConfig pluginConfig) {
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530684 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530685 if (!inputName.equals(EMPTY_STRING)) {
686 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswal250a7472016-05-12 13:16:57 +0530687 }
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530688 return FOUR_SPACE_INDENTATION + outputName + SPACE + rpcName + OPEN_PARENTHESIS + inputName
689 + CLOSE_PARENTHESIS + SEMI_COLAN;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530690 }
691
692 /**
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530693 * Returns the rpc strings for manager impl.
694 *
Gaurav Agrawalbfce9342016-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 saraswal715d3fc2016-05-17 19:59:16 +0530698 * @param pluginConfig plugin configurations
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530699 * @return rpc method string
700 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530701 public static String getRpcManagerMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530702 YangPluginConfig pluginConfig) {
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530703 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530704 if (!inputName.equals(EMPTY_STRING)) {
705 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswal250a7472016-05-12 13:16:57 +0530706 }
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530707
Bharat saraswald14cbe82016-07-14 13:26:18 +0530708 String method = getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName
709 + OPEN_PARENTHESIS + inputName + CLOSE_PARENTHESIS + SPACE
710 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530711 if (!outputName.contentEquals(VOID)) {
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530712 method += EIGHT_SPACE_INDENTATION + RETURN + SPACE + parseTypeForReturnValue(outputName) + SEMI_COLAN
713 + NEW_LINE;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530714 }
715 method += FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530716 return method;
717 }
718
719 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530720 * Returns the build method strings for class file.
721 *
Bharat saraswal8beac342016-08-04 02:00:03 +0530722 * @param yangName class name
723 * @param isRootNode if root node
Vinod Kumar S08710982016-03-03 19:55:30 +0530724 * @return build method string for class
Bharat saraswal97459962016-02-20 21:57:16 +0530725 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530726 static String getBuild(String yangName, boolean isRootNode) {
727 String type = getCapitalCase(DEFAULT) + yangName;
728 if (isRootNode) {
729 type = yangName + OP_PARAM;
730 }
731 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS +
732 CLOSE_PARENTHESIS
Bharat saraswald14cbe82016-07-14 13:26:18 +0530733 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE +
Bharat saraswal8beac342016-08-04 02:00:03 +0530734 type + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN
Bharat saraswald14cbe82016-07-14 13:26:18 +0530735 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal97459962016-02-20 21:57:16 +0530736 }
737
738 /**
739 * Returns the Default constructor strings for class file.
740 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530741 * @param name name of the class
Bharat saraswal022dae92016-03-04 20:08:09 +0530742 * @param modifierType modifier type for default constructor
Bharat saraswal97459962016-02-20 21:57:16 +0530743 * @return Default constructor for class
744 */
Bharat saraswal022dae92016-03-04 20:08:09 +0530745 private static String getDefaultConstructor(String name, String modifierType) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530746 return FOUR_SPACE_INDENTATION + modifierType + SPACE + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
747 + OPEN_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal97459962016-02-20 21:57:16 +0530748 }
749
Bharat saraswal022dae92016-03-04 20:08:09 +0530750 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530751 * Returns to string method's open strings.
Bharat saraswal022dae92016-03-04 20:08:09 +0530752 *
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530753 * @return string method's open string
Bharat saraswal022dae92016-03-04 20:08:09 +0530754 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530755 static String getToStringMethodOpen() {
Bharat saraswal84366c52016-03-23 19:40:35 +0530756 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STRING_DATA_TYPE + SPACE + TO
757 + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
758 + EIGHT_SPACE_INDENTATION + RETURN + GOOGLE_MORE_OBJECT_METHOD_STRING + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530759 }
760
761 /**
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530762 * Returns whether the data type is of primitive data type.
763 *
764 * @param dataType data type to be checked
765 * @return true, if data type can have primitive data type, false otherwise
766 */
Bharat saraswal64e7e232016-07-14 23:33:55 +0530767 private static boolean isPrimitiveDataType(YangDataTypes dataType) {
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530768 return dataType == INT8
769 || dataType == INT16
770 || dataType == INT32
771 || dataType == INT64
772 || dataType == UINT8
773 || dataType == UINT16
774 || dataType == UINT32
775 || dataType == UINT64
776 || dataType == DECIMAL64
Bharat saraswal039f59c2016-07-14 21:57:13 +0530777 || dataType == BOOLEAN
778 || dataType == EMPTY;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530779
780 }
781
782 private static String getAttrTypeForFilterContentMatchWhenPrimitiveDataType(String attributeName) {
783 return APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
784 + SPACE + NOT + EQUAL + SPACE + attributeName + OPEN_PARENTHESIS
785 + CLOSE_PARENTHESIS;
786 }
787
Bharat saraswal8beac342016-08-04 02:00:03 +0530788 private static String getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(String attributeName) {
Bharat saraswal64e7e232016-07-14 23:33:55 +0530789 return APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
790 + SPACE + EQUAL + EQUAL + SPACE + NULL + SPACE + OR_OPERATION + SPACE
791 + NOT + OPEN_PARENTHESIS + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
792 + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD
793 + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
794 + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS;
795 }
796
797 private static String getIfFilterContentMatchMethodImpl(String attributeName,
Bharat saraswal8beac342016-08-04 02:00:03 +0530798 YangType dataType) {
Bharat saraswal64e7e232016-07-14 23:33:55 +0530799 String attrQualifiedType;
800
801 if (isPrimitiveDataType(dataType.getDataType())) {
802 attrQualifiedType = getAttrTypeForFilterContentMatchWhenPrimitiveDataType(attributeName);
803 } else if (dataType.getDataType() == LEAFREF) {
804 YangType type = ((YangLeafRef) dataType.getDataTypeExtendedInfo()).getEffectiveDataType();
805 if (isPrimitiveDataType(type.getDataType())) {
806 attrQualifiedType = getAttrTypeForFilterContentMatchWhenPrimitiveDataType(attributeName);
807 } else {
Bharat saraswal8beac342016-08-04 02:00:03 +0530808 attrQualifiedType = getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(attributeName);
Bharat saraswal64e7e232016-07-14 23:33:55 +0530809 }
810 } else {
Bharat saraswal8beac342016-08-04 02:00:03 +0530811 attrQualifiedType = getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(attributeName);
Bharat saraswal64e7e232016-07-14 23:33:55 +0530812 }
813
814 return attrQualifiedType;
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530815 }
816
817 /**
Bharat saraswale50edca2016-08-05 01:58:25 +0530818 * Returns is filter content match for leaf.
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530819 *
Bharat saraswale50edca2016-08-05 01:58:25 +0530820 * @param javaAttributeInfo java attribute
821 * @param type data type
822 * @return is filter content match for leaf
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530823 */
Bharat saraswale50edca2016-08-05 01:58:25 +0530824 public static String getIsFilerContentMatchForLeaf(JavaAttributeInfo javaAttributeInfo, YangType<?> type) {
825 String attrQualifiedType;
826 String attributeName = javaAttributeInfo.getAttributeName();
827 attrQualifiedType = getIfFilterContentMatchMethodImpl(attributeName,
828 type);
829 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS
830 + GET_FILTER_LEAF + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + GET_METHOD_PREFIX
831 + OPEN_PARENTHESIS + LEAF_IDENTIFIER + PERIOD + attributeName.toUpperCase() + PERIOD +
832 GET_LEAF_INDEX
833 + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
834 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE
835 + OPEN_PARENTHESIS + attrQualifiedType + CLOSE_PARENTHESIS + SPACE
836 + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE
837 + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE
838 + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
839 }
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530840
Bharat saraswale50edca2016-08-05 01:58:25 +0530841 /**
842 * Returns is filter content match for leaf.
843 *
844 * @param javaAttributeInfo java attribute
845 * @return is filter content match for leaf
846 */
847 public static String getIsFilerContentMatchForLeafList(JavaAttributeInfo javaAttributeInfo) {
848 String attributeName = javaAttributeInfo.getAttributeName();
849 return getIsFileContentMatchForLists(getCapitalCase(attributeName), true,
850 javaAttributeInfo.getImportInfo().getClassInfo());
851 }
Bharat saraswal64e7e232016-07-14 23:33:55 +0530852
Bharat saraswale50edca2016-08-05 01:58:25 +0530853 /**
854 * Returns is filter content match for leaf.
855 *
856 * @param curNode current node
857 * @param pluginConfig plugin configurations
858 * @return is filter content match for leaf
859 */
860 static String getIsFilterContentMatchStart(YangNode curNode, YangPluginConfig pluginConfig) {
861 JavaFileInfoTranslator javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
862 JavaFileInfoTranslator parentInfo;
863
864 String instance = APP_INSTANCE;
865 String name = getCapitalCase(javaFileInfo.getJavaName());
866 if (curNode instanceof YangCase) {
867 instance = INSTANCE;
868 YangNode parent = curNode.getParent();
869 if (parent instanceof YangChoice) {
870 parentInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo();
871 name = getCapitalCase(parentInfo.getJavaName());
872 } else if (parent instanceof YangAugment) {
873 parentInfo = ((JavaFileInfoContainer) ((YangAugment) parent).getAugmentedNode()).getJavaFileInfo();
874 if (parentInfo != null) {
875 name = getCapitalCase(parentInfo.getJavaName());
876 } else {
877 name = getCapitalCase(getCamelCase(((YangAugment) parent).getAugmentedNode().getName(),
878 pluginConfig.getConflictResolver()));
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530879 }
880 }
Bharat saraswale50edca2016-08-05 01:58:25 +0530881 }
882 String filterMethod = getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE
883 + SPACE + FILTER_CONTENT_MATCH + OPEN_PARENTHESIS + name
884 + SPACE + instance + CLOSE_PARENTHESIS + SPACE
885 + OPEN_CURLY_BRACKET + NEW_LINE;
886 if (curNode instanceof YangCase) {
887 String caseName = getCapitalCase(javaFileInfo.getJavaName());
888 filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + caseName + SPACE + APP_INSTANCE + SPACE + EQUAL
889 + SPACE
890 + OPEN_PARENTHESIS + caseName + CLOSE_PARENTHESIS + SPACE + instance + SEMI_COLAN + NEW_LINE;
891 }
892 if (curNode instanceof YangAugmentableNode) {
893 filterMethod = filterMethod + getAugmentableOpParamSyntax();
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530894 }
895 return filterMethod;
896 }
897
Bharat saraswal8beac342016-08-04 02:00:03 +0530898 /**
Bharat saraswale50edca2016-08-05 01:58:25 +0530899 * Returns is filter content match for node.
900 *
901 * @param name attribute name
902 * @param isList if list node
903 * @return is filter content match for node
904 */
905 public static String getIsFilterContentForNodes(String name, boolean isList) {
906 name = getCapitalCase(name);
907 if (isList) {
908 return getIsFileContentMatchForLists(name, false, null);
909 } else {
910 return getIsFilerContentMatchForChildNode(name);
911 }
912 }
913
914 /**
915 * Returns is filter content match close.
916 *
917 * @return is filter content match close
918 */
919 static String getIsFilerContentMatchClose() {
920 return EIGHT_SPACE_INDENTATION + RETURN + SPACE + TRUE + SEMI_COLAN +
921 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
922 }
923
924 /**
Bharat saraswal8beac342016-08-04 02:00:03 +0530925 * Returns filter content match for child nodes.
926 *
927 * @param name name of node
928 * @return filter content match for child nodes
929 */
930 private static String getIsFilerContentMatchForChildNode(String name) {
931 name = getSmallCase(name);
932 String method = EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + name + OPEN_PARENTHESIS +
933 CLOSE_PARENTHESIS + SPACE + NOT + EQUAL + SPACE + NULL + CLOSE_PARENTHESIS + SPACE +
934 OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + APP_INSTANCE
935 + PERIOD + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + EQUAL
936 + EQUAL + SPACE + NULL + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
Bharat saraswale50edca2016-08-05 01:58:25 +0530937 SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION +
Bharat saraswal8beac342016-08-04 02:00:03 +0530938 CLOSE_CURLY_BRACKET + NEW_LINE;
939 return method + TWELVE_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + name + OPEN_PARENTHESIS +
940 CLOSE_PARENTHESIS + PERIOD + FILTER_CONTENT_MATCH + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD + name +
941 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
942 OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + SEMI_COLAN +
943 NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
944 + CLOSE_CURLY_BRACKET + NEW_LINE;
945 }
946
947 /**
948 * Returns filter content match for list types.
949 *
950 * @param name name of node
951 * @param isLeafList if for leaf list
952 * @param type type of the attribute
953 * @return filter content match for list types
954 */
955 private static String getIsFileContentMatchForLists(String name, boolean isLeafList, String type) {
956 String method = EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + getSmallCase(name) + OPEN_PARENTHESIS
957 + CLOSE_PARENTHESIS + SPACE + NOT + EQUAL + SPACE + NULL + SPACE + AND + AND + SPACE + NOT +
958 getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + IS_EMPTY +
959 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
960 + NEW_LINE;
Gaurav Agrawal8a147522016-08-10 13:43:01 +0530961 method = method + TWELVE_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD +
962 getSmallCase(name)
Bharat saraswal8beac342016-08-04 02:00:03 +0530963 + OPEN_PARENTHESIS
964 + CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + SPACE + NULL + SPACE + "||" + SPACE +
965 getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + IS_EMPTY + CLOSE_PARENTHESIS +
966 SPACE + OPEN_CURLY_BRACKET
967 + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE +
968 TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
969 if (isLeafList) {
970 if (type.equals(getSmallCase(STRING_DATA_TYPE))) {
971 type = STRING_DATA_TYPE;
972 }
973 method = method + TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + type + SPACE +
974 getSmallCase(name)
975 + SPACE + COLAN + SPACE + getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
976 CLOSE_PARENTHESIS
977 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE +
978 FLAG + SPACE + EQUAL + SPACE + FALSE + SEMI_COLAN + NEW_LINE;
979 method = method + SIXTEEN_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + type + SPACE +
Gaurav Agrawal8a147522016-08-10 13:43:01 +0530980 TMP_VAR + getSmallCase(name)
Bharat saraswal8beac342016-08-04 02:00:03 +0530981 + SPACE + COLAN + SPACE + APP_INSTANCE + PERIOD + getSmallCase(name) + OPEN_PARENTHESIS
982 + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
983 method = method + TWENTY_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + getSmallCase(name) + PERIOD;
984 } else {
985 method = method + TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + name + SPACE +
986 getSmallCase(name)
987 + SPACE + COLAN + SPACE + getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
988 CLOSE_PARENTHESIS
989 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE +
990 FLAG + SPACE + EQUAL + SPACE + FALSE + SEMI_COLAN + NEW_LINE;
991 method = method + SIXTEEN_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + name + SPACE +
Gaurav Agrawal8a147522016-08-10 13:43:01 +0530992 TMP_VAR + getSmallCase(name)
Bharat saraswal8beac342016-08-04 02:00:03 +0530993 + SPACE + COLAN + SPACE + APP_INSTANCE + PERIOD + getSmallCase(name) + OPEN_PARENTHESIS
994 + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
995 method = method + TWENTY_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + getSmallCase(name) + PERIOD;
996 }
997 if (!isLeafList) {
998 method = method + FILTER_CONTENT_MATCH;
999 } else {
1000 method = method + EQUALS_STRING;
1001 }
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301002 method = method + OPEN_PARENTHESIS + TMP_VAR + getSmallCase(name) + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
Bharat saraswal8beac342016-08-04 02:00:03 +05301003 + SPACE +
1004 OPEN_CURLY_BRACKET + NEW_LINE + TWENTY_FOUR_SPACE_INDENTATION + FLAG + SPACE + EQUAL + SPACE + TRUE +
1005 SEMI_COLAN
1006 + NEW_LINE + TWENTY_FOUR_SPACE_INDENTATION + BREAK + SEMI_COLAN + NEW_LINE + TWENTY_SPACE_INDENTATION
1007 + CLOSE_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1008
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301009 method = method + SIXTEEN_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + NOT + FLAG
1010 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWENTY_SPACE_INDENTATION
Bharat saraswal8beac342016-08-04 02:00:03 +05301011 + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
1012 NEW_LINE;
1013 return method + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
Bharat saraswale50edca2016-08-05 01:58:25 +05301014 CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal8beac342016-08-04 02:00:03 +05301015
1016 }
1017
1018 //Returns method string for op params augmented syntax
Bharat saraswal039f59c2016-07-14 21:57:13 +05301019 private static String getAugmentableOpParamSyntax() {
Bharat saraswal8beac342016-08-04 02:00:03 +05301020 return EIGHT_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + OBJECT_STRING + SPACE +
Bharat saraswal64e7e232016-07-14 23:33:55 +05301021 getSmallCase(YANG_AUGMENTED_INFO) + SPACE + COLAN + SPACE + THIS +
Bharat saraswal8beac342016-08-04 02:00:03 +05301022 PERIOD + getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD
Bharat saraswal039f59c2016-07-14 21:57:13 +05301023 + VALUE + "s" + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
Bharat saraswal8beac342016-08-04 02:00:03 +05301024 NEW_LINE + TWELVE_SPACE_INDENTATION + OBJECT_STRING + SPACE +
Bharat saraswal039f59c2016-07-14 21:57:13 +05301025 getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO) + SPACE + EQUAL + SPACE + APP_INSTANCE + PERIOD +
Bharat saraswal8beac342016-08-04 02:00:03 +05301026 getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD + GET_CLASS +
1027 CLOSE_PARENTHESIS + SEMI_COLAN +
1028 NEW_LINE + TWELVE_SPACE_INDENTATION
1029 + BOOLEAN_DATA_TYPE + SPACE + FILTER_CONTENT_MATCH + SPACE + EQUAL + SPACE + FALSE + SEMI_COLAN
1030 + NEW_LINE + TWELVE_SPACE_INDENTATION + TRY + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
1031 SIXTEEN_SPACE_INDENTATION +
1032 FILTER_CONTENT_MATCH + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS
1033 + BOOLEAN_DATA_TYPE + CLOSE_PARENTHESIS + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + PERIOD +
1034 GET_CLASS + NEW_LINE + TWENTY_SPACE_INDENTATION + PERIOD + GET_METHOD
1035 + OPEN_PARENTHESIS + QUOTES + FILTER_CONTENT_MATCH + QUOTES + COMMA + SPACE + OBJECT_STRING + PERIOD
1036 + CLASS + CLOSE_PARENTHESIS + PERIOD + INVOKE + OPEN_PARENTHESIS + getSmallCase(YANG_AUGMENTED_INFO) +
1037 NEW_LINE + TWENTY_FOUR_SPACE_INDENTATION + PERIOD + GET_CLASS + COMMA + SPACE +
1038 getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO)
1039 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301040 + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS
Bharat saraswal8beac342016-08-04 02:00:03 +05301041 + NO_SUCH_METHOD_EXCEPTION + " | " + INVOCATION_TARGET_EXCEPTION + " | " + ILLEGAL_ACCESS_EXCEPTION +
1042 SPACE + EXCEPTION_VAR + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1043 + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
1044 + CLOSE_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301045 + IF + SPACE + OPEN_PARENTHESIS + NOT + FILTER_CONTENT_MATCH + CLOSE_PARENTHESIS +
Bharat saraswal039f59c2016-07-14 21:57:13 +05301046 SPACE + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE +
1047 SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
1048 + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1049 }
1050
Bharat saraswal039f59c2016-07-14 21:57:13 +05301051 /*
Bharat saraswal8beac342016-08-04 02:00:03 +05301052 * Returns omit null value string.
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301053 *
1054 * @return omit null value string
1055 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301056 static String getOmitNullValueString() {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301057 return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING + NEW_LINE;
1058 }
1059
1060 /**
1061 * Returns to string method's close string.
Bharat saraswal022dae92016-03-04 20:08:09 +05301062 *
1063 * @return to string method close string
1064 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301065 static String getToStringMethodClose() {
Bharat saraswal84366c52016-03-23 19:40:35 +05301066 return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
1067 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301068 }
1069
1070 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301071 * Returns to string method for class.
Bharat saraswal022dae92016-03-04 20:08:09 +05301072 *
1073 * @param attr attribute info
1074 * @return to string method
1075 */
Vinod Kumar S9f26ae52016-03-23 15:30:27 +05301076 public static String getToStringMethod(JavaAttributeInfo attr) {
1077
janani b703cfe42016-05-17 13:12:22 +05301078 String attributeName = attr.getAttributeName();
Bharat saraswal84366c52016-03-23 19:40:35 +05301079 return TWELVE_SPACE_INDENTATION + PERIOD + ADD_STRING + OPEN_PARENTHESIS + QUOTES + attributeName + QUOTES
1080 + COMMA + SPACE + attributeName + CLOSE_PARENTHESIS;
Bharat saraswal022dae92016-03-04 20:08:09 +05301081 }
1082
1083 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301084 * Returns from string method's open string.
1085 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301086 * @param className name of the class
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301087 * @param pluginConfig plugin configurations
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301088 * @return from string method's open string
1089 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301090 static String getFromStringMethodSignature(String className, YangPluginConfig pluginConfig) {
Vidyashree Ramab3670472016-08-06 15:49:56 +05301091 return getJavaDoc(FROM_METHOD, className, false, pluginConfig, null) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301092 + STATIC + SPACE + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS
1093 + STRING_DATA_TYPE + SPACE + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE
1094 + OPEN_CURLY_BRACKET + NEW_LINE;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301095 }
1096
1097 /**
1098 * Return from string method's close string.
1099 *
1100 * @return from string method's close string
1101 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301102 static String getFromStringMethodClose() {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301103 return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1104 CLOSE_CURLY_BRACKET + NEW_LINE;
1105 }
1106
1107 /**
1108 * Return from string method's body string.
1109 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301110 * @param attr attribute info
Bharat saraswal039f59c2016-07-14 21:57:13 +05301111 * @param fromStringAttributeInfo attribute info for the from string wrapper type
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301112 * @return from string method's body string
1113 */
1114 public static String getFromStringMethod(JavaAttributeInfo attr,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301115 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301116 return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
Mahesh Poojary S6986df32016-07-19 10:58:07 +05301117 + getParsedSubString(attr, fromStringAttributeInfo) + NEW_LINE + TWELVE_SPACE_INDENTATION
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301118 + getReturnOfSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION + getCatchSubString()
1119 + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1120 }
1121
1122 /**
1123 * Returns sub string with try statement for union's from string method.
1124 *
1125 * @return sub string with try statement for union's from string method
1126 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301127 private static String getTrySubString() {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301128 return TRY + SPACE + OPEN_CURLY_BRACKET;
1129 }
1130
1131 /**
1132 * Returns sub string with return statement for union's from string method.
1133 *
1134 * @return sub string with return statement for union's from string method
1135 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301136 private static String getReturnOfSubString() {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301137 return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL + CLOSE_PARENTHESIS + SEMI_COLAN;
1138 }
1139
1140 /**
1141 * Returns sub string with catch statement for union's from string method.
1142 *
1143 * @return sub string with catch statement for union's from string method
1144 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301145 private static String getCatchSubString() {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301146 return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS + EXCEPTION + SPACE + EXCEPTION_VAR
1147 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
1148 }
1149
1150 /**
1151 * Returns sub string with parsed statement for union's from string method.
1152 *
1153 * @param attr attribute info
1154 * @return sub string with parsed statement for union's from string method
1155 */
1156 private static String getParsedSubString(JavaAttributeInfo attr,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301157 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301158 String targetDataType = getReturnType(attr);
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +05301159 if (fromStringAttributeInfo.getAttributeType().getDataType() == BITS) {
1160 String lines = targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + NEW + SPACE + targetDataType
1161 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1162 lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
1163 + PERIOD + REPLACE_STRING + OPEN_PARENTHESIS + SINGLE_QUOTE + OPEN_CURLY_BRACKET + SINGLE_QUOTE
1164 + COMMA + SPACE + SINGLE_QUOTE + SPACE + SINGLE_QUOTE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1165 lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
1166 + PERIOD + REPLACE_STRING + OPEN_PARENTHESIS + SINGLE_QUOTE + CLOSE_CURLY_BRACKET + SINGLE_QUOTE
1167 + COMMA + SPACE + SINGLE_QUOTE + SPACE + SINGLE_QUOTE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1168 lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
1169 + PERIOD + TRIM_STRING + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1170 lines += TWELVE_SPACE_INDENTATION + STRING_DATA_TYPE + SQUARE_BRACKETS + SPACE + BITS_STRING_ARRAY_VAR
1171 + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME + PERIOD + SPLIT_STRING + OPEN_PARENTHESIS
1172 + QUOTES + COMMA + QUOTES + COMMA + SPACE + ZERO + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1173 lines += TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + STRING_DATA_TYPE + SPACE
1174 + BIT_TEMP_VAR + SPACE + COLON + SPACE + BITS_STRING_ARRAY_VAR + CLOSE_PARENTHESIS + SPACE
1175 + OPEN_CURLY_BRACKET + NEW_LINE;
1176 lines += SIXTEEN_SPACE_INDENTATION + BIT_TEMP_VAR + SPACE + EQUAL + SPACE + BIT_TEMP_VAR + PERIOD
1177 + TRIM_STRING + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1178 lines += SIXTEEN_SPACE_INDENTATION + TMP_VAL + PERIOD + SET_METHOD_PREFIX + OPEN_PARENTHESIS
1179 + INTEGER_WRAPPER + PERIOD + PARSE_INT + OPEN_PARENTHESIS + BIT_TEMP_VAR + CLOSE_PARENTHESIS
1180 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1181 lines += TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1182 return lines;
1183 } else if (attr.getAttributeType().getDataType() == BINARY) {
1184 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + BASE64 + PERIOD
1185 + GET_DECODER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + DECODE + OPEN_PARENTHESIS
1186 + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +05301187 } else {
1188 String parseFromStringMethod = getParseFromStringMethod(targetDataType,
Bharat saraswal039f59c2016-07-14 21:57:13 +05301189 fromStringAttributeInfo.getAttributeType());
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +05301190 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + parseFromStringMethod
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +05301191 + OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +05301192 }
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301193 }
1194
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301195 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301196 * Returns hash code method open strings.
Bharat saraswal022dae92016-03-04 20:08:09 +05301197 *
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301198 * @return hash code method open string
Bharat saraswal022dae92016-03-04 20:08:09 +05301199 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301200 static String getHashCodeMethodOpen() {
Bharat saraswal84366c52016-03-23 19:40:35 +05301201 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + INT + SPACE + HASH_CODE_STRING
Bharat saraswal8beac342016-08-04 02:00:03 +05301202 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
1203 EIGHT_SPACE_INDENTATION
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301204 + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS;
Bharat saraswal022dae92016-03-04 20:08:09 +05301205 }
1206
1207 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301208 * Returns hash code methods close string.
Bharat saraswal022dae92016-03-04 20:08:09 +05301209 *
1210 * @param hashcodeString hash code string
1211 * @return to hash code method close string
1212 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301213 static String getHashCodeMethodClose(String hashcodeString) {
Bharat saraswal84366c52016-03-23 19:40:35 +05301214 hashcodeString = trimAtLast(hashcodeString, COMMA);
1215 hashcodeString = trimAtLast(hashcodeString, SPACE);
Bharat saraswal8beac342016-08-04 02:00:03 +05301216 return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1217 CLOSE_CURLY_BRACKET
Bharat saraswal84366c52016-03-23 19:40:35 +05301218 + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301219 }
1220
1221 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301222 * Returns hash code method for class.
Bharat saraswal022dae92016-03-04 20:08:09 +05301223 *
1224 * @param attr attribute info
1225 * @return hash code method
1226 */
Vinod Kumar S9f26ae52016-03-23 15:30:27 +05301227 public static String getHashCodeMethod(JavaAttributeInfo attr) {
janani b703cfe42016-05-17 13:12:22 +05301228 return attr.getAttributeName() + COMMA + SPACE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301229 }
1230
1231 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301232 * Returns equals method open strings.
Bharat saraswal022dae92016-03-04 20:08:09 +05301233 *
1234 * @param className class name
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301235 * @return equals method open string
Bharat saraswal022dae92016-03-04 20:08:09 +05301236 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301237 static String getEqualsMethodOpen(String className) {
1238 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE +
1239 EQUALS_STRING
Bharat saraswal84366c52016-03-23 19:40:35 +05301240 + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + OBJ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
1241 + NEW_LINE + getEqualsMethodsCommonIfCondition() + getEqualsMethodsSpecificIfCondition(className);
Bharat saraswal022dae92016-03-04 20:08:09 +05301242 }
1243
1244 /**
1245 * Returns equal methods if condition string.
1246 *
1247 * @return if condition string
1248 */
1249 private static String getEqualsMethodsCommonIfCondition() {
Bharat saraswal84366c52016-03-23 19:40:35 +05301250 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + THIS + SPACE + EQUAL + EQUAL + SPACE + OBJ
1251 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + SPACE
1252 + TRUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301253 }
1254
1255 /**
1256 * Returns if condition for specific class object in equals method.
1257 *
1258 * @param className class name
1259 * @return if condition string
1260 */
1261 private static String getEqualsMethodsSpecificIfCondition(String className) {
Bharat saraswal84366c52016-03-23 19:40:35 +05301262 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + OBJ + INSTANCE_OF + className
1263 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + className
1264 + SPACE + OTHER + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS + className + CLOSE_PARENTHESIS + SPACE
1265 + OBJ + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301266 }
1267
1268 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301269 * Returns equals methods close string.
Bharat saraswal022dae92016-03-04 20:08:09 +05301270 *
1271 * @param equalMethodString equal method string
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301272 * @return equals method close string
Bharat saraswal022dae92016-03-04 20:08:09 +05301273 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301274 static String getEqualsMethodClose(String equalMethodString) {
Bharat saraswal84366c52016-03-23 19:40:35 +05301275 equalMethodString = trimAtLast(equalMethodString, AND);
1276 equalMethodString = trimAtLast(equalMethodString, AND);
1277 equalMethodString = trimAtLast(equalMethodString, SPACE);
1278 equalMethodString = trimAtLast(equalMethodString, NEW_LINE) + SEMI_COLAN + NEW_LINE;
1279 return equalMethodString + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
1280 + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1281 + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301282 }
1283
1284 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301285 * Returns equals method for class.
Bharat saraswal022dae92016-03-04 20:08:09 +05301286 *
1287 * @param attr attribute info
1288 * @return equals method
1289 */
Vinod Kumar S9f26ae52016-03-23 15:30:27 +05301290 public static String getEqualsMethod(JavaAttributeInfo attr) {
janani b703cfe42016-05-17 13:12:22 +05301291 String attributeName = attr.getAttributeName();
Bharat saraswal84366c52016-03-23 19:40:35 +05301292 return SIXTEEN_SPACE_INDENTATION + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS
1293 + attributeName + COMMA + SPACE + OTHER + PERIOD + attributeName + CLOSE_PARENTHESIS + SPACE + AND
1294 + AND;
Bharat saraswal022dae92016-03-04 20:08:09 +05301295 }
1296
1297 /**
1298 * Returns of method string for class.
1299 *
1300 * @param name class name
1301 * @param attr attribute info
1302 * @return of method string
1303 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301304 static String getOfMethod(String name, JavaAttributeInfo attr) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301305 String attrQualifiedType = getReturnType(attr);
Bharat saraswal84366c52016-03-23 19:40:35 +05301306 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name + SPACE + OF + OPEN_PARENTHESIS
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301307 + attrQualifiedType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Bharat saraswal84366c52016-03-23 19:40:35 +05301308 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name + OPEN_PARENTHESIS + VALUE
1309 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301310 }
1311
Bharat saraswale2bc60d2016-04-16 02:28:25 +05301312 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301313 * Returns of method's string and java doc for special type.
1314 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301315 * @param attr attribute info
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301316 * @param generatedJavaClassName class name
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301317 * @param pluginConfig plugin configurations
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301318 * @return of method's string and java doc for special type
1319 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301320 public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301321 YangPluginConfig pluginConfig) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301322 String attrType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +05301323 String attrName = attr.getAttributeName();
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301324
Vidyashree Ramab3670472016-08-06 15:49:56 +05301325 return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " + attrName, false, pluginConfig, null)
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301326 + getOfMethodString(attrType, generatedJavaClassName);
1327 }
1328
1329 /**
1330 * Returns of method's string.
1331 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301332 * @param type data type
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301333 * @param className class name
1334 * @return of method's string
1335 */
1336 private static String getOfMethodString(String type, String className) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301337 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + className + SPACE + OF + OPEN_PARENTHESIS
1338 + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1339 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + className + OPEN_PARENTHESIS + VALUE
1340 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1341 }
1342
1343 /**
1344 * Returns string and java doc for constructor of type class.
1345 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301346 * @param attr attribute info
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301347 * @param generatedJavaClassName class name
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301348 * @param pluginConfig plugin configurations
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301349 * @return string and java doc for constructor of type class
1350 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301351 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301352 String generatedJavaClassName,
1353 YangPluginConfig pluginConfig) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301354 String attrType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +05301355 String attrName = attr.getAttributeName();
Vidyashree Ramab3670472016-08-06 15:49:56 +05301356 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName, false, pluginConfig, null)
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301357 + getTypeConstructorString(attrType, attrName, generatedJavaClassName);
1358 }
1359
1360 /**
Bharat saraswal64e7e232016-07-14 23:33:55 +05301361 * Returns string and java doc for constructor of type class.
1362 *
1363 * @param attr1 first attribute info
1364 * @param attr2 second attribute info
1365 * @param generatedJavaClassName class name
1366 * @param pluginConfig plugin config
1367 * @param type conflict validate type
Bharat saraswal8beac342016-08-04 02:00:03 +05301368 * @param addFirst whether int came first or uInt came first
Bharat saraswal64e7e232016-07-14 23:33:55 +05301369 * @return string and java doc for constructor of type class
1370 */
1371 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr1, JavaAttributeInfo
1372 attr2, String generatedJavaClassName, YangPluginConfig pluginConfig, ValidatorTypeForUnionTypes type,
1373 boolean addFirst) {
Bharat saraswal64e7e232016-07-14 23:33:55 +05301374 String attrType = getReturnType(attr1);
1375 String attrName1 = "";
1376 String attrName2 = "";
1377 if (attr1 != null) {
1378 attrName1 = attr1.getAttributeName();
1379 }
1380 if (attr2 != null) {
1381 attrName2 = attr2.getAttributeName();
1382 }
1383
Vidyashree Ramab3670472016-08-06 15:49:56 +05301384 String appDataStructure = null;
1385 if (attr1.getCompilerAnnotation() != null) {
1386 appDataStructure = attr1.getCompilerAnnotation().getYangAppDataStructure().getDataStructure().name();
1387 }
1388 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName1, false, pluginConfig,
1389 appDataStructure) + getTypeConstructorString(attrType, attrName1,
1390 attrName2, generatedJavaClassName, type, addFirst);
Bharat saraswal64e7e232016-07-14 23:33:55 +05301391 }
1392
1393 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301394 * Returns type constructor string.
1395 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301396 * @param type data type
1397 * @param name attribute name
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301398 * @param className class name
1399 * @return type constructor string
1400 */
1401 private static String getTypeConstructorString(String type, String name, String className) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301402 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
1403 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
1404 + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
1405 + CLOSE_CURLY_BRACKET;
1406 }
1407
1408 /**
Bharat saraswal64e7e232016-07-14 23:33:55 +05301409 * Returns type constructor string.
1410 *
1411 * @param type data type
1412 * @param attr1 attribute attr1
1413 * @param className class attr1
1414 * @return type constructor string
1415 */
1416 private static String getTypeConstructorString(String type, String attr1, String attr2, String className,
1417 ValidatorTypeForUnionTypes validatorType, boolean addInt) {
Bharat saraswal64e7e232016-07-14 23:33:55 +05301418 String constructor;
1419 constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
1420 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1421
1422 String name1;
1423 String name2;
1424 if (addInt) {
1425 name1 = attr1;
1426 name2 = attr2;
1427 } else {
1428 name1 = attr2;
1429 name2 = attr1;
1430 }
Bharat saraswal8beac342016-08-04 02:00:03 +05301431 constructor = constructor + ifConditionForIntInTypeDefConstructor(validatorType, addInt) +
Bharat saraswal64e7e232016-07-14 23:33:55 +05301432 TWELVE_SPACE_INDENTATION + THIS + PERIOD
1433 + name1 + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
1434 + CLOSE_CURLY_BRACKET + SPACE + ELSE + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION
1435 + THIS + PERIOD
1436 + name2 + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
1437 + CLOSE_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION
1438 + CLOSE_CURLY_BRACKET;
1439
1440 return constructor;
1441 }
1442
1443 /**
Bharat saraswal8beac342016-08-04 02:00:03 +05301444 * Returns interface of add augmentation.
1445 *
1446 * @return interface of add augmentation
1447 */
1448 static String getAddAugmentInfoMethodInterface() {
1449 return generateForAddAugmentation() + FOUR_SPACE_INDENTATION + VOID + SPACE +
1450 ADD_STRING + YANG_AUGMENTED_INFO + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + VALUE + COMMA +
1451 SPACE + CLASS_STRING + SPACE + CLASS + OBJECT_STRING + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1452 }
1453
1454 /**
Bharat saraswalaf413b82016-07-14 15:18:20 +05301455 * Returns implementation of add augmentation.
1456 *
1457 * @return implementation of add augmentation
1458 */
Bharat saraswal039f59c2016-07-14 21:57:13 +05301459 static String getAddAugmentInfoMethodImpl() {
Bharat saraswal8beac342016-08-04 02:00:03 +05301460 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE +
1461 ADD_STRING + YANG_AUGMENTED_INFO + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + VALUE + COMMA +
Bharat saraswal039f59c2016-07-14 21:57:13 +05301462 SPACE + CLASS_STRING + SPACE + CLASS + OBJECT_STRING + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
1463 NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + PUT +
1464 OPEN_PARENTHESIS + CLASS + OBJECT_STRING + COMMA + SPACE + VALUE +
Bharat saraswalaf413b82016-07-14 15:18:20 +05301465 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1466 CLOSE_CURLY_BRACKET + NEW_LINE;
1467 }
1468
1469 /**
Bharat saraswal8beac342016-08-04 02:00:03 +05301470 * Returns interface of get YANG augment info.
Bharat saraswalaf413b82016-07-14 15:18:20 +05301471 *
Bharat saraswal8beac342016-08-04 02:00:03 +05301472 * @return interface of get YANG augment info
Bharat saraswalaf413b82016-07-14 15:18:20 +05301473 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301474 static String getYangAugmentInfoInterface() {
1475 return generateForGetAugmentation() + FOUR_SPACE_INDENTATION + OBJECT_STRING + SPACE +
1476 getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
1477 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1478 }
Bharat saraswalaf413b82016-07-14 15:18:20 +05301479
Bharat saraswal8beac342016-08-04 02:00:03 +05301480 /**
1481 * Returns implementation of get YANG augment info.
1482 *
1483 * @return implementation of get YANG augment info
1484 */
1485 static String getYangAugmentInfoImpl() {
1486 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
1487 OBJECT_STRING + SPACE +
1488 getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
Bharat saraswalaf413b82016-07-14 15:18:20 +05301489 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
1490 RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + GET + OPEN_PARENTHESIS + CLASS +
1491 OBJECT_STRING + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1492 CLOSE_CURLY_BRACKET + NEW_LINE;
1493 }
1494
1495 /**
Bharat saraswal8beac342016-08-04 02:00:03 +05301496 * Returns implementation of get YANG augment info.
Bharat saraswal039f59c2016-07-14 21:57:13 +05301497 *
Bharat saraswal8beac342016-08-04 02:00:03 +05301498 * @return implementation of get YANG augment info
Bharat saraswal039f59c2016-07-14 21:57:13 +05301499 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301500 static String getYangAugmentInfoMapInterface(YangPluginConfig pluginConfig) {
Vidyashree Ramab3670472016-08-06 15:49:56 +05301501 return getJavaDoc(GETTER_METHOD, getSmallCase(YANG_AUGMENTED_INFO) + MAP, false, pluginConfig, null)
Bharat saraswal8beac342016-08-04 02:00:03 +05301502 + FOUR_SPACE_INDENTATION + MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING + DIAMOND_OPEN_BRACKET +
1503 QUESTION_MARK + DIAMOND_CLOSE_BRACKET + COMMA + SPACE + OBJECT_STRING + DIAMOND_CLOSE_BRACKET +
1504 SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS +
1505 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1506 }
1507
1508 /**
1509 * Returns implementation of get YANG augment info.
1510 *
1511 * @return implementation of get YANG augment info
1512 */
1513 static String getYangAugmentInfoMapImpl() {
1514 return getOverRideString()
Bharat saraswal039f59c2016-07-14 21:57:13 +05301515 + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
1516 MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING + DIAMOND_OPEN_BRACKET + QUESTION_MARK +
Bharat saraswal8beac342016-08-04 02:00:03 +05301517 DIAMOND_CLOSE_BRACKET + COMMA + SPACE + OBJECT_STRING + DIAMOND_CLOSE_BRACKET + SPACE +
1518 getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS +
Bharat saraswal039f59c2016-07-14 21:57:13 +05301519 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
1520 RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + SEMI_COLAN + NEW_LINE
1521 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1522 }
1523
1524 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +05301525 * Returns enum's constructor.
1526 *
1527 * @param className enum's class name
1528 * @return enum's constructor
1529 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301530 static String getEnumsConstructor(String className) {
Bharat saraswal68fa0d12016-04-19 01:00:16 +05301531 return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
1532 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
1533 + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1534 }
Bharat saraswal250a7472016-05-12 13:16:57 +05301535
1536 /**
1537 * Returns of method for enum class.
1538 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301539 * @param className class name
1540 * @param attr java attribute
1541 * @param enumMap enum's sets map
1542 * @param enumList enum's sets list
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301543 * @param pluginConfig plugin configurations
Bharat saraswal250a7472016-05-12 13:16:57 +05301544 * @return of method
1545 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301546 static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
1547 Map<String, Integer> enumMap, List<String> enumList,
1548 YangPluginConfig pluginConfig) {
Bharat saraswal250a7472016-05-12 13:16:57 +05301549 String attrType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +05301550 String attrName = attr.getAttributeName();
Bharat saraswal250a7472016-05-12 13:16:57 +05301551
janani b703cfe42016-05-17 13:12:22 +05301552 String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + getCapitalCase(className) + SPACE
1553 + OF + OPEN_PARENTHESIS
Bharat saraswal250a7472016-05-12 13:16:57 +05301554 + attrType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1555 + EIGHT_SPACE_INDENTATION + SWITCH + SPACE + OPEN_PARENTHESIS + VALUE
1556 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
Bharat saraswal8beac342016-08-04 02:00:03 +05301557 int value;
Bharat saraswal250a7472016-05-12 13:16:57 +05301558 for (String str : enumList) {
Bharat saraswal250a7472016-05-12 13:16:57 +05301559 value = enumMap.get(str);
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +05301560 method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value + COLON + NEW_LINE
janani b703cfe42016-05-17 13:12:22 +05301561 + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + getCapitalCase(className) + PERIOD
Bharat saraswal250a7472016-05-12 13:16:57 +05301562 + str + SEMI_COLAN + NEW_LINE;
1563 }
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +05301564 method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLON + NEW_LINE + SIXTEEN_SPACE_INDENTATION
Bharat saraswal250a7472016-05-12 13:16:57 +05301565 + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1566 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1567
Vidyashree Ramab3670472016-08-06 15:49:56 +05301568 return getJavaDoc(OF_METHOD, getCapitalCase(className) + " for type " + attrName, false, pluginConfig, null)
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301569 + method;
Bharat saraswal250a7472016-05-12 13:16:57 +05301570 }
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301571
1572 /**
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301573 * Returns from string method parsed string.
1574 *
1575 * @param targetDataType target data type
1576 * @param yangType YANG type
1577 * @return parsed string
1578 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301579 private static String getParseFromStringMethod(String targetDataType, YangType<?> yangType) {
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301580 YangDataTypes type = yangType.getDataType();
1581
1582 switch (type) {
1583 case INT8:
1584 return BYTE_WRAPPER + PERIOD + PARSE_BYTE;
1585 case INT16:
1586 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1587 case INT32:
1588 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1589 case INT64:
1590 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1591 case UINT8:
1592 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1593 case UINT16:
1594 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1595 case UINT32:
1596 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1597 case UINT64:
1598 return NEW + SPACE + BIG_INTEGER;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +05301599 case DECIMAL64:
1600 return NEW + SPACE + BIG_DECIMAL;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301601 case STRING:
Shankara-Huaweib7564772016-08-02 18:13:13 +05301602 case IDENTITYREF:
1603 return EMPTY_STRING;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301604 case EMPTY:
1605 case BOOLEAN:
1606 return BOOLEAN_WRAPPER + PERIOD + PARSE_BOOLEAN;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301607 case BITS:
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301608 case UNION:
1609 case ENUMERATION:
1610 case DERIVED:
1611 return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
1612 default:
1613 throw new TranslatorException("given data type is not supported.");
1614 }
1615 }
Bharat saraswald14cbe82016-07-14 13:26:18 +05301616
1617 /**
Bharat saraswalaf413b82016-07-14 15:18:20 +05301618 * Returns augmented data getter and setter methods for service class.
1619 *
1620 * @param parent parent node
1621 * @return augmented data getter and setter methods for service class
1622 */
Bharat saraswal039f59c2016-07-14 21:57:13 +05301623 static String getAugmentsDataMethodForService(YangNode parent) {
Bharat saraswalaf413b82016-07-14 15:18:20 +05301624 List<YangAtomicPath> targets = getSetOfNodeIdentifiers(parent);
1625 YangNode augmentedNode;
1626 String curNodeName;
1627 String method;
1628 StringBuilder methods = new StringBuilder();
1629 String parentName;
1630 String returnType;
Bharat saraswal64e7e232016-07-14 23:33:55 +05301631 YangNode methodNode;
Bharat saraswalaf413b82016-07-14 15:18:20 +05301632 YangPluginConfig pluginConfig = ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig();
1633 for (YangAtomicPath nodeId : targets) {
Bharat saraswal039f59c2016-07-14 21:57:13 +05301634 augmentedNode = nodeId.getResolvedNode().getParent();
Bharat saraswal64e7e232016-07-14 23:33:55 +05301635 methodNode = nodeId.getResolvedNode();
1636 if (((JavaFileInfoContainer) methodNode).getJavaFileInfo().getJavaName() != null) {
1637 curNodeName = ((JavaFileInfoContainer) methodNode).getJavaFileInfo().getJavaName();
Bharat saraswalaf413b82016-07-14 15:18:20 +05301638 } else {
Bharat saraswal64e7e232016-07-14 23:33:55 +05301639 curNodeName = getCapitalCase(getCamelCase(methodNode.getName(), pluginConfig
Bharat saraswalaf413b82016-07-14 15:18:20 +05301640 .getConflictResolver()));
1641 }
1642 returnType = getAugmentedClassNameForDataMethods(augmentedNode, parent);
Bharat saraswal039f59c2016-07-14 21:57:13 +05301643 parentName = getParentNodeNameForDataMethods(augmentedNode, pluginConfig);
Bharat saraswal8beac342016-08-04 02:00:03 +05301644 method = generateForGetMethodWithAttribute(returnType)
1645 + getGetMethodWithArgument(returnType, AUGMENTED + parentName
1646 + getCapitalCase(curNodeName)) + NEW_LINE;
Bharat saraswalaf413b82016-07-14 15:18:20 +05301647 methods.append(method);
1648
1649 method = getJavaDoc(MANAGER_SETTER_METHOD, AUGMENTED +
Vidyashree Ramab3670472016-08-06 15:49:56 +05301650 getCapitalCase(parentName) + getCapitalCase(curNodeName), false, pluginConfig, null) +
Bharat saraswalaf413b82016-07-14 15:18:20 +05301651 getSetterForInterface(getSmallCase(AUGMENTED) + parentName +
Vidyashree Ramab3670472016-08-06 15:49:56 +05301652 getCapitalCase(curNodeName), returnType, parentName, false,
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301653 GENERATE_SERVICE_AND_MANAGER, null) + NEW_LINE;
Bharat saraswalaf413b82016-07-14 15:18:20 +05301654 methods.append(method);
1655 }
1656 return methods.toString();
1657 }
1658
1659 /**
Bharat saraswal64e7e232016-07-14 23:33:55 +05301660 * Returns validator method for range in union class.
1661 *
1662 * @param type type
1663 * @return validator method for range in union class
1664 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301665 static String getRangeValidatorMethodForUnion(String type) {
Bharat saraswal64e7e232016-07-14 23:33:55 +05301666 String newType;
1667 if (type.contentEquals(BIG_INTEGER)) {
1668 newType = LONG;
1669 } else {
1670 newType = INT;
1671 }
1672 String method = generateForValidatorMethod() + FOUR_SPACE_INDENTATION + PRIVATE + SPACE + BOOLEAN_DATA_TYPE +
1673 SPACE +
1674 VALIDATE_RANGE +
1675 OPEN_PARENTHESIS
1676 + type + SPACE + MIN_RANGE + COMMA + SPACE + type + SPACE + MAX_RANGE + COMMA + SPACE +
1677 newType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1678 if (type.contentEquals(BIG_INTEGER)) {
1679 method = method + EIGHT_SPACE_INDENTATION + BIG_INTEGER + SPACE + getSmallCase(BIG_INTEGER)
1680 + SPACE + EQUAL + SPACE + NEW + SPACE + BIG_INTEGER + OPEN_PARENTHESIS + QUOTES + SPACE +
1681 QUOTES + SPACE + ADD + SPACE + VALUE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE +
1682 EIGHT_SPACE_INDENTATION + RETURN + SPACE + getSmallCase(BIG_INTEGER) + PERIOD + "compareTo"
1683 + OPEN_PARENTHESIS + MIN_RANGE + CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + " 1" + SPACE + AND +
1684 AND + SPACE + getSmallCase(BIG_INTEGER) + PERIOD + "compareTo" + OPEN_PARENTHESIS + MAX_RANGE +
1685 CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + " 1" + SEMI_COLAN + NEW_LINE;
1686 } else {
1687 method = method + EIGHT_SPACE_INDENTATION
1688 + RETURN + SPACE + VALUE + SPACE + DIAMOND_CLOSE_BRACKET + EQUAL + SPACE + MIN_RANGE + SPACE + AND +
1689 AND + SPACE + VALUE + DIAMOND_OPEN_BRACKET + EQUAL + SPACE + MAX_RANGE + SEMI_COLAN + NEW_LINE;
1690 }
1691 return method + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1692 }
1693
1694 /**
1695 * Returns if condition string for typedef constructor.
1696 *
1697 * @param type type of conflict
1698 * @param addFirst true int/long need to be added first
1699 * @return if condition string for typedef constructor
1700 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301701 private static String ifConditionForIntInTypeDefConstructor(ValidatorTypeForUnionTypes type, boolean addFirst) {
Bharat saraswal64e7e232016-07-14 23:33:55 +05301702 String condition = EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + VALIDATE_RANGE + OPEN_PARENTHESIS;
1703
1704 if (type == INT_TYPE_CONFLICT) {
1705 if (addFirst) {
1706 condition = condition + INT_MIN_RANGE + COMMA + SPACE + INT_MAX_RANGE + COMMA + SPACE + VALUE;
1707 } else {
1708 condition = condition + UINT_MIN_RANGE + COMMA + SPACE + UINT_MAX_RANGE + COMMA + SPACE + VALUE;
1709 }
1710 } else {
1711 if (addFirst) {
1712 condition = condition + LONG_MIN_RANGE + COMMA + SPACE + LONG_MAX_RANGE + COMMA + SPACE + VALUE;
1713 } else {
1714 condition = condition + ULONG_MIN_RANGE + COMMA + SPACE + ULONG_MAX_RANGE + COMMA + SPACE + VALUE;
1715 }
1716 }
1717 return condition + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1718 }
1719
Bharat saraswal8beac342016-08-04 02:00:03 +05301720 //Get method with arguments.
1721 private static String getGetMethodWithArgument(String returnType, String yangName) {
1722 return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCapitalCase(yangName)
1723 + OPEN_PARENTHESIS + returnType + OP_PARAM + SPACE + getSmallCase(returnType) + CLOSE_PARENTHESIS +
1724 SEMI_COLAN;
1725 }
Bharat saraswal64e7e232016-07-14 23:33:55 +05301726
Bharat saraswal8beac342016-08-04 02:00:03 +05301727 /**
1728 * Returns add to list method interface.
1729 *
1730 * @param attr java attribute
1731 * @return add to list method interface
1732 */
1733 public static String getAddToListMethodInterface(JavaAttributeInfo attr) {
1734 return FOUR_SPACE_INDENTATION + VOID + SPACE + ADD_STRING + getCapitalCase(TO) +
1735 getCapitalCase(attr.getAttributeName()) + OPEN_PARENTHESIS + getReturnType(attr) + SPACE +
1736 VALUE + CLOSE_PARENTHESIS + SEMI_COLAN;
1737 }
1738
1739 /**
1740 * Returns add to list method impl.
1741 *
1742 * @param attr java attribute
1743 * @return add to list method impl
1744 */
1745 public static String getAddToListMethodImpl(JavaAttributeInfo attr) {
1746 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + ADD_STRING +
1747 getCapitalCase(TO) + getCapitalCase(attr.getAttributeName()) + OPEN_PARENTHESIS +
1748 getReturnType(attr) + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
1749 + NEW_LINE + EIGHT_SPACE_INDENTATION + attr.getAttributeName() + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
1750 + PERIOD + ADD_STRING + OPEN_PARENTHESIS + VALUE + CLOSE_PARENTHESIS + SEMI_COLAN +
1751 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1752 }
1753
1754 /**
1755 * Returns builder method for class.
1756 *
1757 * @param name name of class
1758 * @return builder method for class
1759 */
1760 static String builderMethod(String name) {
1761 return NEW_LINE + generateForBuilderMethod(name) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE
1762 + name + BUILDER + SPACE + getSmallCase(BUILDER) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
1763 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name +
1764 BUILDER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1765 CLOSE_CURLY_BRACKET;
1766 }
1767
1768 /**
1769 * Returns is filter content match interface.
1770 *
1771 * @param name name of node
1772 * @return is filter content match interface
1773 */
1774 static String isFilterContentMatchInterface(String name) {
1775 String method = " /**\n" +
1776 " * Checks if the passed " + name + " maps the content match query condition.\n" +
1777 " *\n" +
1778 " * @param " + getSmallCase(name) + SPACE + getSmallCase(name) + SPACE + "being passed to check" +
1779 " for" +
1780 " content match\n" +
1781 " * @return match result\n" +
1782 " */\n";
1783 return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE + FILTER_CONTENT_MATCH + OPEN_PARENTHESIS
1784 + name + SPACE + getSmallCase(name) + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1785 }
1786
1787 /**
1788 * Returns is value set interface.
1789 *
1790 * @return is value set interface
1791 */
1792 static String isLeafValueSetInterface() {
1793 String method = " /**\n" +
1794 " * Checks if the leaf value is set.\n" +
1795 " *\n" +
1796 " * @param leaf leaf whose value status needs to checked\n" +
1797 " * @return result of leaf value set in object\n" +
1798 " */\n";
1799 return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE + VALUE_LEAF_SET + OPEN_PARENTHESIS
1800 + LEAF_IDENTIFIER + SPACE + "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1801 }
1802
1803 /**
1804 * Returns is select leaf set interface.
1805 *
1806 * @return is select leaf set interface
1807 */
1808 static String isSelectLeafSetInterface() {
1809 String method = " /**\n" +
1810 " * Checks if the leaf is set to be a selected leaf.\n" +
1811 " *\n" +
1812 " * @param leaf if leaf needs to be selected\n" +
1813 " * @return result of leaf value set in object\n" +
1814 " */\n";
1815 return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE + IS_SELECT_LEAF + OPEN_PARENTHESIS
1816 + LEAF_IDENTIFIER + SPACE + "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1817 }
1818
1819 /**
1820 * Returns set select leaf set interface.
1821 *
1822 * @param name node name
1823 * @return set select leaf set interface
1824 */
1825 static String setSelectLeafSetInterface(String name) {
1826 String method = " /**\n" +
1827 " * Set a leaf to be selected.\n" +
1828 " *\n" +
1829 " * @param leaf leaf needs to be selected\n" +
1830 " */\n";
1831 return method + FOUR_SPACE_INDENTATION + name + BUILDER + SPACE + SET_SELECT_LEAF + OPEN_PARENTHESIS
1832 + LEAF_IDENTIFIER + SPACE + "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1833 }
1834
1835 /**
1836 * Returns leaf identifier interface enum signature.
1837 *
1838 * @param name name of node
1839 * @return leaf identifier interface enum signature
1840 */
1841 static String getInterfaceLeafIdEnumSignature(String name) {
1842 String start = " /**\n" +
1843 " * Identify the leaf of " + name + PERIOD + NEW_LINE +
1844 " */\n";
1845 return start + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + ENUM + SPACE + LEAF_IDENTIFIER + SPACE +
1846 OPEN_CURLY_BRACKET + NEW_LINE;
1847 }
1848
1849 /**
1850 * Returns interface leaf identifier enum method.
1851 *
1852 * @return interface leaf identifier enum method
1853 */
1854 static String getInterfaceLeafIdEnumMethods() {
1855 return " private int leafIndex;\n" +
1856 "\n" +
1857 " public int getLeafIndex() {\n" +
1858 " return leafIndex;\n" +
1859 " }\n" +
1860 "\n" +
1861 " LeafIdentifier(int value) {\n" +
1862 " this.leafIndex = value;\n" +
1863 " }\n" +
1864 " }\n";
1865 }
1866
1867 /**
1868 * Returns getter methods for operation attributes.
1869 *
1870 * @return getter methods for operation attributes
1871 */
1872 static String getOperationAttributesGetters() {
1873 return "\n" +
1874 " /**\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301875 " * Returns the valueLeafFlags.\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301876 " *\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301877 " * @return value of valueLeafFlags\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301878 " */\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301879 " public BitSet getValueLeafFlags() {\n" +
1880 " return valueLeafFlags;\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301881 " }\n" +
1882 "\n" +
1883 " /**\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301884 " * Returns the selectLeafFlags.\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301885 " *\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301886 " * @return value of selectLeafFlags\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301887 " */\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301888 " public BitSet getSelectLeafFlags() {\n" +
1889 " return selectLeafFlags;\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301890 " }\n" +
1891 "\n";
1892 }
1893
1894 /**
1895 * Returns getter for operation type.
1896 *
1897 * @return getter for operation type
1898 */
1899 static String getGetterForOperationType() {
1900 return " /**\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301901 " * Returns the operationType.\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301902 " *\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301903 " * @return value of operationType\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301904 " */\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301905 " public OperationType getOperationType() {\n" +
1906 " return operationType;\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301907 " }\n";
1908 }
1909
1910 /**
1911 * Returns getters for value and select leaf.
1912 *
1913 * @return getters for value and select leaf
1914 */
1915 static String getGettersForValueAndSelectLeaf() {
1916 return "\n" +
1917 " @Override\n" +
1918 " public boolean isLeafValueSet(LeafIdentifier leaf) {\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301919 " return getValueLeafFlags().get(leaf.getLeafIndex());\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301920 " }\n" +
1921 "\n" +
1922 " @Override\n" +
1923 " public boolean isSelectLeaf(LeafIdentifier leaf) {\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301924 " return getSelectLeafFlags().get(leaf.getLeafIndex());\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301925 " }\n";
1926 }
1927
1928 /**
1929 * Returns setter for operation type.
1930 *
1931 * @param name name of node
1932 * @return setter for operation type
1933 */
1934 static String getSetterForOperationType(String name) {
1935 return " /**\n" +
1936 " * Set operation type.\n" +
1937 " *\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301938 " * @param operationType operation type\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301939 " */\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301940 " public " + name + BUILDER + " setOperationType(OperationType operationType) {\n" +
1941 " this.operationType = operationType;\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301942 " return this;\n" +
1943 " }\n";
1944 }
1945
1946 /**
1947 * Returns setter for select leaf.
1948 *
1949 * @param name name of node
1950 * @param isRootNode if root node
1951 * @return setter for select leaf
1952 */
1953 static String getSetterForSelectLeaf(String name, boolean isRootNode) {
1954 String append = OVERRIDE;
1955 if (isRootNode) {
1956 append = EMPTY_STRING;
1957 }
1958 return "\n" +
1959 " " + append + "\n" +
1960 " public " + name + BUILDER + " selectLeaf(LeafIdentifier leaf) {\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301961 " getSelectLeafFlags().set(leaf.getLeafIndex());\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301962 " return this;\n" +
1963 " }\n";
1964 }
Vidyashree Ramab3670472016-08-06 15:49:56 +05301965
1966 private static String getListAttribute(String attrType, YangCompilerAnnotation compilerAnnotation) {
1967 String listAttr;
1968 if (compilerAnnotation != null && compilerAnnotation.getYangAppDataStructure() != null) {
1969 switch (compilerAnnotation.getYangAppDataStructure().getDataStructure()) {
1970 case QUEUE: {
1971 listAttr = QUEUE + DIAMOND_OPEN_BRACKET + attrType + DIAMOND_CLOSE_BRACKET;
1972 break;
1973 }
1974 case SET: {
1975 listAttr = SET + DIAMOND_OPEN_BRACKET + attrType + DIAMOND_CLOSE_BRACKET;
1976 break;
1977 }
1978 case LIST: {
1979 listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
1980 break;
1981 }
1982 default: {
1983 listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
1984 }
1985 }
1986 } else {
1987 listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
1988 }
1989 return listAttr;
1990 }
Bharat saraswal97459962016-02-20 21:57:16 +05301991}