blob: 5f00ecc0a8abdaa1d38961e39856a4775c379ee0 [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;
Vidyashree Ramab3670472016-08-06 15:49:56 +053024import org.onosproject.yangutils.datamodel.YangCompilerAnnotation;
Bharat saraswale50edca2016-08-05 01:58:25 +053025import org.onosproject.yangutils.datamodel.YangCase;
26import org.onosproject.yangutils.datamodel.YangChoice;
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;
Bharat saraswale50edca2016-08-05 01:58:25 +053030import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
31import org.onosproject.yangutils.utils.io.YangPluginConfig;
janani b0e4e8ae2016-07-13 21:06:41 +053032import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +053033import org.onosproject.yangutils.translator.exception.TranslatorException;
Vinod Kumar S9f26ae52016-03-23 15:30:27 +053034import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
Bharat saraswal039f59c2016-07-14 21:57:13 +053035import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
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;
Bharat saraswal84366c52016-03-23 19:40:35 +0530182import static org.onosproject.yangutils.utils.UtilConstants.TO;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530183import static org.onosproject.yangutils.utils.UtilConstants.TRIM_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +0530184import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530185import static org.onosproject.yangutils.utils.UtilConstants.TRY;
Bharat saraswal84366c52016-03-23 19:40:35 +0530186import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
Bharat saraswal8beac342016-08-04 02:00:03 +0530187import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_FOUR_SPACE_INDENTATION;
188import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_SPACE_INDENTATION;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530189import static org.onosproject.yangutils.utils.UtilConstants.UINT_MAX_RANGE;
190import static org.onosproject.yangutils.utils.UtilConstants.UINT_MIN_RANGE;
191import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MAX_RANGE;
192import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MIN_RANGE;
Bharat saraswal8beac342016-08-04 02:00:03 +0530193import static org.onosproject.yangutils.utils.UtilConstants.UNDER_SCORE;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530194import 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) {
472 return "\n get_valueLeafFlags().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,
Vidyashree Ramab3670472016-08-06 15:49:56 +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,
Vidyashree Ramab3670472016-08-06 15:49:56 +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;
961 method = method + TWELVE_SPACE_INDENTATION + IF + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD + getSmallCase(name)
962 + OPEN_PARENTHESIS
963 + CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + SPACE + NULL + SPACE + "||" + SPACE +
964 getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + IS_EMPTY + CLOSE_PARENTHESIS +
965 SPACE + OPEN_CURLY_BRACKET
966 + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE +
967 TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
968 if (isLeafList) {
969 if (type.equals(getSmallCase(STRING_DATA_TYPE))) {
970 type = STRING_DATA_TYPE;
971 }
972 method = method + TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + type + SPACE +
973 getSmallCase(name)
974 + SPACE + COLAN + SPACE + getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
975 CLOSE_PARENTHESIS
976 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE +
977 FLAG + SPACE + EQUAL + SPACE + FALSE + SEMI_COLAN + NEW_LINE;
978 method = method + SIXTEEN_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + type + SPACE +
979 UNDER_SCORE + getSmallCase(name)
980 + SPACE + COLAN + SPACE + APP_INSTANCE + PERIOD + getSmallCase(name) + OPEN_PARENTHESIS
981 + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
982 method = method + TWENTY_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + getSmallCase(name) + PERIOD;
983 } else {
984 method = method + TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + name + SPACE +
985 getSmallCase(name)
986 + SPACE + COLAN + SPACE + getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
987 CLOSE_PARENTHESIS
988 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE +
989 FLAG + SPACE + EQUAL + SPACE + FALSE + SEMI_COLAN + NEW_LINE;
990 method = method + SIXTEEN_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + name + SPACE +
991 UNDER_SCORE + getSmallCase(name)
992 + SPACE + COLAN + SPACE + APP_INSTANCE + PERIOD + getSmallCase(name) + OPEN_PARENTHESIS
993 + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
994 method = method + TWENTY_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + getSmallCase(name) + PERIOD;
995 }
996 if (!isLeafList) {
997 method = method + FILTER_CONTENT_MATCH;
998 } else {
999 method = method + EQUALS_STRING;
1000 }
1001 method = method + OPEN_PARENTHESIS + UNDER_SCORE + getSmallCase(name) + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
1002 + SPACE +
1003 OPEN_CURLY_BRACKET + NEW_LINE + TWENTY_FOUR_SPACE_INDENTATION + FLAG + SPACE + EQUAL + SPACE + TRUE +
1004 SEMI_COLAN
1005 + NEW_LINE + TWENTY_FOUR_SPACE_INDENTATION + BREAK + SEMI_COLAN + NEW_LINE + TWENTY_SPACE_INDENTATION
1006 + CLOSE_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1007
1008 method = method + SIXTEEN_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + FLAG + SPACE + EQUAL + EQUAL
1009 + SPACE + FALSE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWENTY_SPACE_INDENTATION
1010 + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
1011 NEW_LINE;
1012 return method + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
Bharat saraswale50edca2016-08-05 01:58:25 +05301013 CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal8beac342016-08-04 02:00:03 +05301014
1015 }
1016
1017 //Returns method string for op params augmented syntax
Bharat saraswal039f59c2016-07-14 21:57:13 +05301018 private static String getAugmentableOpParamSyntax() {
Bharat saraswal8beac342016-08-04 02:00:03 +05301019 return EIGHT_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + OBJECT_STRING + SPACE +
Bharat saraswal64e7e232016-07-14 23:33:55 +05301020 getSmallCase(YANG_AUGMENTED_INFO) + SPACE + COLAN + SPACE + THIS +
Bharat saraswal8beac342016-08-04 02:00:03 +05301021 PERIOD + getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD
Bharat saraswal039f59c2016-07-14 21:57:13 +05301022 + VALUE + "s" + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
Bharat saraswal8beac342016-08-04 02:00:03 +05301023 NEW_LINE + TWELVE_SPACE_INDENTATION + OBJECT_STRING + SPACE +
Bharat saraswal039f59c2016-07-14 21:57:13 +05301024 getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO) + SPACE + EQUAL + SPACE + APP_INSTANCE + PERIOD +
Bharat saraswal8beac342016-08-04 02:00:03 +05301025 getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD + GET_CLASS +
1026 CLOSE_PARENTHESIS + SEMI_COLAN +
1027 NEW_LINE + TWELVE_SPACE_INDENTATION
1028 + BOOLEAN_DATA_TYPE + SPACE + FILTER_CONTENT_MATCH + SPACE + EQUAL + SPACE + FALSE + SEMI_COLAN
1029 + NEW_LINE + TWELVE_SPACE_INDENTATION + TRY + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
1030 SIXTEEN_SPACE_INDENTATION +
1031 FILTER_CONTENT_MATCH + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS
1032 + BOOLEAN_DATA_TYPE + CLOSE_PARENTHESIS + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + PERIOD +
1033 GET_CLASS + NEW_LINE + TWENTY_SPACE_INDENTATION + PERIOD + GET_METHOD
1034 + OPEN_PARENTHESIS + QUOTES + FILTER_CONTENT_MATCH + QUOTES + COMMA + SPACE + OBJECT_STRING + PERIOD
1035 + CLASS + CLOSE_PARENTHESIS + PERIOD + INVOKE + OPEN_PARENTHESIS + getSmallCase(YANG_AUGMENTED_INFO) +
1036 NEW_LINE + TWENTY_FOUR_SPACE_INDENTATION + PERIOD + GET_CLASS + COMMA + SPACE +
1037 getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO)
1038 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
1039 + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + SPACE + CATCH + OPEN_PARENTHESIS
1040 + NO_SUCH_METHOD_EXCEPTION + " | " + INVOCATION_TARGET_EXCEPTION + " | " + ILLEGAL_ACCESS_EXCEPTION +
1041 SPACE + EXCEPTION_VAR + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1042 + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
1043 + CLOSE_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION
1044 + IF + OPEN_PARENTHESIS + NOT + FILTER_CONTENT_MATCH + CLOSE_PARENTHESIS +
Bharat saraswal039f59c2016-07-14 21:57:13 +05301045 SPACE + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE +
1046 SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
1047 + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1048 }
1049
Bharat saraswal039f59c2016-07-14 21:57:13 +05301050 /*
Bharat saraswal8beac342016-08-04 02:00:03 +05301051 * Returns omit null value string.
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301052 *
1053 * @return omit null value string
1054 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301055 static String getOmitNullValueString() {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301056 return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING + NEW_LINE;
1057 }
1058
1059 /**
1060 * Returns to string method's close string.
Bharat saraswal022dae92016-03-04 20:08:09 +05301061 *
1062 * @return to string method close string
1063 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301064 static String getToStringMethodClose() {
Bharat saraswal84366c52016-03-23 19:40:35 +05301065 return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
1066 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301067 }
1068
1069 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301070 * Returns to string method for class.
Bharat saraswal022dae92016-03-04 20:08:09 +05301071 *
1072 * @param attr attribute info
1073 * @return to string method
1074 */
Vinod Kumar S9f26ae52016-03-23 15:30:27 +05301075 public static String getToStringMethod(JavaAttributeInfo attr) {
1076
janani b703cfe42016-05-17 13:12:22 +05301077 String attributeName = attr.getAttributeName();
Bharat saraswal84366c52016-03-23 19:40:35 +05301078 return TWELVE_SPACE_INDENTATION + PERIOD + ADD_STRING + OPEN_PARENTHESIS + QUOTES + attributeName + QUOTES
1079 + COMMA + SPACE + attributeName + CLOSE_PARENTHESIS;
Bharat saraswal022dae92016-03-04 20:08:09 +05301080 }
1081
1082 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301083 * Returns from string method's open string.
1084 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301085 * @param className name of the class
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301086 * @param pluginConfig plugin configurations
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301087 * @return from string method's open string
1088 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301089 static String getFromStringMethodSignature(String className, YangPluginConfig pluginConfig) {
Vidyashree Ramab3670472016-08-06 15:49:56 +05301090 return getJavaDoc(FROM_METHOD, className, false, pluginConfig, null) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301091 + STATIC + SPACE + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS
1092 + STRING_DATA_TYPE + SPACE + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE
1093 + OPEN_CURLY_BRACKET + NEW_LINE;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301094 }
1095
1096 /**
1097 * Return from string method's close string.
1098 *
1099 * @return from string method's close string
1100 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301101 static String getFromStringMethodClose() {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301102 return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1103 CLOSE_CURLY_BRACKET + NEW_LINE;
1104 }
1105
1106 /**
1107 * Return from string method's body string.
1108 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301109 * @param attr attribute info
Bharat saraswal039f59c2016-07-14 21:57:13 +05301110 * @param fromStringAttributeInfo attribute info for the from string wrapper type
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301111 * @return from string method's body string
1112 */
1113 public static String getFromStringMethod(JavaAttributeInfo attr,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301114 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301115 return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
Mahesh Poojary S6986df32016-07-19 10:58:07 +05301116 + getParsedSubString(attr, fromStringAttributeInfo) + NEW_LINE + TWELVE_SPACE_INDENTATION
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301117 + getReturnOfSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION + getCatchSubString()
1118 + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1119 }
1120
1121 /**
1122 * Returns sub string with try statement for union's from string method.
1123 *
1124 * @return sub string with try statement for union's from string method
1125 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301126 private static String getTrySubString() {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301127 return TRY + SPACE + OPEN_CURLY_BRACKET;
1128 }
1129
1130 /**
1131 * Returns sub string with return statement for union's from string method.
1132 *
1133 * @return sub string with return statement for union's from string method
1134 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301135 private static String getReturnOfSubString() {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301136 return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL + CLOSE_PARENTHESIS + SEMI_COLAN;
1137 }
1138
1139 /**
1140 * Returns sub string with catch statement for union's from string method.
1141 *
1142 * @return sub string with catch statement for union's from string method
1143 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301144 private static String getCatchSubString() {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301145 return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS + EXCEPTION + SPACE + EXCEPTION_VAR
1146 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
1147 }
1148
1149 /**
1150 * Returns sub string with parsed statement for union's from string method.
1151 *
1152 * @param attr attribute info
1153 * @return sub string with parsed statement for union's from string method
1154 */
1155 private static String getParsedSubString(JavaAttributeInfo attr,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301156 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301157 String targetDataType = getReturnType(attr);
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +05301158 if (fromStringAttributeInfo.getAttributeType().getDataType() == BITS) {
1159 String lines = targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + NEW + SPACE + targetDataType
1160 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1161 lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
1162 + PERIOD + REPLACE_STRING + OPEN_PARENTHESIS + SINGLE_QUOTE + OPEN_CURLY_BRACKET + SINGLE_QUOTE
1163 + COMMA + SPACE + SINGLE_QUOTE + SPACE + SINGLE_QUOTE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1164 lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
1165 + PERIOD + REPLACE_STRING + OPEN_PARENTHESIS + SINGLE_QUOTE + CLOSE_CURLY_BRACKET + SINGLE_QUOTE
1166 + COMMA + SPACE + SINGLE_QUOTE + SPACE + SINGLE_QUOTE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1167 lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
1168 + PERIOD + TRIM_STRING + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1169 lines += TWELVE_SPACE_INDENTATION + STRING_DATA_TYPE + SQUARE_BRACKETS + SPACE + BITS_STRING_ARRAY_VAR
1170 + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME + PERIOD + SPLIT_STRING + OPEN_PARENTHESIS
1171 + QUOTES + COMMA + QUOTES + COMMA + SPACE + ZERO + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1172 lines += TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + STRING_DATA_TYPE + SPACE
1173 + BIT_TEMP_VAR + SPACE + COLON + SPACE + BITS_STRING_ARRAY_VAR + CLOSE_PARENTHESIS + SPACE
1174 + OPEN_CURLY_BRACKET + NEW_LINE;
1175 lines += SIXTEEN_SPACE_INDENTATION + BIT_TEMP_VAR + SPACE + EQUAL + SPACE + BIT_TEMP_VAR + PERIOD
1176 + TRIM_STRING + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1177 lines += SIXTEEN_SPACE_INDENTATION + TMP_VAL + PERIOD + SET_METHOD_PREFIX + OPEN_PARENTHESIS
1178 + INTEGER_WRAPPER + PERIOD + PARSE_INT + OPEN_PARENTHESIS + BIT_TEMP_VAR + CLOSE_PARENTHESIS
1179 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1180 lines += TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1181 return lines;
1182 } else if (attr.getAttributeType().getDataType() == BINARY) {
1183 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + BASE64 + PERIOD
1184 + GET_DECODER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + DECODE + OPEN_PARENTHESIS
1185 + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +05301186 } else {
1187 String parseFromStringMethod = getParseFromStringMethod(targetDataType,
Bharat saraswal039f59c2016-07-14 21:57:13 +05301188 fromStringAttributeInfo.getAttributeType());
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +05301189 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + parseFromStringMethod
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +05301190 + OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +05301191 }
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301192 }
1193
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301194 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301195 * Returns hash code method open strings.
Bharat saraswal022dae92016-03-04 20:08:09 +05301196 *
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301197 * @return hash code method open string
Bharat saraswal022dae92016-03-04 20:08:09 +05301198 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301199 static String getHashCodeMethodOpen() {
Bharat saraswal84366c52016-03-23 19:40:35 +05301200 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + INT + SPACE + HASH_CODE_STRING
Bharat saraswal8beac342016-08-04 02:00:03 +05301201 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
1202 EIGHT_SPACE_INDENTATION
1203 + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS + SPACE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301204 }
1205
1206 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301207 * Returns hash code methods close string.
Bharat saraswal022dae92016-03-04 20:08:09 +05301208 *
1209 * @param hashcodeString hash code string
1210 * @return to hash code method close string
1211 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301212 static String getHashCodeMethodClose(String hashcodeString) {
Bharat saraswal84366c52016-03-23 19:40:35 +05301213 hashcodeString = trimAtLast(hashcodeString, COMMA);
1214 hashcodeString = trimAtLast(hashcodeString, SPACE);
Bharat saraswal8beac342016-08-04 02:00:03 +05301215 return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1216 CLOSE_CURLY_BRACKET
Bharat saraswal84366c52016-03-23 19:40:35 +05301217 + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301218 }
1219
1220 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301221 * Returns hash code method for class.
Bharat saraswal022dae92016-03-04 20:08:09 +05301222 *
1223 * @param attr attribute info
1224 * @return hash code method
1225 */
Vinod Kumar S9f26ae52016-03-23 15:30:27 +05301226 public static String getHashCodeMethod(JavaAttributeInfo attr) {
janani b703cfe42016-05-17 13:12:22 +05301227 return attr.getAttributeName() + COMMA + SPACE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301228 }
1229
1230 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301231 * Returns equals method open strings.
Bharat saraswal022dae92016-03-04 20:08:09 +05301232 *
1233 * @param className class name
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301234 * @return equals method open string
Bharat saraswal022dae92016-03-04 20:08:09 +05301235 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301236 static String getEqualsMethodOpen(String className) {
1237 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE +
1238 EQUALS_STRING
Bharat saraswal84366c52016-03-23 19:40:35 +05301239 + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + OBJ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
1240 + NEW_LINE + getEqualsMethodsCommonIfCondition() + getEqualsMethodsSpecificIfCondition(className);
Bharat saraswal022dae92016-03-04 20:08:09 +05301241 }
1242
1243 /**
1244 * Returns equal methods if condition string.
1245 *
1246 * @return if condition string
1247 */
1248 private static String getEqualsMethodsCommonIfCondition() {
Bharat saraswal84366c52016-03-23 19:40:35 +05301249 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + THIS + SPACE + EQUAL + EQUAL + SPACE + OBJ
1250 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + SPACE
1251 + TRUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301252 }
1253
1254 /**
1255 * Returns if condition for specific class object in equals method.
1256 *
1257 * @param className class name
1258 * @return if condition string
1259 */
1260 private static String getEqualsMethodsSpecificIfCondition(String className) {
Bharat saraswal84366c52016-03-23 19:40:35 +05301261 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + OBJ + INSTANCE_OF + className
1262 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + className
1263 + SPACE + OTHER + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS + className + CLOSE_PARENTHESIS + SPACE
1264 + OBJ + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301265 }
1266
1267 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301268 * Returns equals methods close string.
Bharat saraswal022dae92016-03-04 20:08:09 +05301269 *
1270 * @param equalMethodString equal method string
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301271 * @return equals method close string
Bharat saraswal022dae92016-03-04 20:08:09 +05301272 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301273 static String getEqualsMethodClose(String equalMethodString) {
Bharat saraswal84366c52016-03-23 19:40:35 +05301274 equalMethodString = trimAtLast(equalMethodString, AND);
1275 equalMethodString = trimAtLast(equalMethodString, AND);
1276 equalMethodString = trimAtLast(equalMethodString, SPACE);
1277 equalMethodString = trimAtLast(equalMethodString, NEW_LINE) + SEMI_COLAN + NEW_LINE;
1278 return equalMethodString + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
1279 + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1280 + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301281 }
1282
1283 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301284 * Returns equals method for class.
Bharat saraswal022dae92016-03-04 20:08:09 +05301285 *
1286 * @param attr attribute info
1287 * @return equals method
1288 */
Vinod Kumar S9f26ae52016-03-23 15:30:27 +05301289 public static String getEqualsMethod(JavaAttributeInfo attr) {
janani b703cfe42016-05-17 13:12:22 +05301290 String attributeName = attr.getAttributeName();
Bharat saraswal84366c52016-03-23 19:40:35 +05301291 return SIXTEEN_SPACE_INDENTATION + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS
1292 + attributeName + COMMA + SPACE + OTHER + PERIOD + attributeName + CLOSE_PARENTHESIS + SPACE + AND
1293 + AND;
Bharat saraswal022dae92016-03-04 20:08:09 +05301294 }
1295
1296 /**
1297 * Returns of method string for class.
1298 *
1299 * @param name class name
1300 * @param attr attribute info
1301 * @return of method string
1302 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301303 static String getOfMethod(String name, JavaAttributeInfo attr) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301304 String attrQualifiedType = getReturnType(attr);
Bharat saraswal84366c52016-03-23 19:40:35 +05301305 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name + SPACE + OF + OPEN_PARENTHESIS
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301306 + attrQualifiedType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Bharat saraswal84366c52016-03-23 19:40:35 +05301307 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name + OPEN_PARENTHESIS + VALUE
1308 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301309 }
1310
Bharat saraswale2bc60d2016-04-16 02:28:25 +05301311 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301312 * Returns of method's string and java doc for special type.
1313 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301314 * @param attr attribute info
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301315 * @param generatedJavaClassName class name
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301316 * @param pluginConfig plugin configurations
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301317 * @return of method's string and java doc for special type
1318 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301319 public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301320 YangPluginConfig pluginConfig) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301321 String attrType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +05301322 String attrName = attr.getAttributeName();
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301323
Vidyashree Ramab3670472016-08-06 15:49:56 +05301324 return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " + attrName, false, pluginConfig, null)
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301325 + getOfMethodString(attrType, generatedJavaClassName);
1326 }
1327
1328 /**
1329 * Returns of method's string.
1330 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301331 * @param type data type
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301332 * @param className class name
1333 * @return of method's string
1334 */
1335 private static String getOfMethodString(String type, String className) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301336 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + className + SPACE + OF + OPEN_PARENTHESIS
1337 + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1338 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + className + OPEN_PARENTHESIS + VALUE
1339 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1340 }
1341
1342 /**
1343 * Returns string and java doc for constructor of type class.
1344 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301345 * @param attr attribute info
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301346 * @param generatedJavaClassName class name
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301347 * @param pluginConfig plugin configurations
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301348 * @return string and java doc for constructor of type class
1349 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301350 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301351 String generatedJavaClassName,
1352 YangPluginConfig pluginConfig) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301353 String attrType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +05301354 String attrName = attr.getAttributeName();
Vidyashree Ramab3670472016-08-06 15:49:56 +05301355 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName, false, pluginConfig, null)
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301356 + getTypeConstructorString(attrType, attrName, generatedJavaClassName);
1357 }
1358
1359 /**
Bharat saraswal64e7e232016-07-14 23:33:55 +05301360 * Returns string and java doc for constructor of type class.
1361 *
1362 * @param attr1 first attribute info
1363 * @param attr2 second attribute info
1364 * @param generatedJavaClassName class name
1365 * @param pluginConfig plugin config
1366 * @param type conflict validate type
Bharat saraswal8beac342016-08-04 02:00:03 +05301367 * @param addFirst whether int came first or uInt came first
Bharat saraswal64e7e232016-07-14 23:33:55 +05301368 * @return string and java doc for constructor of type class
1369 */
1370 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr1, JavaAttributeInfo
1371 attr2, String generatedJavaClassName, YangPluginConfig pluginConfig, ValidatorTypeForUnionTypes type,
1372 boolean addFirst) {
Bharat saraswal64e7e232016-07-14 23:33:55 +05301373 String attrType = getReturnType(attr1);
1374 String attrName1 = "";
1375 String attrName2 = "";
1376 if (attr1 != null) {
1377 attrName1 = attr1.getAttributeName();
1378 }
1379 if (attr2 != null) {
1380 attrName2 = attr2.getAttributeName();
1381 }
1382
Vidyashree Ramab3670472016-08-06 15:49:56 +05301383 String appDataStructure = null;
1384 if (attr1.getCompilerAnnotation() != null) {
1385 appDataStructure = attr1.getCompilerAnnotation().getYangAppDataStructure().getDataStructure().name();
1386 }
1387 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName1, false, pluginConfig,
1388 appDataStructure) + getTypeConstructorString(attrType, attrName1,
1389 attrName2, generatedJavaClassName, type, addFirst);
Bharat saraswal64e7e232016-07-14 23:33:55 +05301390 }
1391
1392 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301393 * Returns type constructor string.
1394 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301395 * @param type data type
1396 * @param name attribute name
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301397 * @param className class name
1398 * @return type constructor string
1399 */
1400 private static String getTypeConstructorString(String type, String name, String className) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301401 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
1402 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
1403 + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
1404 + CLOSE_CURLY_BRACKET;
1405 }
1406
1407 /**
Bharat saraswal64e7e232016-07-14 23:33:55 +05301408 * Returns type constructor string.
1409 *
1410 * @param type data type
1411 * @param attr1 attribute attr1
1412 * @param className class attr1
1413 * @return type constructor string
1414 */
1415 private static String getTypeConstructorString(String type, String attr1, String attr2, String className,
1416 ValidatorTypeForUnionTypes validatorType, boolean addInt) {
Bharat saraswal64e7e232016-07-14 23:33:55 +05301417 String constructor;
1418 constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
1419 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1420
1421 String name1;
1422 String name2;
1423 if (addInt) {
1424 name1 = attr1;
1425 name2 = attr2;
1426 } else {
1427 name1 = attr2;
1428 name2 = attr1;
1429 }
Bharat saraswal8beac342016-08-04 02:00:03 +05301430 constructor = constructor + ifConditionForIntInTypeDefConstructor(validatorType, addInt) +
Bharat saraswal64e7e232016-07-14 23:33:55 +05301431 TWELVE_SPACE_INDENTATION + THIS + PERIOD
1432 + name1 + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
1433 + CLOSE_CURLY_BRACKET + SPACE + ELSE + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION
1434 + THIS + PERIOD
1435 + name2 + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
1436 + CLOSE_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION
1437 + CLOSE_CURLY_BRACKET;
1438
1439 return constructor;
1440 }
1441
1442 /**
Bharat saraswal8beac342016-08-04 02:00:03 +05301443 * Returns interface of add augmentation.
1444 *
1445 * @return interface of add augmentation
1446 */
1447 static String getAddAugmentInfoMethodInterface() {
1448 return generateForAddAugmentation() + FOUR_SPACE_INDENTATION + VOID + SPACE +
1449 ADD_STRING + YANG_AUGMENTED_INFO + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + VALUE + COMMA +
1450 SPACE + CLASS_STRING + SPACE + CLASS + OBJECT_STRING + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1451 }
1452
1453 /**
Bharat saraswalaf413b82016-07-14 15:18:20 +05301454 * Returns implementation of add augmentation.
1455 *
1456 * @return implementation of add augmentation
1457 */
Bharat saraswal039f59c2016-07-14 21:57:13 +05301458 static String getAddAugmentInfoMethodImpl() {
Bharat saraswal8beac342016-08-04 02:00:03 +05301459 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE +
1460 ADD_STRING + YANG_AUGMENTED_INFO + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + VALUE + COMMA +
Bharat saraswal039f59c2016-07-14 21:57:13 +05301461 SPACE + CLASS_STRING + SPACE + CLASS + OBJECT_STRING + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
1462 NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + PUT +
1463 OPEN_PARENTHESIS + CLASS + OBJECT_STRING + COMMA + SPACE + VALUE +
Bharat saraswalaf413b82016-07-14 15:18:20 +05301464 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1465 CLOSE_CURLY_BRACKET + NEW_LINE;
1466 }
1467
1468 /**
Bharat saraswal8beac342016-08-04 02:00:03 +05301469 * Returns interface of get YANG augment info.
Bharat saraswalaf413b82016-07-14 15:18:20 +05301470 *
Bharat saraswal8beac342016-08-04 02:00:03 +05301471 * @return interface of get YANG augment info
Bharat saraswalaf413b82016-07-14 15:18:20 +05301472 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301473 static String getYangAugmentInfoInterface() {
1474 return generateForGetAugmentation() + FOUR_SPACE_INDENTATION + OBJECT_STRING + SPACE +
1475 getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
1476 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1477 }
Bharat saraswalaf413b82016-07-14 15:18:20 +05301478
Bharat saraswal8beac342016-08-04 02:00:03 +05301479 /**
1480 * Returns implementation of get YANG augment info.
1481 *
1482 * @return implementation of get YANG augment info
1483 */
1484 static String getYangAugmentInfoImpl() {
1485 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
1486 OBJECT_STRING + SPACE +
1487 getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
Bharat saraswalaf413b82016-07-14 15:18:20 +05301488 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
1489 RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + GET + OPEN_PARENTHESIS + CLASS +
1490 OBJECT_STRING + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1491 CLOSE_CURLY_BRACKET + NEW_LINE;
1492 }
1493
1494 /**
Bharat saraswal8beac342016-08-04 02:00:03 +05301495 * Returns implementation of get YANG augment info.
Bharat saraswal039f59c2016-07-14 21:57:13 +05301496 *
Bharat saraswal8beac342016-08-04 02:00:03 +05301497 * @return implementation of get YANG augment info
Bharat saraswal039f59c2016-07-14 21:57:13 +05301498 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301499 static String getYangAugmentInfoMapInterface(YangPluginConfig pluginConfig) {
Vidyashree Ramab3670472016-08-06 15:49:56 +05301500 return getJavaDoc(GETTER_METHOD, getSmallCase(YANG_AUGMENTED_INFO) + MAP, false, pluginConfig, null)
Bharat saraswal8beac342016-08-04 02:00:03 +05301501 + FOUR_SPACE_INDENTATION + MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING + DIAMOND_OPEN_BRACKET +
1502 QUESTION_MARK + DIAMOND_CLOSE_BRACKET + COMMA + SPACE + OBJECT_STRING + DIAMOND_CLOSE_BRACKET +
1503 SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS +
1504 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1505 }
1506
1507 /**
1508 * Returns implementation of get YANG augment info.
1509 *
1510 * @return implementation of get YANG augment info
1511 */
1512 static String getYangAugmentInfoMapImpl() {
1513 return getOverRideString()
Bharat saraswal039f59c2016-07-14 21:57:13 +05301514 + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
1515 MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING + DIAMOND_OPEN_BRACKET + QUESTION_MARK +
Bharat saraswal8beac342016-08-04 02:00:03 +05301516 DIAMOND_CLOSE_BRACKET + COMMA + SPACE + OBJECT_STRING + DIAMOND_CLOSE_BRACKET + SPACE +
1517 getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS +
Bharat saraswal039f59c2016-07-14 21:57:13 +05301518 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
1519 RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + SEMI_COLAN + NEW_LINE
1520 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1521 }
1522
1523 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +05301524 * Returns enum's constructor.
1525 *
1526 * @param className enum's class name
1527 * @return enum's constructor
1528 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301529 static String getEnumsConstructor(String className) {
Bharat saraswal68fa0d12016-04-19 01:00:16 +05301530 return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
1531 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
1532 + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1533 }
Bharat saraswal250a7472016-05-12 13:16:57 +05301534
1535 /**
1536 * Returns of method for enum class.
1537 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301538 * @param className class name
1539 * @param attr java attribute
1540 * @param enumMap enum's sets map
1541 * @param enumList enum's sets list
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301542 * @param pluginConfig plugin configurations
Bharat saraswal250a7472016-05-12 13:16:57 +05301543 * @return of method
1544 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301545 static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
1546 Map<String, Integer> enumMap, List<String> enumList,
1547 YangPluginConfig pluginConfig) {
Bharat saraswal250a7472016-05-12 13:16:57 +05301548 String attrType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +05301549 String attrName = attr.getAttributeName();
Bharat saraswal250a7472016-05-12 13:16:57 +05301550
janani b703cfe42016-05-17 13:12:22 +05301551 String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + getCapitalCase(className) + SPACE
1552 + OF + OPEN_PARENTHESIS
Bharat saraswal250a7472016-05-12 13:16:57 +05301553 + attrType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1554 + EIGHT_SPACE_INDENTATION + SWITCH + SPACE + OPEN_PARENTHESIS + VALUE
1555 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
Bharat saraswal8beac342016-08-04 02:00:03 +05301556 int value;
Bharat saraswal250a7472016-05-12 13:16:57 +05301557 for (String str : enumList) {
Bharat saraswal250a7472016-05-12 13:16:57 +05301558 value = enumMap.get(str);
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +05301559 method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value + COLON + NEW_LINE
janani b703cfe42016-05-17 13:12:22 +05301560 + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + getCapitalCase(className) + PERIOD
Bharat saraswal250a7472016-05-12 13:16:57 +05301561 + str + SEMI_COLAN + NEW_LINE;
1562 }
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +05301563 method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLON + NEW_LINE + SIXTEEN_SPACE_INDENTATION
Bharat saraswal250a7472016-05-12 13:16:57 +05301564 + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1565 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1566
Vidyashree Ramab3670472016-08-06 15:49:56 +05301567 return getJavaDoc(OF_METHOD, getCapitalCase(className) + " for type " + attrName, false, pluginConfig, null)
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301568 + method;
Bharat saraswal250a7472016-05-12 13:16:57 +05301569 }
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301570
1571 /**
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301572 * Returns from string method parsed string.
1573 *
1574 * @param targetDataType target data type
1575 * @param yangType YANG type
1576 * @return parsed string
1577 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301578 private static String getParseFromStringMethod(String targetDataType, YangType<?> yangType) {
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301579 YangDataTypes type = yangType.getDataType();
1580
1581 switch (type) {
1582 case INT8:
1583 return BYTE_WRAPPER + PERIOD + PARSE_BYTE;
1584 case INT16:
1585 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1586 case INT32:
1587 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1588 case INT64:
1589 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1590 case UINT8:
1591 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1592 case UINT16:
1593 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1594 case UINT32:
1595 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1596 case UINT64:
1597 return NEW + SPACE + BIG_INTEGER;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +05301598 case DECIMAL64:
1599 return NEW + SPACE + BIG_DECIMAL;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301600 case STRING:
Shankara-Huaweib7564772016-08-02 18:13:13 +05301601 case IDENTITYREF:
1602 return EMPTY_STRING;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301603 case EMPTY:
1604 case BOOLEAN:
1605 return BOOLEAN_WRAPPER + PERIOD + PARSE_BOOLEAN;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301606 case BITS:
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301607 case UNION:
1608 case ENUMERATION:
1609 case DERIVED:
1610 return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
1611 default:
1612 throw new TranslatorException("given data type is not supported.");
1613 }
1614 }
Bharat saraswald14cbe82016-07-14 13:26:18 +05301615
1616 /**
Bharat saraswalaf413b82016-07-14 15:18:20 +05301617 * Returns augmented data getter and setter methods for service class.
1618 *
1619 * @param parent parent node
1620 * @return augmented data getter and setter methods for service class
1621 */
Bharat saraswal039f59c2016-07-14 21:57:13 +05301622 static String getAugmentsDataMethodForService(YangNode parent) {
Bharat saraswalaf413b82016-07-14 15:18:20 +05301623 List<YangAtomicPath> targets = getSetOfNodeIdentifiers(parent);
1624 YangNode augmentedNode;
1625 String curNodeName;
1626 String method;
1627 StringBuilder methods = new StringBuilder();
1628 String parentName;
1629 String returnType;
Bharat saraswal64e7e232016-07-14 23:33:55 +05301630 YangNode methodNode;
Bharat saraswalaf413b82016-07-14 15:18:20 +05301631 YangPluginConfig pluginConfig = ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig();
1632 for (YangAtomicPath nodeId : targets) {
Bharat saraswal039f59c2016-07-14 21:57:13 +05301633 augmentedNode = nodeId.getResolvedNode().getParent();
Bharat saraswal64e7e232016-07-14 23:33:55 +05301634 methodNode = nodeId.getResolvedNode();
1635 if (((JavaFileInfoContainer) methodNode).getJavaFileInfo().getJavaName() != null) {
1636 curNodeName = ((JavaFileInfoContainer) methodNode).getJavaFileInfo().getJavaName();
Bharat saraswalaf413b82016-07-14 15:18:20 +05301637 } else {
Bharat saraswal64e7e232016-07-14 23:33:55 +05301638 curNodeName = getCapitalCase(getCamelCase(methodNode.getName(), pluginConfig
Bharat saraswalaf413b82016-07-14 15:18:20 +05301639 .getConflictResolver()));
1640 }
1641 returnType = getAugmentedClassNameForDataMethods(augmentedNode, parent);
Bharat saraswal039f59c2016-07-14 21:57:13 +05301642 parentName = getParentNodeNameForDataMethods(augmentedNode, pluginConfig);
Bharat saraswal8beac342016-08-04 02:00:03 +05301643 method = generateForGetMethodWithAttribute(returnType)
1644 + getGetMethodWithArgument(returnType, AUGMENTED + parentName
1645 + getCapitalCase(curNodeName)) + NEW_LINE;
Bharat saraswalaf413b82016-07-14 15:18:20 +05301646 methods.append(method);
1647
1648 method = getJavaDoc(MANAGER_SETTER_METHOD, AUGMENTED +
Vidyashree Ramab3670472016-08-06 15:49:56 +05301649 getCapitalCase(parentName) + getCapitalCase(curNodeName), false, pluginConfig, null) +
Bharat saraswalaf413b82016-07-14 15:18:20 +05301650 getSetterForInterface(getSmallCase(AUGMENTED) + parentName +
Vidyashree Ramab3670472016-08-06 15:49:56 +05301651 getCapitalCase(curNodeName), returnType, parentName, false,
1652 GENERATE_SERVICE_AND_MANAGER, null) + NEW_LINE;
Bharat saraswalaf413b82016-07-14 15:18:20 +05301653 methods.append(method);
1654 }
1655 return methods.toString();
1656 }
1657
1658 /**
Bharat saraswal64e7e232016-07-14 23:33:55 +05301659 * Returns validator method for range in union class.
1660 *
1661 * @param type type
1662 * @return validator method for range in union class
1663 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301664 static String getRangeValidatorMethodForUnion(String type) {
Bharat saraswal64e7e232016-07-14 23:33:55 +05301665 String newType;
1666 if (type.contentEquals(BIG_INTEGER)) {
1667 newType = LONG;
1668 } else {
1669 newType = INT;
1670 }
1671 String method = generateForValidatorMethod() + FOUR_SPACE_INDENTATION + PRIVATE + SPACE + BOOLEAN_DATA_TYPE +
1672 SPACE +
1673 VALIDATE_RANGE +
1674 OPEN_PARENTHESIS
1675 + type + SPACE + MIN_RANGE + COMMA + SPACE + type + SPACE + MAX_RANGE + COMMA + SPACE +
1676 newType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1677 if (type.contentEquals(BIG_INTEGER)) {
1678 method = method + EIGHT_SPACE_INDENTATION + BIG_INTEGER + SPACE + getSmallCase(BIG_INTEGER)
1679 + SPACE + EQUAL + SPACE + NEW + SPACE + BIG_INTEGER + OPEN_PARENTHESIS + QUOTES + SPACE +
1680 QUOTES + SPACE + ADD + SPACE + VALUE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE +
1681 EIGHT_SPACE_INDENTATION + RETURN + SPACE + getSmallCase(BIG_INTEGER) + PERIOD + "compareTo"
1682 + OPEN_PARENTHESIS + MIN_RANGE + CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + " 1" + SPACE + AND +
1683 AND + SPACE + getSmallCase(BIG_INTEGER) + PERIOD + "compareTo" + OPEN_PARENTHESIS + MAX_RANGE +
1684 CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + " 1" + SEMI_COLAN + NEW_LINE;
1685 } else {
1686 method = method + EIGHT_SPACE_INDENTATION
1687 + RETURN + SPACE + VALUE + SPACE + DIAMOND_CLOSE_BRACKET + EQUAL + SPACE + MIN_RANGE + SPACE + AND +
1688 AND + SPACE + VALUE + DIAMOND_OPEN_BRACKET + EQUAL + SPACE + MAX_RANGE + SEMI_COLAN + NEW_LINE;
1689 }
1690 return method + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1691 }
1692
1693 /**
1694 * Returns if condition string for typedef constructor.
1695 *
1696 * @param type type of conflict
1697 * @param addFirst true int/long need to be added first
1698 * @return if condition string for typedef constructor
1699 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301700 private static String ifConditionForIntInTypeDefConstructor(ValidatorTypeForUnionTypes type, boolean addFirst) {
Bharat saraswal64e7e232016-07-14 23:33:55 +05301701 String condition = EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + VALIDATE_RANGE + OPEN_PARENTHESIS;
1702
1703 if (type == INT_TYPE_CONFLICT) {
1704 if (addFirst) {
1705 condition = condition + INT_MIN_RANGE + COMMA + SPACE + INT_MAX_RANGE + COMMA + SPACE + VALUE;
1706 } else {
1707 condition = condition + UINT_MIN_RANGE + COMMA + SPACE + UINT_MAX_RANGE + COMMA + SPACE + VALUE;
1708 }
1709 } else {
1710 if (addFirst) {
1711 condition = condition + LONG_MIN_RANGE + COMMA + SPACE + LONG_MAX_RANGE + COMMA + SPACE + VALUE;
1712 } else {
1713 condition = condition + ULONG_MIN_RANGE + COMMA + SPACE + ULONG_MAX_RANGE + COMMA + SPACE + VALUE;
1714 }
1715 }
1716 return condition + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1717 }
1718
Bharat saraswal8beac342016-08-04 02:00:03 +05301719 //Get method with arguments.
1720 private static String getGetMethodWithArgument(String returnType, String yangName) {
1721 return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCapitalCase(yangName)
1722 + OPEN_PARENTHESIS + returnType + OP_PARAM + SPACE + getSmallCase(returnType) + CLOSE_PARENTHESIS +
1723 SEMI_COLAN;
1724 }
Bharat saraswal64e7e232016-07-14 23:33:55 +05301725
Bharat saraswal8beac342016-08-04 02:00:03 +05301726 /**
1727 * Returns add to list method interface.
1728 *
1729 * @param attr java attribute
1730 * @return add to list method interface
1731 */
1732 public static String getAddToListMethodInterface(JavaAttributeInfo attr) {
1733 return FOUR_SPACE_INDENTATION + VOID + SPACE + ADD_STRING + getCapitalCase(TO) +
1734 getCapitalCase(attr.getAttributeName()) + OPEN_PARENTHESIS + getReturnType(attr) + SPACE +
1735 VALUE + CLOSE_PARENTHESIS + SEMI_COLAN;
1736 }
1737
1738 /**
1739 * Returns add to list method impl.
1740 *
1741 * @param attr java attribute
1742 * @return add to list method impl
1743 */
1744 public static String getAddToListMethodImpl(JavaAttributeInfo attr) {
1745 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + ADD_STRING +
1746 getCapitalCase(TO) + getCapitalCase(attr.getAttributeName()) + OPEN_PARENTHESIS +
1747 getReturnType(attr) + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
1748 + NEW_LINE + EIGHT_SPACE_INDENTATION + attr.getAttributeName() + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
1749 + PERIOD + ADD_STRING + OPEN_PARENTHESIS + VALUE + CLOSE_PARENTHESIS + SEMI_COLAN +
1750 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1751 }
1752
1753 /**
1754 * Returns builder method for class.
1755 *
1756 * @param name name of class
1757 * @return builder method for class
1758 */
1759 static String builderMethod(String name) {
1760 return NEW_LINE + generateForBuilderMethod(name) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE
1761 + name + BUILDER + SPACE + getSmallCase(BUILDER) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
1762 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name +
1763 BUILDER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1764 CLOSE_CURLY_BRACKET;
1765 }
1766
1767 /**
1768 * Returns is filter content match interface.
1769 *
1770 * @param name name of node
1771 * @return is filter content match interface
1772 */
1773 static String isFilterContentMatchInterface(String name) {
1774 String method = " /**\n" +
1775 " * Checks if the passed " + name + " maps the content match query condition.\n" +
1776 " *\n" +
1777 " * @param " + getSmallCase(name) + SPACE + getSmallCase(name) + SPACE + "being passed to check" +
1778 " for" +
1779 " content match\n" +
1780 " * @return match result\n" +
1781 " */\n";
1782 return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE + FILTER_CONTENT_MATCH + OPEN_PARENTHESIS
1783 + name + SPACE + getSmallCase(name) + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1784 }
1785
1786 /**
1787 * Returns is value set interface.
1788 *
1789 * @return is value set interface
1790 */
1791 static String isLeafValueSetInterface() {
1792 String method = " /**\n" +
1793 " * Checks if the leaf value is set.\n" +
1794 " *\n" +
1795 " * @param leaf leaf whose value status needs to checked\n" +
1796 " * @return result of leaf value set in object\n" +
1797 " */\n";
1798 return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE + VALUE_LEAF_SET + OPEN_PARENTHESIS
1799 + LEAF_IDENTIFIER + SPACE + "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1800 }
1801
1802 /**
1803 * Returns is select leaf set interface.
1804 *
1805 * @return is select leaf set interface
1806 */
1807 static String isSelectLeafSetInterface() {
1808 String method = " /**\n" +
1809 " * Checks if the leaf is set to be a selected leaf.\n" +
1810 " *\n" +
1811 " * @param leaf if leaf needs to be selected\n" +
1812 " * @return result of leaf value set in object\n" +
1813 " */\n";
1814 return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE + IS_SELECT_LEAF + OPEN_PARENTHESIS
1815 + LEAF_IDENTIFIER + SPACE + "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1816 }
1817
1818 /**
1819 * Returns set select leaf set interface.
1820 *
1821 * @param name node name
1822 * @return set select leaf set interface
1823 */
1824 static String setSelectLeafSetInterface(String name) {
1825 String method = " /**\n" +
1826 " * Set a leaf to be selected.\n" +
1827 " *\n" +
1828 " * @param leaf leaf needs to be selected\n" +
1829 " */\n";
1830 return method + FOUR_SPACE_INDENTATION + name + BUILDER + SPACE + SET_SELECT_LEAF + OPEN_PARENTHESIS
1831 + LEAF_IDENTIFIER + SPACE + "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1832 }
1833
1834 /**
1835 * Returns leaf identifier interface enum signature.
1836 *
1837 * @param name name of node
1838 * @return leaf identifier interface enum signature
1839 */
1840 static String getInterfaceLeafIdEnumSignature(String name) {
1841 String start = " /**\n" +
1842 " * Identify the leaf of " + name + PERIOD + NEW_LINE +
1843 " */\n";
1844 return start + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + ENUM + SPACE + LEAF_IDENTIFIER + SPACE +
1845 OPEN_CURLY_BRACKET + NEW_LINE;
1846 }
1847
1848 /**
1849 * Returns interface leaf identifier enum method.
1850 *
1851 * @return interface leaf identifier enum method
1852 */
1853 static String getInterfaceLeafIdEnumMethods() {
1854 return " private int leafIndex;\n" +
1855 "\n" +
1856 " public int getLeafIndex() {\n" +
1857 " return leafIndex;\n" +
1858 " }\n" +
1859 "\n" +
1860 " LeafIdentifier(int value) {\n" +
1861 " this.leafIndex = value;\n" +
1862 " }\n" +
1863 " }\n";
1864 }
1865
1866 /**
1867 * Returns getter methods for operation attributes.
1868 *
1869 * @return getter methods for operation attributes
1870 */
1871 static String getOperationAttributesGetters() {
1872 return "\n" +
1873 " /**\n" +
1874 " * Returns the _valueLeafFlags.\n" +
1875 " *\n" +
1876 " * @return value of _valueLeafFlags\n" +
1877 " */\n" +
1878 " public BitSet get_valueLeafFlags() {\n" +
1879 " return _valueLeafFlags;\n" +
1880 " }\n" +
1881 "\n" +
1882 " /**\n" +
1883 " * Returns the _selectLeafFlags.\n" +
1884 " *\n" +
1885 " * @return value of _selectLeafFlags\n" +
1886 " */\n" +
1887 " public BitSet get_selectLeafFlags() {\n" +
1888 " return _selectLeafFlags;\n" +
1889 " }\n" +
1890 "\n";
1891 }
1892
1893 /**
1894 * Returns getter for operation type.
1895 *
1896 * @return getter for operation type
1897 */
1898 static String getGetterForOperationType() {
1899 return " /**\n" +
1900 " * Returns the _operationType.\n" +
1901 " *\n" +
1902 " * @return value of _operationType\n" +
1903 " */\n" +
1904 " public OperationType get_operationType() {\n" +
1905 " return _operationType;\n" +
1906 " }\n";
1907 }
1908
1909 /**
1910 * Returns getters for value and select leaf.
1911 *
1912 * @return getters for value and select leaf
1913 */
1914 static String getGettersForValueAndSelectLeaf() {
1915 return "\n" +
1916 " @Override\n" +
1917 " public boolean isLeafValueSet(LeafIdentifier leaf) {\n" +
1918 " return get_valueLeafFlags().get(leaf.getLeafIndex());\n" +
1919 " }\n" +
1920 "\n" +
1921 " @Override\n" +
1922 " public boolean isSelectLeaf(LeafIdentifier leaf) {\n" +
1923 " return get_selectLeafFlags().get(leaf.getLeafIndex());\n" +
1924 " }\n";
1925 }
1926
1927 /**
1928 * Returns setter for operation type.
1929 *
1930 * @param name name of node
1931 * @return setter for operation type
1932 */
1933 static String getSetterForOperationType(String name) {
1934 return " /**\n" +
1935 " * Set operation type.\n" +
1936 " *\n" +
1937 " * @param _operationType operation type\n" +
1938 " */\n" +
1939 " public " + name + BUILDER + " set_operationType(OperationType _operationType) {\n" +
1940 " this._operationType = _operationType;\n" +
1941 " return this;\n" +
1942 " }\n";
1943 }
1944
1945 /**
1946 * Returns setter for select leaf.
1947 *
1948 * @param name name of node
1949 * @param isRootNode if root node
1950 * @return setter for select leaf
1951 */
1952 static String getSetterForSelectLeaf(String name, boolean isRootNode) {
1953 String append = OVERRIDE;
1954 if (isRootNode) {
1955 append = EMPTY_STRING;
1956 }
1957 return "\n" +
1958 " " + append + "\n" +
1959 " public " + name + BUILDER + " selectLeaf(LeafIdentifier leaf) {\n" +
1960 " get_selectLeafFlags().set(leaf.getLeafIndex());\n" +
1961 " return this;\n" +
1962 " }\n";
1963 }
Vidyashree Ramab3670472016-08-06 15:49:56 +05301964
1965 private static String getListAttribute(String attrType, YangCompilerAnnotation compilerAnnotation) {
1966 String listAttr;
1967 if (compilerAnnotation != null && compilerAnnotation.getYangAppDataStructure() != null) {
1968 switch (compilerAnnotation.getYangAppDataStructure().getDataStructure()) {
1969 case QUEUE: {
1970 listAttr = QUEUE + DIAMOND_OPEN_BRACKET + attrType + DIAMOND_CLOSE_BRACKET;
1971 break;
1972 }
1973 case SET: {
1974 listAttr = SET + DIAMOND_OPEN_BRACKET + attrType + DIAMOND_CLOSE_BRACKET;
1975 break;
1976 }
1977 case LIST: {
1978 listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
1979 break;
1980 }
1981 default: {
1982 listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
1983 }
1984 }
1985 } else {
1986 listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
1987 }
1988 return listAttr;
1989 }
Bharat saraswal97459962016-02-20 21:57:16 +05301990}