blob: 583bb0a001076255c7c2f623274b7e386a926b8a [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 saraswal039f59c2016-07-14 21:57:13 +053019import org.onosproject.yangutils.datamodel.YangAtomicPath;
Gaurav Agrawal8a147522016-08-10 13:43:01 +053020import org.onosproject.yangutils.datamodel.YangCompilerAnnotation;
Bharat saraswal748fc3c2016-09-06 16:38:20 +053021import org.onosproject.yangutils.datamodel.YangEnum;
22import org.onosproject.yangutils.datamodel.YangEnumeration;
Bharat saraswalaf413b82016-07-14 15:18:20 +053023import org.onosproject.yangutils.datamodel.YangNode;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +053024import org.onosproject.yangutils.datamodel.YangType;
janani b0e4e8ae2016-07-13 21:06:41 +053025import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +053026import org.onosproject.yangutils.translator.exception.TranslatorException;
Vinod Kumar S9f26ae52016-03-23 15:30:27 +053027import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
Bharat saraswal039f59c2016-07-14 21:57:13 +053028import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
Gaurav Agrawal8a147522016-08-10 13:43:01 +053029import org.onosproject.yangutils.utils.io.YangPluginConfig;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +053030import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
Bharat saraswal84366c52016-03-23 19:40:35 +053031
Gaurav Agrawal3b57f362016-09-07 13:16:35 +053032import java.util.List;
33
Bharat saraswal039f59c2016-07-14 21:57:13 +053034import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BINARY;
35import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BITS;
36import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BOOLEAN;
Shankara-Huaweia1039e52016-07-14 16:53:09 +053037import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DECIMAL64;
Bharat saraswal039f59c2016-07-14 21:57:13 +053038import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.EMPTY;
Shankara-Huaweia1039e52016-07-14 16:53:09 +053039import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT16;
40import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT32;
41import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT64;
Bharat saraswal039f59c2016-07-14 21:57:13 +053042import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT8;
Shankara-Huaweia1039e52016-07-14 16:53:09 +053043import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT16;
Shankara-Huaweia1039e52016-07-14 16:53:09 +053044import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT32;
Bharat saraswal039f59c2016-07-14 21:57:13 +053045import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT64;
46import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT8;
Bharat saraswal715d3fc2016-05-17 19:59:16 +053047import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +053048import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
Gaurav Agrawal3b57f362016-09-07 13:16:35 +053049import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getAugmentedClassNameForDataMethods;
Bharat saraswal039f59c2016-07-14 21:57:13 +053050import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getParentNodeNameForDataMethods;
51import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getSetOfNodeIdentifiers;
Bharat saraswal748fc3c2016-09-06 16:38:20 +053052import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
Bharat saraswal64e7e232016-07-14 23:33:55 +053053import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.INT_TYPE_CONFLICT;
Bharat saraswal2da23bf2016-08-25 15:28:39 +053054import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.SHORT_TYPE_CONFLICT;
Bharat saraswal64e7e232016-07-14 23:33:55 +053055import static org.onosproject.yangutils.utils.UtilConstants.ADD;
Bharat saraswal84366c52016-03-23 19:40:35 +053056import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
57import static org.onosproject.yangutils.utils.UtilConstants.AND;
Bharat saraswalaf413b82016-07-14 15:18:20 +053058import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +053059import static org.onosproject.yangutils.utils.UtilConstants.BASE64;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +053060import static org.onosproject.yangutils.utils.UtilConstants.BIG_DECIMAL;
Bharat saraswald14cbe82016-07-14 13:26:18 +053061import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
Bharat saraswal84366c52016-03-23 19:40:35 +053062import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +053063import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
Bharat saraswal84366c52016-03-23 19:40:35 +053064import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
65import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +053066import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +053067import static org.onosproject.yangutils.utils.UtilConstants.BYTE_WRAPPER;
Bharat saraswal250a7472016-05-12 13:16:57 +053068import static org.onosproject.yangutils.utils.UtilConstants.CASE;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +053069import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
Bharat saraswal84366c52016-03-23 19:40:35 +053070import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
Bharat saraswalaf413b82016-07-14 15:18:20 +053071import static org.onosproject.yangutils.utils.UtilConstants.CLASS;
72import static org.onosproject.yangutils.utils.UtilConstants.CLASS_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +053073import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
74import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
Bharat saraswal039f59c2016-07-14 21:57:13 +053075import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +053076import static org.onosproject.yangutils.utils.UtilConstants.COLON;
Bharat saraswal84366c52016-03-23 19:40:35 +053077import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +053078import static org.onosproject.yangutils.utils.UtilConstants.DECODE;
Bharat saraswal250a7472016-05-12 13:16:57 +053079import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
Bharat saraswal84366c52016-03-23 19:40:35 +053080import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
81import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +053082import static org.onosproject.yangutils.utils.UtilConstants.DOUBLE;
Bharat saraswal84366c52016-03-23 19:40:35 +053083import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
Bharat saraswal64e7e232016-07-14 23:33:55 +053084import static org.onosproject.yangutils.utils.UtilConstants.ELSE;
Bharat saraswal84366c52016-03-23 19:40:35 +053085import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
Bharat saraswal8beac342016-08-04 02:00:03 +053086import static org.onosproject.yangutils.utils.UtilConstants.ENUM;
Bharat saraswal84366c52016-03-23 19:40:35 +053087import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
88import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +053089import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
90import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
Bharat saraswal84366c52016-03-23 19:40:35 +053091import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +053092import static org.onosproject.yangutils.utils.UtilConstants.FOR;
Bharat saraswal84366c52016-03-23 19:40:35 +053093import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +053094import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
95import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
Bharat saraswalaf413b82016-07-14 15:18:20 +053096import static org.onosproject.yangutils.utils.UtilConstants.GET;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +053097import static org.onosproject.yangutils.utils.UtilConstants.GET_DECODER;
Bharat saraswal84366c52016-03-23 19:40:35 +053098import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
99import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
100import static org.onosproject.yangutils.utils.UtilConstants.HASH;
101import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
102import static org.onosproject.yangutils.utils.UtilConstants.IF;
Bharat saraswal84366c52016-03-23 19:40:35 +0530103import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
104import static org.onosproject.yangutils.utils.UtilConstants.INT;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530105import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530106import static org.onosproject.yangutils.utils.UtilConstants.INT_MAX_RANGE;
107import static org.onosproject.yangutils.utils.UtilConstants.INT_MIN_RANGE;
Bharat saraswal8beac342016-08-04 02:00:03 +0530108import static org.onosproject.yangutils.utils.UtilConstants.IS_SELECT_LEAF;
109import static org.onosproject.yangutils.utils.UtilConstants.LEAF_IDENTIFIER;
Bharat saraswal84366c52016-03-23 19:40:35 +0530110import static org.onosproject.yangutils.utils.UtilConstants.LIST;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530111import static org.onosproject.yangutils.utils.UtilConstants.LONG;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530112import static org.onosproject.yangutils.utils.UtilConstants.LONG_MAX_RANGE;
113import static org.onosproject.yangutils.utils.UtilConstants.LONG_MIN_RANGE;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530114import static org.onosproject.yangutils.utils.UtilConstants.LONG_WRAPPER;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530115import static org.onosproject.yangutils.utils.UtilConstants.MAP;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530116import static org.onosproject.yangutils.utils.UtilConstants.MAX_RANGE;
117import static org.onosproject.yangutils.utils.UtilConstants.MIN_RANGE;
Bharat saraswal84366c52016-03-23 19:40:35 +0530118import static org.onosproject.yangutils.utils.UtilConstants.NEW;
119import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530120import static org.onosproject.yangutils.utils.UtilConstants.NULL;
Bharat saraswal84366c52016-03-23 19:40:35 +0530121import static org.onosproject.yangutils.utils.UtilConstants.OBJ;
122import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
123import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
124import static org.onosproject.yangutils.utils.UtilConstants.OF;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530125import static org.onosproject.yangutils.utils.UtilConstants.OMIT_NULL_VALUE_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +0530126import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
127import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
Bharat saraswal8beac342016-08-04 02:00:03 +0530128import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM;
Bharat saraswal84366c52016-03-23 19:40:35 +0530129import static org.onosproject.yangutils.utils.UtilConstants.OTHER;
130import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530131import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BOOLEAN;
132import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BYTE;
133import static org.onosproject.yangutils.utils.UtilConstants.PARSE_INT;
134import static org.onosproject.yangutils.utils.UtilConstants.PARSE_LONG;
135import static org.onosproject.yangutils.utils.UtilConstants.PARSE_SHORT;
Bharat saraswal84366c52016-03-23 19:40:35 +0530136import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530137import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530138import static org.onosproject.yangutils.utils.UtilConstants.PROCESS_SUBTREE_FILTERING;
139import static org.onosproject.yangutils.utils.UtilConstants.PROTECTED;
Bharat saraswal84366c52016-03-23 19:40:35 +0530140import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530141import static org.onosproject.yangutils.utils.UtilConstants.PUT;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530142import static org.onosproject.yangutils.utils.UtilConstants.QUESTION_MARK;
Vidyashree Ramab3670472016-08-06 15:49:56 +0530143import static org.onosproject.yangutils.utils.UtilConstants.QUEUE;
Bharat saraswal84366c52016-03-23 19:40:35 +0530144import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530145import static org.onosproject.yangutils.utils.UtilConstants.REPLACE_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +0530146import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530147import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530148import static org.onosproject.yangutils.utils.UtilConstants.SCHEMA_NAME;
Bharat saraswal84366c52016-03-23 19:40:35 +0530149import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
Vidyashree Ramab3670472016-08-06 15:49:56 +0530150import static org.onosproject.yangutils.utils.UtilConstants.SET;
Bharat saraswal84366c52016-03-23 19:40:35 +0530151import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
Bharat saraswal8beac342016-08-04 02:00:03 +0530152import static org.onosproject.yangutils.utils.UtilConstants.SET_SELECT_LEAF;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530153import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530154import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MAX_RANGE;
155import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MIN_RANGE;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530156import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530157import static org.onosproject.yangutils.utils.UtilConstants.SINGLE_QUOTE;
Bharat saraswal84366c52016-03-23 19:40:35 +0530158import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
159import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530160import static org.onosproject.yangutils.utils.UtilConstants.SPLIT_STRING;
161import static org.onosproject.yangutils.utils.UtilConstants.SQUARE_BRACKETS;
Bharat saraswal84366c52016-03-23 19:40:35 +0530162import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
163import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530164import static org.onosproject.yangutils.utils.UtilConstants.STR_VAL;
Bharat saraswal84366c52016-03-23 19:40:35 +0530165import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
Bharat saraswal250a7472016-05-12 13:16:57 +0530166import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
Bharat saraswal84366c52016-03-23 19:40:35 +0530167import static org.onosproject.yangutils.utils.UtilConstants.THIS;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530168import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
Bharat saraswal84366c52016-03-23 19:40:35 +0530169import static org.onosproject.yangutils.utils.UtilConstants.TO;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530170import static org.onosproject.yangutils.utils.UtilConstants.TRIM_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +0530171import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530172import static org.onosproject.yangutils.utils.UtilConstants.TRY;
Bharat saraswal84366c52016-03-23 19:40:35 +0530173import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530174import static org.onosproject.yangutils.utils.UtilConstants.UINT8_MAX_RANGE;
175import static org.onosproject.yangutils.utils.UtilConstants.UINT8_MIN_RANGE;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530176import static org.onosproject.yangutils.utils.UtilConstants.UINT_MAX_RANGE;
177import static org.onosproject.yangutils.utils.UtilConstants.UINT_MIN_RANGE;
178import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MAX_RANGE;
179import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MIN_RANGE;
180import static org.onosproject.yangutils.utils.UtilConstants.VALIDATE_RANGE;
Bharat saraswal84366c52016-03-23 19:40:35 +0530181import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
Bharat saraswal8beac342016-08-04 02:00:03 +0530182import static org.onosproject.yangutils.utils.UtilConstants.VALUE_LEAF_SET;
Bharat saraswal84366c52016-03-23 19:40:35 +0530183import static org.onosproject.yangutils.utils.UtilConstants.VOID;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530184import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530185import static org.onosproject.yangutils.utils.UtilConstants.YANG_UTILS_TODO;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +0530186import static org.onosproject.yangutils.utils.UtilConstants.ZERO;
Bharat saraswal84366c52016-03-23 19:40:35 +0530187import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
188import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
189import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530190import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.FROM_METHOD;
Bharat saraswal84366c52016-03-23 19:40:35 +0530191import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530192import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.MANAGER_SETTER_METHOD;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530193import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
Bharat saraswal84366c52016-03-23 19:40:35 +0530194import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530195import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530196import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForAddAugmentation;
Bharat saraswal8beac342016-08-04 02:00:03 +0530197import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForBuilderMethod;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530198import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForGetAugmentation;
Bharat saraswal8beac342016-08-04 02:00:03 +0530199import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForGetMethodWithAttribute;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530200import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForValidatorMethod;
Bharat saraswald14cbe82016-07-14 13:26:18 +0530201import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530202import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
203import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
204import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
Bharat saraswal84366c52016-03-23 19:40:35 +0530205import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
Bharat saraswal97459962016-02-20 21:57:16 +0530206
207/**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530208 * Represents generator for methods of generated files based on the file type.
Bharat saraswal97459962016-02-20 21:57:16 +0530209 */
210public final class MethodsGenerator {
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +0530211 private static final String BITS_STRING_ARRAY_VAR = "bitsTemp";
212 private static final String BIT_TEMP_VAR = "bitTemp";
Bharat saraswal97459962016-02-20 21:57:16 +0530213
Bharat saraswal97459962016-02-20 21:57:16 +0530214 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530215 * Creates an instance of method generator.
Bharat saraswal97459962016-02-20 21:57:16 +0530216 */
217 private MethodsGenerator() {
218 }
219
220 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530221 * Returns the methods strings for builder interface.
222 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530223 * @param name attribute name
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530224 * @param pluginConfig plugin configurations
Vinod Kumar S08710982016-03-03 19:55:30 +0530225 * @return method string for builder interface
Bharat saraswal97459962016-02-20 21:57:16 +0530226 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530227 public static String parseBuilderInterfaceBuildMethodString(String name,
228 YangPluginConfig pluginConfig) {
229 return getJavaDoc(BUILD_METHOD, name, false, pluginConfig, null) +
230 getBuildForInterface(name);
Bharat saraswal97459962016-02-20 21:57:16 +0530231 }
232
233 /**
234 * Returns getter string.
235 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530236 * @param attr attribute info
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530237 * @param generatedJavaFiles generated java files
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530238 * @param pluginConfig plugin configurations
Bharat saraswal97459962016-02-20 21:57:16 +0530239 * @return getter string
240 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530241 public static String getGetterString(JavaAttributeInfo attr,
242 int generatedJavaFiles,
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530243 YangPluginConfig pluginConfig) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530244
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530245 String returnType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530246 String attributeName = attr.getAttributeName();
Vidyashree Ramab3670472016-08-06 15:49:56 +0530247 String appDataStructure = null;
248 if (attr.getCompilerAnnotation() != null) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530249 appDataStructure =
250 attr.getCompilerAnnotation().getYangAppDataStructure()
251 .getDataStructure().name();
Vidyashree Ramab3670472016-08-06 15:49:56 +0530252 }
Bharat saraswal8beac342016-08-04 02:00:03 +0530253 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530254 return generateForGetMethodWithAttribute(returnType) +
255 getGetterForInterface(attributeName, returnType,
256 attr.isListAttr(),
257 generatedJavaFiles,
258 attr.getCompilerAnnotation());
Bharat saraswal8beac342016-08-04 02:00:03 +0530259 }
Vinod Kumar S08710982016-03-03 19:55:30 +0530260
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530261 return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr(),
262 pluginConfig, appDataStructure) +
263 getGetterForInterface(attributeName, returnType,
264 attr.isListAttr(), generatedJavaFiles,
265 attr.getCompilerAnnotation());
Bharat saraswal97459962016-02-20 21:57:16 +0530266 }
267
268 /**
269 * Returns setter string.
270 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530271 * @param attr attribute info
272 * @param className java class name
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530273 * @param generatedJavaFiles generated java files
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530274 * @param pluginConfig plugin configurations
Bharat saraswal97459962016-02-20 21:57:16 +0530275 * @return setter string
276 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530277 public static String getSetterString(JavaAttributeInfo attr,
278 String className,
279 int generatedJavaFiles,
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530280 YangPluginConfig pluginConfig) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530281
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530282 String attrType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530283 String attributeName = attr.getAttributeName();
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530284 JavaDocGen.JavaDocType type;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530285 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530286 type = MANAGER_SETTER_METHOD;
287 } else {
288 type = SETTER_METHOD;
289 }
Bharat saraswal97459962016-02-20 21:57:16 +0530290
Vidyashree Ramab3670472016-08-06 15:49:56 +0530291 String appDataStructure = null;
292 if (attr.getCompilerAnnotation() != null) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530293 appDataStructure =
294 attr.getCompilerAnnotation().getYangAppDataStructure()
295 .getDataStructure().name();
Vidyashree Ramab3670472016-08-06 15:49:56 +0530296 }
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530297 return getJavaDoc(type, attributeName, attr.isListAttr(), pluginConfig,
298 appDataStructure) +
299 getSetterForInterface(attributeName, attrType, className,
300 attr.isListAttr(), generatedJavaFiles,
301 attr.getCompilerAnnotation());
Bharat saraswal97459962016-02-20 21:57:16 +0530302 }
303
304 /**
305 * Returns constructor method string.
306 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530307 * @param name class name
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530308 * @param pluginConfig plugin configurations
Bharat saraswal97459962016-02-20 21:57:16 +0530309 * @return constructor string
310 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530311 private static String getConstructorString(String name,
312 YangPluginConfig pluginConfig) {
Vidyashree Ramab3670472016-08-06 15:49:56 +0530313 return getJavaDoc(CONSTRUCTOR, name, false, pluginConfig, null);
Bharat saraswal97459962016-02-20 21:57:16 +0530314 }
315
316 /**
317 * Returns default constructor method string.
318 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530319 * @param name class name
Bharat saraswal022dae92016-03-04 20:08:09 +0530320 * @param modifierType modifier type
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530321 * @param pluginConfig plugin configurations
Bharat saraswal97459962016-02-20 21:57:16 +0530322 * @return default constructor string
323 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530324 public static String getDefaultConstructorString(String name,
325 String modifierType,
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530326 YangPluginConfig pluginConfig) {
Vidyashree Ramab3670472016-08-06 15:49:56 +0530327 return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false, pluginConfig, null)
328 + getDefaultConstructor(name, modifierType) + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530329 }
330
331 /**
332 * Returns check not null string.
333 *
334 * @param name attribute name
335 * @return check not null string
336 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530337 static String getCheckNotNull(String name) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530338 return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING +
339 OPEN_PARENTHESIS + name + COMMA + SPACE + name +
340 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal97459962016-02-20 21:57:16 +0530341 }
342
343 /**
344 * Returns build method string.
345 *
Bharat saraswal8beac342016-08-04 02:00:03 +0530346 * @param name class name
347 * @param isRootNode if root node
Bharat saraswal97459962016-02-20 21:57:16 +0530348 * @return build string
349 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530350 public static String getBuildString(String name, boolean isRootNode) {
351 if (isRootNode) {
352 return NEW_LINE + getBuild(name, true);
353 }
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530354 return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE +
355 getBuild(name, false);
Bharat saraswal97459962016-02-20 21:57:16 +0530356 }
357
358 /**
359 * Returns the getter method strings for class file.
360 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530361 * @param attr attribute info
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530362 * @param generatedJavaFiles for the type of java file being generated
Vinod Kumar S08710982016-03-03 19:55:30 +0530363 * @return getter method for class
Bharat saraswal97459962016-02-20 21:57:16 +0530364 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530365 public static String getGetterForClass(JavaAttributeInfo attr,
366 int generatedJavaFiles) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530367
Bharat saraswal8beac342016-08-04 02:00:03 +0530368 String attrQualifiedType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530369 String attributeName = attr.getAttributeName();
Bharat saraswal022dae92016-03-04 20:08:09 +0530370
371 if (!attr.isListAttr()) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530372 return getGetter(attrQualifiedType, attributeName,
373 generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530374 }
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530375 String attrParam = getListAttribute(attrQualifiedType,
376 attr.getCompilerAnnotation());
Vidyashree Ramab3670472016-08-06 15:49:56 +0530377 return getGetter(attrParam, attributeName, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530378 }
379
380 /**
381 * Returns getter for attribute.
382 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530383 * @param type return type
384 * @param name attribute name
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530385 * @param generatedJavaFiles generated java files
Bharat saraswal022dae92016-03-04 20:08:09 +0530386 * @return getter for attribute
387 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530388 static String getGetter(String type, String name, int generatedJavaFiles) {
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530389 String ret = parseTypeForReturnValue(type);
Bharat saraswal64e7e232016-07-14 23:33:55 +0530390 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530391 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE +
392 GET_METHOD_PREFIX + getCapitalCase(name) +
393 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
394 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
395 YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION +
396 RETURN + SPACE + ret + SEMI_COLAN + NEW_LINE +
397 FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530398 } else {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530399 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE +
400 name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
401 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
402 RETURN + SPACE + name + SEMI_COLAN + NEW_LINE +
403 FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530404 }
Bharat saraswal97459962016-02-20 21:57:16 +0530405 }
406
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530407 /*Provides string to return for type.*/
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530408 private static String parseTypeForReturnValue(String type) {
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530409 switch (type) {
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530410 case BYTE:
411 case INT:
412 case SHORT:
413 case LONG:
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +0530414 case DOUBLE:
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530415 return "0";
416 case BOOLEAN_DATA_TYPE:
417 return FALSE;
418 default:
419 return null;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530420 }
421 }
422
Bharat saraswal97459962016-02-20 21:57:16 +0530423 /**
424 * Returns the setter method strings for class file.
425 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530426 * @param attr attribute info
427 * @param className name of the class
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530428 * @param generatedJavaFiles generated java files
Vinod Kumar S08710982016-03-03 19:55:30 +0530429 * @return setter method for class
Bharat saraswal97459962016-02-20 21:57:16 +0530430 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530431 public static String getSetterForClass(JavaAttributeInfo attr,
432 String className,
433 int generatedJavaFiles) {
Bharat saraswal8beac342016-08-04 02:00:03 +0530434 String attrQualifiedType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530435 String attributeName = attr.getAttributeName();
Bharat saraswal8beac342016-08-04 02:00:03 +0530436 boolean isTypeNull = false;
437 if (attr.getAttributeType() == null) {
438 isTypeNull = true;
Bharat saraswal022dae92016-03-04 20:08:09 +0530439 }
Bharat saraswal8beac342016-08-04 02:00:03 +0530440 if (!attr.isListAttr()) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530441 return getSetter(className, attributeName, attrQualifiedType,
442 generatedJavaFiles, isTypeNull, false);
Bharat saraswal8beac342016-08-04 02:00:03 +0530443 }
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530444 String attrParam = getListAttribute(attrQualifiedType,
445 attr.getCompilerAnnotation());
446 return getSetter(className, attributeName, attrParam,
447 generatedJavaFiles, isTypeNull, true);
Bharat saraswal022dae92016-03-04 20:08:09 +0530448 }
449
450 /**
451 * Returns setter for attribute.
452 *
Bharat saraswal8beac342016-08-04 02:00:03 +0530453 * @param className class name
454 * @param name attribute name
455 * @param type return type
456 * @param isTypeNull if attribute type is null
457 * @param isList true if leaf-list
Bharat saraswal022dae92016-03-04 20:08:09 +0530458 * @return setter for attribute
459 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530460 private static String getSetter(String className, String name, String type,
461 int generatedJavaFiles,
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530462 boolean isTypeNull, boolean isList) {
Bharat saraswal64e7e232016-07-14 23:33:55 +0530463 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530464 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE +
465 SET_METHOD_PREFIX + getCapitalCase(name) +
466 OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS +
467 SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
468 EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE +
469 FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530470 } else if (generatedJavaFiles == GENERATE_EVENT_SUBJECT_CLASS) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530471 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE +
472 name + OPEN_PARENTHESIS + type + SPACE + name +
473 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
474 NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name +
475 SPACE + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE +
476 FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530477 } else {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530478 String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
479 className + BUILDER + SPACE + name + OPEN_PARENTHESIS +
480 type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
481 OPEN_CURLY_BRACKET;
Bharat saraswal8beac342016-08-04 02:00:03 +0530482 if (!isTypeNull && !isList) {
483 method = method + getValueLeafSetString(name);
484 } else {
485 method = method + EMPTY_STRING;
486 }
487 return method + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS +
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530488 PERIOD + name + SPACE + EQUAL + SPACE + name + SEMI_COLAN +
489 NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE +
490 THIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
491 CLOSE_CURLY_BRACKET;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530492 }
Bharat saraswal8beac342016-08-04 02:00:03 +0530493
494 }
495
496 //Returns value leaf flag setter.
497 private static String getValueLeafSetString(String name) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530498 return "\n getValueLeafFlags().set(LeafIdentifier." +
499 name.toUpperCase() + ".getLeafIndex());";
Bharat saraswal97459962016-02-20 21:57:16 +0530500 }
501
502 /**
Bharat saraswal022dae92016-03-04 20:08:09 +0530503 * Returns the setter method strings for class file.
504 *
505 * @param attr attribute info
506 * @return setter method for class
507 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530508 static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
Bharat saraswal022dae92016-03-04 20:08:09 +0530509
Bharat saraswal8beac342016-08-04 02:00:03 +0530510 String attrQualifiedType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530511 String attributeName = attr.getAttributeName();
Bharat saraswal8beac342016-08-04 02:00:03 +0530512 return getTypeDefSetter(attrQualifiedType, attributeName);
Bharat saraswal022dae92016-03-04 20:08:09 +0530513 }
514
515 /**
516 * Returns type def's setter for attribute.
517 *
518 * @param type data type
519 * @param name attribute name
520 * @return setter for type def's attribute
521 */
522 private static String getTypeDefSetter(String type, String name) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530523 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE +
524 SET_METHOD_PREFIX + getCapitalCase(name) + OPEN_PARENTHESIS +
525 type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE +
526 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
527 THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE +
528 SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
529 CLOSE_CURLY_BRACKET;
Bharat saraswal022dae92016-03-04 20:08:09 +0530530 }
531
532 /**
533 * Returns override string.
534 *
535 * @return override string
536 */
537 public static String getOverRideString() {
Bharat saraswal84366c52016-03-23 19:40:35 +0530538 return NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530539 }
540
541 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530542 * Returns the getter method strings for interface file.
543 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530544 * @param yangName name of the attribute
545 * @param returnType return type of attribute
546 * @param isList is list attribute
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530547 * @param generatedJavaFiles generated java files
Vidyashree Ramab3670472016-08-06 15:49:56 +0530548 * @param compilerAnnotation compiler annotation
Vinod Kumar S08710982016-03-03 19:55:30 +0530549 * @return getter method for interface
Bharat saraswal97459962016-02-20 21:57:16 +0530550 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530551 static String getGetterForInterface(String yangName, String returnType,
552 boolean isList,
553 int generatedJavaFiles,
554 YangCompilerAnnotation compilerAnnotation) {
Bharat saraswal022dae92016-03-04 20:08:09 +0530555 if (!isList) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530556 return getGetterInterfaceString(returnType, yangName,
557 generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530558 }
Vidyashree Ramab3670472016-08-06 15:49:56 +0530559 String listAttr = getListAttribute(returnType, compilerAnnotation);
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530560 return getGetterInterfaceString(listAttr, yangName, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530561 }
562
563 /**
564 * Returns getter for attribute in interface.
565 *
566 * @param returnType return type
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530567 * @param yangName attribute name
Bharat saraswal022dae92016-03-04 20:08:09 +0530568 * @return getter for interface
569 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530570 private static String getGetterInterfaceString(String returnType,
571 String yangName,
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530572 int generatedJavaFiles) {
Bharat saraswal64e7e232016-07-14 23:33:55 +0530573 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
Bharat saraswal8beac342016-08-04 02:00:03 +0530574 return getGetMethodWithArgument(returnType, yangName);
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530575 } else {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530576 return FOUR_SPACE_INDENTATION + returnType + SPACE +
577 yangName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
578 SEMI_COLAN;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530579 }
Bharat saraswal97459962016-02-20 21:57:16 +0530580 }
581
582 /**
583 * Returns the setter method strings for interface file.
584 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530585 * @param attrName name of the attribute
586 * @param attrType return type of attribute
587 * @param className name of the java class being generated
588 * @param isList is list attribute
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530589 * @param generatedJavaFiles generated java files
Vidyashree Ramab3670472016-08-06 15:49:56 +0530590 * @param compilerAnnotation compiler annotations
Vinod Kumar S08710982016-03-03 19:55:30 +0530591 * @return setter method for interface
Bharat saraswal97459962016-02-20 21:57:16 +0530592 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530593 static String getSetterForInterface(String attrName, String attrType,
594 String className,
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530595 boolean isList, int generatedJavaFiles,
596 YangCompilerAnnotation compilerAnnotation) {
Bharat saraswal022dae92016-03-04 20:08:09 +0530597 if (!isList) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530598 return getSetterInterfaceString(className, attrName, attrType,
599 generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530600 }
Vidyashree Ramab3670472016-08-06 15:49:56 +0530601
602 String listAttr = getListAttribute(attrType, compilerAnnotation);
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530603 return getSetterInterfaceString(className, attrName, listAttr,
604 generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530605 }
606
607 /**
608 * Returns setter string for interface.
609 *
610 * @param className class name
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530611 * @param attrName attribute name
612 * @param attrType attribute type
Bharat saraswal022dae92016-03-04 20:08:09 +0530613 * @return setter string
614 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530615 private static String getSetterInterfaceString(String className,
616 String attrName,
617 String attrType,
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530618 int generatedJavaFiles) {
Bharat saraswal64e7e232016-07-14 23:33:55 +0530619 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530620 return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX +
621 getCapitalCase(attrName) + OPEN_PARENTHESIS + attrType +
622 OP_PARAM + SPACE + attrName + CLOSE_PARENTHESIS +
623 SEMI_COLAN;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530624 } else {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530625 return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE +
626 attrName + OPEN_PARENTHESIS + attrType + SPACE + attrName +
627 CLOSE_PARENTHESIS + SEMI_COLAN;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530628 }
Bharat saraswal97459962016-02-20 21:57:16 +0530629 }
630
631 /**
Bharat saraswal022dae92016-03-04 20:08:09 +0530632 * Returns list string.
633 *
634 * @return list string
635 */
636 private static String getListString() {
Bharat saraswal84366c52016-03-23 19:40:35 +0530637 return LIST + DIAMOND_OPEN_BRACKET;
Bharat saraswal022dae92016-03-04 20:08:09 +0530638 }
639
640 /**
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530641 * Returns return type for attribute.
642 *
643 * @param attr attribute info
644 * @return return type
645 */
646 private static String getReturnType(JavaAttributeInfo attr) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530647 String returnType = EMPTY_STRING;
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530648 if (attr.isQualifiedName() &&
649 attr.getImportInfo().getPkgInfo() != null) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530650 returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530651 }
652 returnType = returnType + attr.getImportInfo().getClassInfo();
653 return returnType;
654 }
655
656 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530657 * Returns the build method strings for interface file.
658 *
Vinod Kumar S08710982016-03-03 19:55:30 +0530659 * @param yangName name of the interface
660 * @return build method for interface
Bharat saraswal97459962016-02-20 21:57:16 +0530661 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530662 static String getBuildForInterface(String yangName) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530663 return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD +
664 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal97459962016-02-20 21:57:16 +0530665 }
666
667 /**
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530668 * Returns constructor string for impl class.
669 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530670 * @param yangName class name
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530671 * @param pluginConfig plugin configurations
Bharat saraswal8beac342016-08-04 02:00:03 +0530672 * @param isRootNode if root node
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530673 * @return constructor string
674 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530675 static String getConstructorStart(String yangName,
676 YangPluginConfig pluginConfig,
677 boolean isRootNode) {
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530678 String javadoc = getConstructorString(yangName, pluginConfig);
Bharat saraswal8beac342016-08-04 02:00:03 +0530679
680 String returnType = getCapitalCase(DEFAULT) + yangName;
681 if (isRootNode) {
682 returnType = yangName + OP_PARAM;
683 }
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530684 String constructor =
685 FOUR_SPACE_INDENTATION + PROTECTED + SPACE + returnType +
686 OPEN_PARENTHESIS + yangName + BUILDER + SPACE +
687 BUILDER.toLowerCase() + OBJECT + CLOSE_PARENTHESIS +
688 SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530689 return javadoc + constructor;
690 }
691
692 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530693 * Returns the constructor strings for class file.
694 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530695 * @param attr attribute info
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530696 * @param generatedJavaFiles generated java files
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530697 * @param pluginConfig plugin configurations
Bharat saraswal97459962016-02-20 21:57:16 +0530698 * @return constructor for class
699 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530700 public static String getConstructor(JavaAttributeInfo attr,
701 int generatedJavaFiles,
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530702 YangPluginConfig pluginConfig) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530703
janani b703cfe42016-05-17 13:12:22 +0530704 String attributeName = attr.getAttributeName();
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530705 String constructor;
Bharat saraswal84366c52016-03-23 19:40:35 +0530706
Bharat saraswal64e7e232016-07-14 23:33:55 +0530707 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530708 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD +
709 getCamelCase(attributeName,
710 pluginConfig.getConflictResolver()) + SPACE +
711 EQUAL + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD +
712 GET_METHOD_PREFIX +
713 getCapitalCase(getCamelCase(attributeName, pluginConfig
714 .getConflictResolver())) + OPEN_PARENTHESIS +
715 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530716 } else {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530717 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD +
718 getCamelCase(attributeName,
719 pluginConfig.getConflictResolver()) + SPACE +
720 EQUAL + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD +
721 getCamelCase(attributeName,
722 pluginConfig.getConflictResolver()) +
723 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN +
724 NEW_LINE;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530725 }
Bharat saraswal022dae92016-03-04 20:08:09 +0530726 return constructor;
Bharat saraswal97459962016-02-20 21:57:16 +0530727 }
728
729 /**
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530730 * Returns the rpc strings for service interface.
731 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530732 * @param rpcName name of the rpc
733 * @param inputName name of input
734 * @param outputName name of output
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530735 * @param pluginConfig plugin configurations
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530736 * @return rpc method string
737 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530738 public static String getRpcServiceMethod(String rpcName, String inputName,
739 String outputName,
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530740 YangPluginConfig pluginConfig) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530741
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530742 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530743 if (!inputName.equals(EMPTY_STRING)) {
744 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswal250a7472016-05-12 13:16:57 +0530745 }
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530746 return FOUR_SPACE_INDENTATION + outputName + SPACE + rpcName +
747 OPEN_PARENTHESIS + inputName + CLOSE_PARENTHESIS + SEMI_COLAN;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530748 }
749
750 /**
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530751 * Returns the rpc strings for manager impl.
752 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530753 * @param rpcName name of the rpc
754 * @param inputName name of input
755 * @param outputName name of output
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530756 * @param pluginConfig plugin configurations
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530757 * @return rpc method string
758 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530759 public static String getRpcManagerMethod(String rpcName, String inputName,
760 String outputName,
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530761 YangPluginConfig pluginConfig) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530762
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530763 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530764 if (!inputName.equals(EMPTY_STRING)) {
765 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswal250a7472016-05-12 13:16:57 +0530766 }
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530767
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530768 String method =
769 getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
770 outputName + SPACE + rpcName + OPEN_PARENTHESIS +
771 inputName + CLOSE_PARENTHESIS + SPACE +
772 OPEN_CURLY_BRACKET + NEW_LINE +
773 EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530774 if (!outputName.contentEquals(VOID)) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530775 method += EIGHT_SPACE_INDENTATION + RETURN + SPACE +
776 parseTypeForReturnValue(outputName) + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530777 }
778 method += FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530779
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530780 return method;
781 }
782
783 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530784 * Returns the build method strings for class file.
785 *
Bharat saraswal8beac342016-08-04 02:00:03 +0530786 * @param yangName class name
787 * @param isRootNode if root node
Vinod Kumar S08710982016-03-03 19:55:30 +0530788 * @return build method string for class
Bharat saraswal97459962016-02-20 21:57:16 +0530789 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530790 static String getBuild(String yangName, boolean isRootNode) {
791 String type = getCapitalCase(DEFAULT) + yangName;
792 if (isRootNode) {
793 type = yangName + OP_PARAM;
794 }
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530795 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE +
796 BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
797 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
798 RETURN + SPACE + NEW + SPACE + type + OPEN_PARENTHESIS + THIS +
799 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE +
800 FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal97459962016-02-20 21:57:16 +0530801 }
802
803 /**
804 * Returns the Default constructor strings for class file.
805 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530806 * @param name name of the class
Bharat saraswal022dae92016-03-04 20:08:09 +0530807 * @param modifierType modifier type for default constructor
Bharat saraswal97459962016-02-20 21:57:16 +0530808 * @return Default constructor for class
809 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530810 private static String getDefaultConstructor(String name,
811 String modifierType) {
812 return FOUR_SPACE_INDENTATION + modifierType + SPACE + name +
813 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
814 OPEN_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION +
815 CLOSE_CURLY_BRACKET;
Bharat saraswal97459962016-02-20 21:57:16 +0530816 }
817
Bharat saraswal022dae92016-03-04 20:08:09 +0530818 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530819 * Returns to string method's open strings.
Bharat saraswal022dae92016-03-04 20:08:09 +0530820 *
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530821 * @return string method's open string
Bharat saraswal022dae92016-03-04 20:08:09 +0530822 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530823 static String getToStringMethodOpen() {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530824 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
825 STRING_DATA_TYPE + SPACE + TO + STRING_DATA_TYPE +
826 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
827 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
828 RETURN + GOOGLE_MORE_OBJECT_METHOD_STRING + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530829 }
830
831 /**
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530832 * Returns whether the data type is of primitive data type.
833 *
834 * @param dataType data type to be checked
835 * @return true, if data type can have primitive data type, false otherwise
836 */
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530837 static boolean isPrimitiveDataType(YangDataTypes dataType) {
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530838 return dataType == INT8
839 || dataType == INT16
840 || dataType == INT32
841 || dataType == INT64
842 || dataType == UINT8
843 || dataType == UINT16
844 || dataType == UINT32
845 || dataType == UINT64
846 || dataType == DECIMAL64
Bharat saraswal039f59c2016-07-14 21:57:13 +0530847 || dataType == BOOLEAN
848 || dataType == EMPTY;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530849
850 }
851
Bharat saraswal64e7e232016-07-14 23:33:55 +0530852
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530853 static String getIfConditionBegin(String indentation, String condition) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530854 return indentation + IF + SPACE + OPEN_PARENTHESIS + condition +
855 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
Bharat saraswal8beac342016-08-04 02:00:03 +0530856 }
857
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530858 static String getElseIfConditionBegin(String indentation,
859 String condition) {
860 return indentation + CLOSE_CURLY_BRACKET + SPACE + ELSE + SPACE +
861 getIfConditionBegin("", condition);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530862 }
863
864 static String getBlockEnd(String indentation) {
865 return indentation + CLOSE_CURLY_BRACKET + NEW_LINE;
866 }
867
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530868 static String getCollectionIteratorForLoopBegin(String indentation,
869 String loopVar,
870 String collection) {
871 return indentation + FOR + SPACE + OPEN_PARENTHESIS + loopVar + SPACE +
872 COLAN + SPACE + collection + CLOSE_PARENTHESIS + SPACE +
873 OPEN_CURLY_BRACKET + NEW_LINE;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530874 }
875
Bharat saraswal039f59c2016-07-14 21:57:13 +0530876 /*
Bharat saraswal8beac342016-08-04 02:00:03 +0530877 * Returns omit null value string.
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530878 *
879 * @return omit null value string
880 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530881 static String getOmitNullValueString() {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530882 return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING +
883 NEW_LINE;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530884 }
885
886 /**
887 * Returns to string method's close string.
Bharat saraswal022dae92016-03-04 20:08:09 +0530888 *
889 * @return to string method close string
890 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530891 static String getToStringMethodClose() {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530892 return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE +
893 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE +
894 FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530895 }
896
897 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530898 * Returns to string method for class.
Bharat saraswal022dae92016-03-04 20:08:09 +0530899 *
900 * @param attr attribute info
901 * @return to string method
902 */
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530903 public static String getToStringMethod(JavaAttributeInfo attr) {
904
janani b703cfe42016-05-17 13:12:22 +0530905 String attributeName = attr.getAttributeName();
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530906 return TWELVE_SPACE_INDENTATION + PERIOD + ADD_STRING +
907 OPEN_PARENTHESIS + QUOTES + attributeName + QUOTES + COMMA +
908 SPACE + attributeName + CLOSE_PARENTHESIS;
Bharat saraswal022dae92016-03-04 20:08:09 +0530909 }
910
911 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530912 * Returns from string method's open string.
913 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530914 * @param className name of the class
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530915 * @param pluginConfig plugin configurations
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530916 * @return from string method's open string
917 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530918 static String getFromStringMethodSignature(String className,
919 YangPluginConfig pluginConfig) {
920 return getJavaDoc(FROM_METHOD, className, false, pluginConfig, null) +
921 FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE +
922 className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS +
923 STRING_DATA_TYPE + SPACE + FROM_STRING_PARAM_NAME +
924 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530925 }
926
927 /**
928 * Return from string method's close string.
929 *
930 * @return from string method's close string
931 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530932 static String getFromStringMethodClose() {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530933 return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN +
934 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
935 NEW_LINE;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530936 }
937
938 /**
939 * Return from string method's body string.
940 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530941 * @param attr attribute info
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530942 * @param fromStringAttributeInfo attribute info for the from string wrapper
943 * type
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530944 * @return from string method's body string
945 */
946 public static String getFromStringMethod(JavaAttributeInfo attr,
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530947 JavaAttributeInfo fromStringAttributeInfo) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530948
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530949 return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE +
950 TWELVE_SPACE_INDENTATION +
951 getParsedSubString(attr, fromStringAttributeInfo) + NEW_LINE +
952 TWELVE_SPACE_INDENTATION +
953 getReturnOfSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION +
954 getCatchSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION +
955 CLOSE_CURLY_BRACKET;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530956 }
957
958 /**
959 * Returns sub string with try statement for union's from string method.
960 *
961 * @return sub string with try statement for union's from string method
962 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530963 private static String getTrySubString() {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530964 return TRY + SPACE + OPEN_CURLY_BRACKET;
965 }
966
967 /**
968 * Returns sub string with return statement for union's from string method.
969 *
970 * @return sub string with return statement for union's from string method
971 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530972 private static String getReturnOfSubString() {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530973 return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL +
974 CLOSE_PARENTHESIS + SEMI_COLAN;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530975 }
976
977 /**
978 * Returns sub string with catch statement for union's from string method.
979 *
980 * @return sub string with catch statement for union's from string method
981 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530982 private static String getCatchSubString() {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530983 return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS +
984 EXCEPTION + SPACE + EXCEPTION_VAR + CLOSE_PARENTHESIS + SPACE +
985 OPEN_CURLY_BRACKET;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530986 }
987
988 /**
989 * Returns sub string with parsed statement for union's from string method.
990 *
991 * @param attr attribute info
992 * @return sub string with parsed statement for union's from string method
993 */
994 private static String getParsedSubString(JavaAttributeInfo attr,
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530995 JavaAttributeInfo fromStringAttributeInfo) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530996
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530997 String targetDataType = getReturnType(attr);
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +0530998 if (fromStringAttributeInfo.getAttributeType().getDataType() == BITS) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530999 String lines =
1000 targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE +
1001 NEW + SPACE + targetDataType + OPEN_PARENTHESIS +
1002 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1003 lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE +
1004 EQUAL + SPACE + FROM_STRING_PARAM_NAME + PERIOD +
1005 REPLACE_STRING + OPEN_PARENTHESIS + SINGLE_QUOTE +
1006 OPEN_CURLY_BRACKET + SINGLE_QUOTE + COMMA + SPACE +
1007 SINGLE_QUOTE + SPACE + SINGLE_QUOTE + CLOSE_PARENTHESIS +
1008 SEMI_COLAN + NEW_LINE;
1009 lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE +
1010 EQUAL + SPACE + FROM_STRING_PARAM_NAME + PERIOD +
1011 REPLACE_STRING + OPEN_PARENTHESIS + SINGLE_QUOTE +
1012 CLOSE_CURLY_BRACKET + SINGLE_QUOTE + COMMA + SPACE +
1013 SINGLE_QUOTE + SPACE + SINGLE_QUOTE + CLOSE_PARENTHESIS +
1014 SEMI_COLAN + NEW_LINE;
1015 lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE +
1016 EQUAL + SPACE + FROM_STRING_PARAM_NAME + PERIOD +
1017 TRIM_STRING + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
1018 SEMI_COLAN + NEW_LINE;
1019 lines += TWELVE_SPACE_INDENTATION + STRING_DATA_TYPE +
1020 SQUARE_BRACKETS + SPACE + BITS_STRING_ARRAY_VAR + SPACE +
1021 EQUAL + SPACE + FROM_STRING_PARAM_NAME + PERIOD +
1022 SPLIT_STRING + OPEN_PARENTHESIS + QUOTES + COMMA + QUOTES +
1023 COMMA + SPACE + ZERO + CLOSE_PARENTHESIS + SEMI_COLAN +
1024 NEW_LINE;
1025 lines += TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS +
1026 STRING_DATA_TYPE + SPACE + BIT_TEMP_VAR + SPACE + COLON +
1027 SPACE + BITS_STRING_ARRAY_VAR + CLOSE_PARENTHESIS + SPACE +
1028 OPEN_CURLY_BRACKET + NEW_LINE;
1029 lines += SIXTEEN_SPACE_INDENTATION + BIT_TEMP_VAR + SPACE + EQUAL +
1030 SPACE + BIT_TEMP_VAR + PERIOD + TRIM_STRING +
1031 OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
1032 SEMI_COLAN + NEW_LINE;
1033 lines += SIXTEEN_SPACE_INDENTATION + TMP_VAL + PERIOD +
1034 SET_METHOD_PREFIX + OPEN_PARENTHESIS + INTEGER_WRAPPER +
1035 PERIOD + PARSE_INT + OPEN_PARENTHESIS + BIT_TEMP_VAR +
1036 CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN +
1037 NEW_LINE;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +05301038 lines += TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1039 return lines;
1040 } else if (attr.getAttributeType().getDataType() == BINARY) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301041 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE +
1042 BASE64 + PERIOD + GET_DECODER + OPEN_PARENTHESIS +
1043 CLOSE_PARENTHESIS + PERIOD + DECODE + OPEN_PARENTHESIS +
1044 FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +05301045 } else {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301046 String parseFromStringMethod =
1047 getParseFromStringMethod(targetDataType,
1048 fromStringAttributeInfo
1049 .getAttributeType());
1050 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE +
1051 parseFromStringMethod + OPEN_PARENTHESIS +
1052 FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +05301053 }
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301054 }
1055
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301056 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301057 * Returns hash code method open strings.
Bharat saraswal022dae92016-03-04 20:08:09 +05301058 *
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301059 * @return hash code method open string
Bharat saraswal022dae92016-03-04 20:08:09 +05301060 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301061 static String getHashCodeMethodOpen() {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301062 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
1063 INT + SPACE + HASH_CODE_STRING + OPEN_PARENTHESIS +
1064 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
1065 EIGHT_SPACE_INDENTATION + RETURN + SPACE + OBJECT_STRING +
1066 SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS;
Bharat saraswal022dae92016-03-04 20:08:09 +05301067 }
1068
1069 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301070 * Returns hash code methods close string.
Bharat saraswal022dae92016-03-04 20:08:09 +05301071 *
1072 * @param hashcodeString hash code string
1073 * @return to hash code method close string
1074 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301075 static String getHashCodeMethodClose(String hashcodeString) {
Bharat saraswal84366c52016-03-23 19:40:35 +05301076 hashcodeString = trimAtLast(hashcodeString, COMMA);
1077 hashcodeString = trimAtLast(hashcodeString, SPACE);
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301078 return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE +
1079 FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301080 }
1081
1082 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301083 * Returns hash code method for class.
Bharat saraswal022dae92016-03-04 20:08:09 +05301084 *
1085 * @param attr attribute info
1086 * @return hash code method
1087 */
Vinod Kumar S9f26ae52016-03-23 15:30:27 +05301088 public static String getHashCodeMethod(JavaAttributeInfo attr) {
janani b703cfe42016-05-17 13:12:22 +05301089 return attr.getAttributeName() + COMMA + SPACE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301090 }
1091
1092 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301093 * Returns equals method open strings.
Bharat saraswal022dae92016-03-04 20:08:09 +05301094 *
1095 * @param className class name
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301096 * @return equals method open string
Bharat saraswal022dae92016-03-04 20:08:09 +05301097 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301098 static String getEqualsMethodOpen(String className) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301099 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
1100 BOOLEAN_DATA_TYPE + SPACE + EQUALS_STRING + OPEN_PARENTHESIS +
1101 OBJECT_STRING + SPACE + OBJ + CLOSE_PARENTHESIS + SPACE +
1102 OPEN_CURLY_BRACKET + NEW_LINE +
1103 getEqualsMethodsCommonIfCondition() +
1104 getEqualsMethodsSpecificIfCondition(className);
Bharat saraswal022dae92016-03-04 20:08:09 +05301105 }
1106
1107 /**
1108 * Returns equal methods if condition string.
1109 *
1110 * @return if condition string
1111 */
1112 private static String getEqualsMethodsCommonIfCondition() {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301113 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + THIS +
1114 SPACE + EQUAL + EQUAL + SPACE + OBJ + CLOSE_PARENTHESIS +
1115 SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
1116 TWELVE_SPACE_INDENTATION + RETURN + SPACE + TRUE + SEMI_COLAN +
1117 NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
1118 NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301119 }
1120
1121 /**
1122 * Returns if condition for specific class object in equals method.
1123 *
1124 * @param className class name
1125 * @return if condition string
1126 */
1127 private static String getEqualsMethodsSpecificIfCondition(String className) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301128 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + OBJ +
1129 INSTANCE_OF + className + CLOSE_PARENTHESIS + SPACE +
1130 OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION +
1131 className + SPACE + OTHER + SPACE + EQUAL + SPACE +
1132 OPEN_PARENTHESIS + className + CLOSE_PARENTHESIS + SPACE + OBJ +
1133 SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN +
1134 NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301135 }
1136
1137 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301138 * Returns equals methods close string.
Bharat saraswal022dae92016-03-04 20:08:09 +05301139 *
1140 * @param equalMethodString equal method string
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301141 * @return equals method close string
Bharat saraswal022dae92016-03-04 20:08:09 +05301142 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301143 static String getEqualsMethodClose(String equalMethodString) {
Bharat saraswal84366c52016-03-23 19:40:35 +05301144 equalMethodString = trimAtLast(equalMethodString, AND);
1145 equalMethodString = trimAtLast(equalMethodString, AND);
1146 equalMethodString = trimAtLast(equalMethodString, SPACE);
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301147 equalMethodString =
1148 trimAtLast(equalMethodString, NEW_LINE) + SEMI_COLAN + NEW_LINE;
1149 return equalMethodString + EIGHT_SPACE_INDENTATION +
1150 CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
1151 RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE +
1152 FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301153 }
1154
1155 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301156 * Returns equals method for class.
Bharat saraswal022dae92016-03-04 20:08:09 +05301157 *
1158 * @param attr attribute info
1159 * @return equals method
1160 */
Vinod Kumar S9f26ae52016-03-23 15:30:27 +05301161 public static String getEqualsMethod(JavaAttributeInfo attr) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +05301162
janani b703cfe42016-05-17 13:12:22 +05301163 String attributeName = attr.getAttributeName();
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301164 return SIXTEEN_SPACE_INDENTATION + SPACE + OBJECT_STRING + SUFFIX_S +
1165 PERIOD + EQUALS_STRING + OPEN_PARENTHESIS + attributeName +
1166 COMMA + SPACE + OTHER + PERIOD + attributeName +
1167 CLOSE_PARENTHESIS + SPACE + AND + AND;
Bharat saraswal022dae92016-03-04 20:08:09 +05301168 }
1169
1170 /**
1171 * Returns of method string for class.
1172 *
1173 * @param name class name
1174 * @param attr attribute info
1175 * @return of method string
1176 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301177 static String getOfMethod(String name, JavaAttributeInfo attr) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301178 String attrQualifiedType = getReturnType(attr);
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301179 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name +
1180 SPACE + OF + OPEN_PARENTHESIS + attrQualifiedType + SPACE +
1181 VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
1182 NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW +
1183 SPACE + name + OPEN_PARENTHESIS + VALUE + CLOSE_PARENTHESIS +
1184 SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1185 CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301186 }
1187
Bharat saraswale2bc60d2016-04-16 02:28:25 +05301188 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301189 * Returns of method's string and java doc for special type.
1190 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301191 * @param attr attribute info
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301192 * @param generatedJavaClassName class name
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301193 * @param pluginConfig plugin configurations
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301194 * @return of method's string and java doc for special type
1195 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301196 public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr,
1197 String generatedJavaClassName,
Bharat saraswal2da23bf2016-08-25 15:28:39 +05301198 YangPluginConfig pluginConfig) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +05301199
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301200 String attrType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +05301201 String attrName = attr.getAttributeName();
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301202
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301203 return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " +
1204 attrName, false, pluginConfig, null) +
1205 getOfMethodString(attrType, generatedJavaClassName);
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301206 }
1207
1208 /**
1209 * Returns of method's string.
1210 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301211 * @param type data type
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301212 * @param className class name
1213 * @return of method's string
1214 */
1215 private static String getOfMethodString(String type, String className) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301216 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE +
1217 className + SPACE + OF + OPEN_PARENTHESIS + type + SPACE +
1218 VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
1219 NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW +
1220 SPACE + className + OPEN_PARENTHESIS + VALUE +
1221 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE +
1222 FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301223 }
1224
1225 /**
1226 * Returns string and java doc for constructor of type class.
1227 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301228 * @param attr attribute info
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301229 * @param generatedJavaClassName class name
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301230 * @param pluginConfig plugin configurations
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301231 * @return string and java doc for constructor of type class
1232 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301233 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr,
Bharat saraswal2da23bf2016-08-25 15:28:39 +05301234 String generatedJavaClassName,
1235 YangPluginConfig pluginConfig) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +05301236
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301237 String attrType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +05301238 String attrName = attr.getAttributeName();
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301239 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName +
1240 " for type " + attrName, false, pluginConfig, null) +
1241 getTypeConstructorString(attrType, attrName,
1242 generatedJavaClassName);
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301243 }
1244
1245 /**
Bharat saraswal64e7e232016-07-14 23:33:55 +05301246 * Returns string and java doc for constructor of type class.
1247 *
1248 * @param attr1 first attribute info
1249 * @param attr2 second attribute info
1250 * @param generatedJavaClassName class name
1251 * @param pluginConfig plugin config
1252 * @param type conflict validate type
Bharat saraswal8beac342016-08-04 02:00:03 +05301253 * @param addFirst whether int came first or uInt came first
Bharat saraswal64e7e232016-07-14 23:33:55 +05301254 * @return string and java doc for constructor of type class
1255 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301256 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr1,
1257 JavaAttributeInfo attr2,
1258 String generatedJavaClassName,
1259 YangPluginConfig pluginConfig,
1260 ValidatorTypeForUnionTypes type,
Bharat saraswal2da23bf2016-08-25 15:28:39 +05301261 boolean addFirst) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +05301262
Bharat saraswal64e7e232016-07-14 23:33:55 +05301263 String attrType = getReturnType(attr1);
1264 String attrName1 = "";
1265 String attrName2 = "";
1266 if (attr1 != null) {
1267 attrName1 = attr1.getAttributeName();
1268 }
1269 if (attr2 != null) {
1270 attrName2 = attr2.getAttributeName();
1271 }
1272
Vidyashree Ramab3670472016-08-06 15:49:56 +05301273 String appDataStructure = null;
Bharat saraswal2da23bf2016-08-25 15:28:39 +05301274 if (attr1 != null && attr1.getCompilerAnnotation() != null) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301275 appDataStructure =
1276 attr1.getCompilerAnnotation().getYangAppDataStructure()
1277 .getDataStructure().name();
Vidyashree Ramab3670472016-08-06 15:49:56 +05301278 }
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301279 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName +
1280 " for type " + attrName1, false,
1281 pluginConfig, appDataStructure) +
1282 getTypeConstructorString(attrType, attrName1,
1283 attrName2, generatedJavaClassName,
1284 type,
1285 addFirst);
Bharat saraswal64e7e232016-07-14 23:33:55 +05301286 }
1287
1288 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301289 * Returns type constructor string.
1290 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301291 * @param type data type
1292 * @param name attribute name
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301293 * @param className class name
1294 * @return type constructor string
1295 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301296 private static String getTypeConstructorString(String type, String name,
1297 String className) {
1298 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className +
1299 OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS +
1300 SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
1301 EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL +
1302 SPACE + VALUE + SEMI_COLAN + NEW_LINE +
1303 FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301304 }
1305
1306 /**
Bharat saraswal64e7e232016-07-14 23:33:55 +05301307 * Returns type constructor string.
1308 *
1309 * @param type data type
1310 * @param attr1 attribute attr1
1311 * @param className class attr1
1312 * @return type constructor string
1313 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301314 private static String getTypeConstructorString(String type, String attr1,
1315 String attr2,
1316 String className,
1317 ValidatorTypeForUnionTypes validatorType,
1318 boolean addInt) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +05301319
Bharat saraswal64e7e232016-07-14 23:33:55 +05301320 String constructor;
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301321 constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className +
1322 OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS +
1323 SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
Bharat saraswal64e7e232016-07-14 23:33:55 +05301324
1325 String name1;
1326 String name2;
1327 if (addInt) {
1328 name1 = attr1;
1329 name2 = attr2;
1330 } else {
1331 name1 = attr2;
1332 name2 = attr1;
1333 }
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301334 constructor = constructor +
1335 ifConditionForIntInTypeDefConstructor(validatorType, addInt) +
1336 TWELVE_SPACE_INDENTATION + THIS + PERIOD + name1 + SPACE +
1337 EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE +
1338 EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + SPACE + ELSE +
1339 SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
1340 TWELVE_SPACE_INDENTATION + THIS + PERIOD + name2 + SPACE +
1341 EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE +
1342 EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE +
1343 FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal64e7e232016-07-14 23:33:55 +05301344
1345 return constructor;
1346 }
1347
1348 /**
Bharat saraswal8beac342016-08-04 02:00:03 +05301349 * Returns interface of add augmentation.
1350 *
1351 * @return interface of add augmentation
1352 */
1353 static String getAddAugmentInfoMethodInterface() {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301354 return generateForAddAugmentation() + FOUR_SPACE_INDENTATION + VOID +
1355 SPACE +
1356 ADD_STRING + YANG_AUGMENTED_INFO + OPEN_PARENTHESIS +
1357 OBJECT_STRING + SPACE + VALUE + COMMA +
1358 SPACE + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
1359 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal8beac342016-08-04 02:00:03 +05301360 }
1361
1362 /**
Bharat saraswalaf413b82016-07-14 15:18:20 +05301363 * Returns implementation of add augmentation.
1364 *
1365 * @return implementation of add augmentation
1366 */
Bharat saraswal039f59c2016-07-14 21:57:13 +05301367 static String getAddAugmentInfoMethodImpl() {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301368 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
1369 VOID + SPACE +
1370 ADD_STRING + YANG_AUGMENTED_INFO + OPEN_PARENTHESIS +
1371 OBJECT_STRING + SPACE + VALUE + COMMA +
1372 SPACE + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
1373 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
1374 NEW_LINE + EIGHT_SPACE_INDENTATION +
1375 getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + PUT +
1376 OPEN_PARENTHESIS + CLASS + OBJECT_STRING + COMMA + SPACE +
1377 VALUE +
1378 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE +
1379 FOUR_SPACE_INDENTATION +
Bharat saraswalaf413b82016-07-14 15:18:20 +05301380 CLOSE_CURLY_BRACKET + NEW_LINE;
1381 }
1382
1383 /**
Bharat saraswal8beac342016-08-04 02:00:03 +05301384 * Returns interface of get YANG augment info.
Bharat saraswalaf413b82016-07-14 15:18:20 +05301385 *
Bharat saraswal8beac342016-08-04 02:00:03 +05301386 * @return interface of get YANG augment info
Bharat saraswalaf413b82016-07-14 15:18:20 +05301387 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301388 static String getYangAugmentInfoInterface() {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301389 return generateForGetAugmentation() + FOUR_SPACE_INDENTATION +
1390 OBJECT_STRING + SPACE +
1391 getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS +
1392 CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
Bharat saraswal8beac342016-08-04 02:00:03 +05301393 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1394 }
Bharat saraswalaf413b82016-07-14 15:18:20 +05301395
Bharat saraswal8beac342016-08-04 02:00:03 +05301396 /**
1397 * Returns implementation of get YANG augment info.
1398 *
1399 * @return implementation of get YANG augment info
1400 */
1401 static String getYangAugmentInfoImpl() {
1402 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
1403 OBJECT_STRING + SPACE +
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301404 getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS +
1405 CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
1406 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
1407 EIGHT_SPACE_INDENTATION +
1408 RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP +
1409 PERIOD + GET + OPEN_PARENTHESIS + CLASS +
1410 OBJECT_STRING + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE +
1411 FOUR_SPACE_INDENTATION +
Bharat saraswalaf413b82016-07-14 15:18:20 +05301412 CLOSE_CURLY_BRACKET + NEW_LINE;
1413 }
1414
1415 /**
Bharat saraswal8beac342016-08-04 02:00:03 +05301416 * Returns implementation of get YANG augment info.
Bharat saraswal039f59c2016-07-14 21:57:13 +05301417 *
Bharat saraswal8beac342016-08-04 02:00:03 +05301418 * @return implementation of get YANG augment info
Bharat saraswal039f59c2016-07-14 21:57:13 +05301419 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301420 static String getYangAugmentInfoMapInterface(YangPluginConfig pluginConfig) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301421 return getJavaDoc(GETTER_METHOD,
1422 getSmallCase(YANG_AUGMENTED_INFO) + MAP, false,
1423 pluginConfig, null) + FOUR_SPACE_INDENTATION + MAP +
1424 DIAMOND_OPEN_BRACKET +
1425 CLASS_STRING + DIAMOND_OPEN_BRACKET +
1426 QUESTION_MARK + DIAMOND_CLOSE_BRACKET + COMMA + SPACE +
1427 OBJECT_STRING + DIAMOND_CLOSE_BRACKET +
1428 SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP +
1429 OPEN_PARENTHESIS +
Bharat saraswal8beac342016-08-04 02:00:03 +05301430 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1431 }
1432
1433 /**
1434 * Returns implementation of get YANG augment info.
1435 *
1436 * @return implementation of get YANG augment info
1437 */
1438 static String getYangAugmentInfoMapImpl() {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301439 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
1440 MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING +
1441 DIAMOND_OPEN_BRACKET + QUESTION_MARK +
1442 DIAMOND_CLOSE_BRACKET + COMMA + SPACE + OBJECT_STRING +
1443 DIAMOND_CLOSE_BRACKET + SPACE +
Bharat saraswal8beac342016-08-04 02:00:03 +05301444 getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS +
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301445 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
1446 EIGHT_SPACE_INDENTATION +
1447 RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP +
1448 SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1449 CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal039f59c2016-07-14 21:57:13 +05301450 }
1451
1452 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +05301453 * Returns enum's constructor.
1454 *
1455 * @param className enum's class name
1456 * @return enum's constructor
1457 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301458 static String getEnumsConstructor(String className) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301459 return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT +
1460 SPACE + VALUE + COMMA + SPACE + STRING_DATA_TYPE + SPACE +
1461 STR_VAL + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
1462 NEW_LINE + EIGHT_SPACE_INDENTATION +
1463 getSmallCase(className) + SPACE + EQUAL + SPACE + VALUE +
1464 SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + SCHEMA_NAME +
1465 SPACE + EQUAL + SPACE + STR_VAL + SEMI_COLAN + NEW_LINE +
1466 FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal68fa0d12016-04-19 01:00:16 +05301467 }
Bharat saraswal250a7472016-05-12 13:16:57 +05301468
1469 /**
1470 * Returns of method for enum class.
1471 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301472 * @param className class name
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301473 * @param pluginConfig plugin configurations
Bharat saraswal250a7472016-05-12 13:16:57 +05301474 * @return of method
1475 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301476 static String getEnumsOfValueMethod(String className,
1477 YangEnumeration enumeration,
Bharat saraswal748fc3c2016-09-06 16:38:20 +05301478 YangPluginConfig pluginConfig) {
Bharat saraswal250a7472016-05-12 13:16:57 +05301479
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301480 String method =
1481 FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE +
1482 getCapitalCase(className) + SPACE + OF +
1483 OPEN_PARENTHESIS + INT + SPACE + VALUE +
1484 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
1485 NEW_LINE + EIGHT_SPACE_INDENTATION + SWITCH + SPACE +
1486 OPEN_PARENTHESIS + VALUE + CLOSE_PARENTHESIS + SPACE +
1487 OPEN_CURLY_BRACKET + NEW_LINE;
Bharat saraswal8beac342016-08-04 02:00:03 +05301488 int value;
Bharat saraswal748fc3c2016-09-06 16:38:20 +05301489 String str;
1490 for (YangEnum yangEnum : enumeration.getEnumSet()) {
1491 value = yangEnum.getValue();
1492 str = getEnumJavaAttribute(yangEnum.getNamedValue()).toUpperCase();
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301493 method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value +
1494 COLON + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN +
1495 SPACE + getCapitalCase(className) + PERIOD + str +
1496 SEMI_COLAN + NEW_LINE;
Bharat saraswal250a7472016-05-12 13:16:57 +05301497 }
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301498 method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLON +
1499 NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + NULL +
1500 SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION +
1501 CLOSE_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION +
1502 CLOSE_CURLY_BRACKET;
Bharat saraswal250a7472016-05-12 13:16:57 +05301503
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301504 return getJavaDoc(OF_METHOD, getCapitalCase(className) + " for value",
1505 false, pluginConfig, null) + method;
Bharat saraswal748fc3c2016-09-06 16:38:20 +05301506 }
1507
1508 /**
1509 * Returns of method with string value for enum class.
1510 *
1511 * @param enumName enum class name
1512 * @return of method with string value for enum class
1513 */
1514 static String getEnumValueOfSchemaNameMethod(String enumName,
1515 YangPluginConfig pluginConfig,
1516 YangEnumeration enumeration) {
1517
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301518 String method =
1519 FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE +
1520 getCapitalCase(enumName) + SPACE + OF +
1521 OPEN_PARENTHESIS + STRING_DATA_TYPE + SPACE + VALUE +
1522 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
1523 NEW_LINE + EIGHT_SPACE_INDENTATION + SWITCH + SPACE +
1524 OPEN_PARENTHESIS + VALUE + CLOSE_PARENTHESIS + SPACE +
1525 OPEN_CURLY_BRACKET + NEW_LINE;
Bharat saraswal748fc3c2016-09-06 16:38:20 +05301526 String value;
1527 for (YangEnum yangEnum : enumeration.getEnumSet()) {
1528
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301529 value = getEnumJavaAttribute(yangEnum.getNamedValue())
1530 .toUpperCase();
Bharat saraswal748fc3c2016-09-06 16:38:20 +05301531 method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + QUOTES +
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301532 yangEnum.getNamedValue() + QUOTES + COLON + NEW_LINE +
1533 SIXTEEN_SPACE_INDENTATION + RETURN + SPACE +
1534 getCapitalCase(enumName) + PERIOD + value + SEMI_COLAN +
1535 NEW_LINE;
Bharat saraswal748fc3c2016-09-06 16:38:20 +05301536 }
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301537 method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLON +
1538 NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + NULL +
1539 SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION +
1540 CLOSE_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION +
1541 CLOSE_CURLY_BRACKET;
Bharat saraswal748fc3c2016-09-06 16:38:20 +05301542
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301543 return getJavaDoc(OF_METHOD, getCapitalCase(enumName) + " for " +
1544 SCHEMA_NAME, false, pluginConfig, null) + method;
Bharat saraswal250a7472016-05-12 13:16:57 +05301545 }
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301546
1547 /**
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301548 * Returns from string method parsed string.
1549 *
1550 * @param targetDataType target data type
1551 * @param yangType YANG type
1552 * @return parsed string
1553 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301554 private static String getParseFromStringMethod(String targetDataType,
1555 YangType<?> yangType) {
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301556 YangDataTypes type = yangType.getDataType();
1557
1558 switch (type) {
1559 case INT8:
1560 return BYTE_WRAPPER + PERIOD + PARSE_BYTE;
1561 case INT16:
1562 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1563 case INT32:
1564 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1565 case INT64:
1566 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1567 case UINT8:
1568 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1569 case UINT16:
1570 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1571 case UINT32:
1572 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1573 case UINT64:
1574 return NEW + SPACE + BIG_INTEGER;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +05301575 case DECIMAL64:
1576 return NEW + SPACE + BIG_DECIMAL;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301577 case STRING:
Shankara-Huaweib7564772016-08-02 18:13:13 +05301578 case IDENTITYREF:
1579 return EMPTY_STRING;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301580 case EMPTY:
1581 case BOOLEAN:
1582 return BOOLEAN_WRAPPER + PERIOD + PARSE_BOOLEAN;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301583 case BITS:
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301584 case UNION:
1585 case ENUMERATION:
1586 case DERIVED:
1587 return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
1588 default:
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301589 throw new TranslatorException("given data type is not " +
1590 "supported. " +
1591 yangType.getDataTypeName() +
1592 " in " +
1593 yangType.getLineNumber() +
1594 " at " +
1595 yangType.getCharPosition() +
1596 " in " +
1597 yangType.getFileName());
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301598 }
1599 }
Bharat saraswald14cbe82016-07-14 13:26:18 +05301600
1601 /**
Bharat saraswalaf413b82016-07-14 15:18:20 +05301602 * Returns augmented data getter and setter methods for service class.
1603 *
1604 * @param parent parent node
1605 * @return augmented data getter and setter methods for service class
1606 */
Bharat saraswal039f59c2016-07-14 21:57:13 +05301607 static String getAugmentsDataMethodForService(YangNode parent) {
Bharat saraswalaf413b82016-07-14 15:18:20 +05301608 List<YangAtomicPath> targets = getSetOfNodeIdentifiers(parent);
1609 YangNode augmentedNode;
1610 String curNodeName;
1611 String method;
1612 StringBuilder methods = new StringBuilder();
1613 String parentName;
1614 String returnType;
Bharat saraswal64e7e232016-07-14 23:33:55 +05301615 YangNode methodNode;
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301616 YangPluginConfig pluginConfig =
1617 ((JavaFileInfoContainer) parent).getJavaFileInfo()
1618 .getPluginConfig();
Bharat saraswalaf413b82016-07-14 15:18:20 +05301619 for (YangAtomicPath nodeId : targets) {
Bharat saraswal039f59c2016-07-14 21:57:13 +05301620 augmentedNode = nodeId.getResolvedNode().getParent();
Bharat saraswal64e7e232016-07-14 23:33:55 +05301621 methodNode = nodeId.getResolvedNode();
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301622 if (((JavaFileInfoContainer) methodNode).getJavaFileInfo()
1623 .getJavaName() != null) {
1624 curNodeName =
1625 ((JavaFileInfoContainer) methodNode).getJavaFileInfo()
1626 .getJavaName();
Bharat saraswalaf413b82016-07-14 15:18:20 +05301627 } else {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301628 curNodeName = getCapitalCase(getCamelCase(methodNode.getName(),
1629 pluginConfig.getConflictResolver()));
Bharat saraswalaf413b82016-07-14 15:18:20 +05301630 }
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301631 returnType =
1632 getAugmentedClassNameForDataMethods(augmentedNode, parent);
1633 parentName = getParentNodeNameForDataMethods(augmentedNode,
1634 pluginConfig);
1635 method = generateForGetMethodWithAttribute(returnType) +
1636 getGetMethodWithArgument(returnType, AUGMENTED +
1637 parentName + getCapitalCase(curNodeName)) + NEW_LINE;
Bharat saraswalaf413b82016-07-14 15:18:20 +05301638 methods.append(method);
1639
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301640 method = getJavaDoc(MANAGER_SETTER_METHOD,
1641 AUGMENTED + getCapitalCase(parentName) +
1642 getCapitalCase(curNodeName), false,
1643 pluginConfig, null) +
Bharat saraswalaf413b82016-07-14 15:18:20 +05301644 getSetterForInterface(getSmallCase(AUGMENTED) + parentName +
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301645 getCapitalCase(curNodeName),
1646 returnType, parentName, false,
1647 GENERATE_SERVICE_AND_MANAGER, null) +
1648 NEW_LINE;
Bharat saraswalaf413b82016-07-14 15:18:20 +05301649 methods.append(method);
1650 }
1651 return methods.toString();
1652 }
1653
1654 /**
Bharat saraswal64e7e232016-07-14 23:33:55 +05301655 * Returns validator method for range in union class.
1656 *
1657 * @param type type
1658 * @return validator method for range in union class
1659 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301660 static String getRangeValidatorMethodForUnion(String type) {
Bharat saraswal64e7e232016-07-14 23:33:55 +05301661 String newType;
1662 if (type.contentEquals(BIG_INTEGER)) {
1663 newType = LONG;
1664 } else {
1665 newType = INT;
1666 }
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301667 String method = generateForValidatorMethod() + FOUR_SPACE_INDENTATION +
1668 PRIVATE + SPACE + BOOLEAN_DATA_TYPE + SPACE + VALIDATE_RANGE +
1669 OPEN_PARENTHESIS + type + SPACE + MIN_RANGE + COMMA + SPACE +
1670 type + SPACE + MAX_RANGE + COMMA + SPACE + newType + SPACE +
1671 VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
1672 NEW_LINE;
Bharat saraswal64e7e232016-07-14 23:33:55 +05301673 if (type.contentEquals(BIG_INTEGER)) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301674 method = method + EIGHT_SPACE_INDENTATION + BIG_INTEGER + SPACE +
1675 getSmallCase(BIG_INTEGER) + SPACE + EQUAL + SPACE + NEW +
1676 SPACE + BIG_INTEGER + OPEN_PARENTHESIS + QUOTES + SPACE +
1677 QUOTES + SPACE + ADD + SPACE + VALUE + CLOSE_PARENTHESIS +
1678 SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN +
1679 SPACE + getSmallCase(BIG_INTEGER) + PERIOD + "compareTo" +
1680 OPEN_PARENTHESIS + MIN_RANGE + CLOSE_PARENTHESIS + SPACE +
1681 EQUAL + EQUAL + " 1" + SPACE + AND +
1682 AND + SPACE + getSmallCase(BIG_INTEGER) + PERIOD +
1683 "compareTo" + OPEN_PARENTHESIS + MAX_RANGE +
1684 CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + " 1" +
1685 SEMI_COLAN + NEW_LINE;
Bharat saraswal64e7e232016-07-14 23:33:55 +05301686 } else {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301687 method = method + EIGHT_SPACE_INDENTATION + RETURN + SPACE + VALUE +
1688 SPACE + DIAMOND_CLOSE_BRACKET + EQUAL + SPACE + MIN_RANGE +
1689 SPACE + AND + AND + SPACE + VALUE + SPACE +
1690 DIAMOND_OPEN_BRACKET + EQUAL + SPACE + MAX_RANGE +
1691 SEMI_COLAN + NEW_LINE;
Bharat saraswal64e7e232016-07-14 23:33:55 +05301692 }
1693 return method + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1694 }
1695
1696 /**
1697 * Returns if condition string for typedef constructor.
1698 *
1699 * @param type type of conflict
1700 * @param addFirst true int/long need to be added first
1701 * @return if condition string for typedef constructor
1702 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301703 private static String ifConditionForIntInTypeDefConstructor(ValidatorTypeForUnionTypes type,
1704 boolean addFirst) {
1705 String condition =
1706 EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS +
1707 VALIDATE_RANGE + OPEN_PARENTHESIS;
Bharat saraswal64e7e232016-07-14 23:33:55 +05301708
1709 if (type == INT_TYPE_CONFLICT) {
1710 if (addFirst) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301711 condition = condition + INT_MIN_RANGE + COMMA + SPACE +
1712 INT_MAX_RANGE + COMMA + SPACE + VALUE;
Bharat saraswal64e7e232016-07-14 23:33:55 +05301713 } else {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301714 condition = condition + UINT_MIN_RANGE + COMMA + SPACE +
1715 UINT_MAX_RANGE + COMMA + SPACE + VALUE;
Bharat saraswal64e7e232016-07-14 23:33:55 +05301716 }
Bharat saraswal2da23bf2016-08-25 15:28:39 +05301717 } else if (type == SHORT_TYPE_CONFLICT) {
1718 if (addFirst) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301719 condition = condition + SHORT_MIN_RANGE + COMMA + SPACE +
1720 SHORT_MAX_RANGE + COMMA + SPACE + VALUE;
Bharat saraswal2da23bf2016-08-25 15:28:39 +05301721 } else {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301722 condition = condition + UINT8_MIN_RANGE + COMMA + SPACE +
1723 UINT8_MAX_RANGE + COMMA + SPACE + VALUE;
Bharat saraswal2da23bf2016-08-25 15:28:39 +05301724 }
Bharat saraswal64e7e232016-07-14 23:33:55 +05301725 } else {
1726 if (addFirst) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301727 condition = condition + LONG_MIN_RANGE + COMMA + SPACE +
1728 LONG_MAX_RANGE + COMMA + SPACE + VALUE;
Bharat saraswal64e7e232016-07-14 23:33:55 +05301729 } else {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301730 condition = condition + ULONG_MIN_RANGE + COMMA + SPACE +
1731 ULONG_MAX_RANGE + COMMA + SPACE + VALUE;
Bharat saraswal64e7e232016-07-14 23:33:55 +05301732 }
1733 }
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301734 return condition + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
1735 OPEN_CURLY_BRACKET + NEW_LINE;
Bharat saraswal64e7e232016-07-14 23:33:55 +05301736 }
1737
Bharat saraswal8beac342016-08-04 02:00:03 +05301738 //Get method with arguments.
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301739 private static String getGetMethodWithArgument(String returnType,
1740 String yangName) {
1741 return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX +
1742 getCapitalCase(yangName) + OPEN_PARENTHESIS + returnType +
1743 OP_PARAM + SPACE + getSmallCase(returnType) +
1744 CLOSE_PARENTHESIS + SEMI_COLAN;
Bharat saraswal8beac342016-08-04 02:00:03 +05301745 }
Bharat saraswal64e7e232016-07-14 23:33:55 +05301746
Bharat saraswal8beac342016-08-04 02:00:03 +05301747 /**
1748 * Returns add to list method interface.
1749 *
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +05301750 * @param attr java attribute
1751 * @param className name of the class
Bharat saraswal8beac342016-08-04 02:00:03 +05301752 * @return add to list method interface
1753 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301754 public static String getAddToListMethodInterface(JavaAttributeInfo attr,
1755 String className) {
1756 return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE +
1757 ADD_STRING + getCapitalCase(TO) +
1758 getCapitalCase(attr.getAttributeName()) + OPEN_PARENTHESIS +
1759 getReturnType(attr) + SPACE +
Bharat saraswal8beac342016-08-04 02:00:03 +05301760 VALUE + CLOSE_PARENTHESIS + SEMI_COLAN;
1761 }
1762
1763 /**
1764 * Returns add to list method impl.
1765 *
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +05301766 * @param attr java attribute
1767 * @param generatedJavaClassName class name
1768 * @param isRoot is root
Bharat saraswal8beac342016-08-04 02:00:03 +05301769 * @return add to list method impl
1770 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301771 public static String getAddToListMethodImpl(JavaAttributeInfo attr,
1772 String generatedJavaClassName,
1773 boolean isRoot) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +05301774 String retString = "";
1775 if (!isRoot) {
1776 retString = getOverRideString();
1777 }
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301778 return retString + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
1779 generatedJavaClassName + BUILDER + SPACE + ADD_STRING +
1780 getCapitalCase(TO) + getCapitalCase(attr.getAttributeName()) +
1781 OPEN_PARENTHESIS + getReturnType(attr) + SPACE + VALUE +
1782 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
1783 EIGHT_SPACE_INDENTATION + attr.getAttributeName() +
1784 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + ADD_STRING +
1785 OPEN_PARENTHESIS + VALUE + CLOSE_PARENTHESIS + SEMI_COLAN +
1786 NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + THIS +
1787 SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1788 CLOSE_CURLY_BRACKET;
Bharat saraswal8beac342016-08-04 02:00:03 +05301789 }
1790
1791 /**
1792 * Returns builder method for class.
1793 *
1794 * @param name name of class
1795 * @return builder method for class
1796 */
1797 static String builderMethod(String name) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301798 return NEW_LINE + generateForBuilderMethod(name) +
1799 FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE +
1800 name + BUILDER + SPACE + getSmallCase(BUILDER) +
1801 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
1802 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
1803 RETURN + SPACE + NEW + SPACE + name +
1804 BUILDER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN +
1805 NEW_LINE + FOUR_SPACE_INDENTATION +
Bharat saraswal8beac342016-08-04 02:00:03 +05301806 CLOSE_CURLY_BRACKET;
1807 }
1808
1809 /**
1810 * Returns is filter content match interface.
1811 *
1812 * @param name name of node
1813 * @return is filter content match interface
1814 */
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +05301815 static String processSubtreeFilteringInterface(String name) {
Bharat saraswal8beac342016-08-04 02:00:03 +05301816 String method = " /**\n" +
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301817 " * Checks if the passed " + name +
1818 " maps the content match query condition.\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301819 " *\n" +
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301820 " * @param " + getSmallCase(name) + SPACE +
1821 getSmallCase(name) + SPACE + "being passed to check" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301822 " for" +
1823 " content match\n" +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +05301824 " * @param isSelectAllSchemaChild is select all schema child\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301825 " * @return match result\n" +
1826 " */\n";
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301827 return method + FOUR_SPACE_INDENTATION + name + SPACE +
1828 PROCESS_SUBTREE_FILTERING + OPEN_PARENTHESIS +
1829 name + SPACE + getSmallCase(name) + COMMA + SPACE +
1830 BOOLEAN_DATA_TYPE + SPACE + "isSelectAllSchemaChild" +
1831 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal8beac342016-08-04 02:00:03 +05301832 }
1833
1834 /**
1835 * Returns is value set interface.
1836 *
1837 * @return is value set interface
1838 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301839 static String isLeafValueSetInterface() {
Bharat saraswal8beac342016-08-04 02:00:03 +05301840 String method = " /**\n" +
1841 " * Checks if the leaf value is set.\n" +
1842 " *\n" +
1843 " * @param leaf leaf whose value status needs to checked\n" +
1844 " * @return result of leaf value set in object\n" +
1845 " */\n";
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301846 return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE +
1847 VALUE_LEAF_SET + OPEN_PARENTHESIS + LEAF_IDENTIFIER + SPACE +
1848 "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal8beac342016-08-04 02:00:03 +05301849 }
1850
1851 /**
1852 * Returns is select leaf set interface.
1853 *
1854 * @return is select leaf set interface
1855 */
1856 static String isSelectLeafSetInterface() {
1857 String method = " /**\n" +
1858 " * Checks if the leaf is set to be a selected leaf.\n" +
1859 " *\n" +
1860 " * @param leaf if leaf needs to be selected\n" +
1861 " * @return result of leaf value set in object\n" +
1862 " */\n";
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301863 return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE +
1864 IS_SELECT_LEAF + OPEN_PARENTHESIS + LEAF_IDENTIFIER + SPACE +
1865 "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal8beac342016-08-04 02:00:03 +05301866 }
1867
1868 /**
1869 * Returns set select leaf set interface.
1870 *
1871 * @param name node name
1872 * @return set select leaf set interface
1873 */
1874 static String setSelectLeafSetInterface(String name) {
1875 String method = " /**\n" +
1876 " * Set a leaf to be selected.\n" +
1877 " *\n" +
1878 " * @param leaf leaf needs to be selected\n" +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +05301879 " * @return builder object for select leaf\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301880 " */\n";
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301881 return method + FOUR_SPACE_INDENTATION + name + BUILDER + SPACE +
1882 SET_SELECT_LEAF + OPEN_PARENTHESIS + LEAF_IDENTIFIER + SPACE +
1883 "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal8beac342016-08-04 02:00:03 +05301884 }
1885
1886 /**
1887 * Returns leaf identifier interface enum signature.
1888 *
1889 * @param name name of node
1890 * @return leaf identifier interface enum signature
1891 */
1892 static String getInterfaceLeafIdEnumSignature(String name) {
1893 String start = " /**\n" +
1894 " * Identify the leaf of " + name + PERIOD + NEW_LINE +
1895 " */\n";
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301896 return start + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + ENUM + SPACE +
1897 LEAF_IDENTIFIER + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
Bharat saraswal8beac342016-08-04 02:00:03 +05301898 }
1899
1900 /**
1901 * Returns interface leaf identifier enum method.
1902 *
1903 * @return interface leaf identifier enum method
1904 */
1905 static String getInterfaceLeafIdEnumMethods() {
1906 return " private int leafIndex;\n" +
1907 "\n" +
1908 " public int getLeafIndex() {\n" +
1909 " return leafIndex;\n" +
1910 " }\n" +
1911 "\n" +
1912 " LeafIdentifier(int value) {\n" +
1913 " this.leafIndex = value;\n" +
1914 " }\n" +
1915 " }\n";
1916 }
1917
1918 /**
1919 * Returns getter methods for operation attributes.
1920 *
1921 * @return getter methods for operation attributes
1922 */
1923 static String getOperationAttributesGetters() {
1924 return "\n" +
1925 " /**\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301926 " * Returns the valueLeafFlags.\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301927 " *\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301928 " * @return value of valueLeafFlags\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301929 " */\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301930 " public BitSet getValueLeafFlags() {\n" +
1931 " return valueLeafFlags;\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301932 " }\n" +
1933 "\n" +
1934 " /**\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301935 " * Returns the selectLeafFlags.\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301936 " *\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301937 " * @return value of selectLeafFlags\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301938 " */\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301939 " public BitSet getSelectLeafFlags() {\n" +
1940 " return selectLeafFlags;\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301941 " }\n" +
1942 "\n";
1943 }
1944
1945 /**
Bharat saraswal8beac342016-08-04 02:00:03 +05301946 * Returns getters for value and select leaf.
1947 *
1948 * @return getters for value and select leaf
1949 */
1950 static String getGettersForValueAndSelectLeaf() {
1951 return "\n" +
1952 " @Override\n" +
1953 " public boolean isLeafValueSet(LeafIdentifier leaf) {\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301954 " return getValueLeafFlags().get(leaf.getLeafIndex());\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301955 " }\n" +
1956 "\n" +
1957 " @Override\n" +
1958 " public boolean isSelectLeaf(LeafIdentifier leaf) {\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301959 " return getSelectLeafFlags().get(leaf.getLeafIndex());\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301960 " }\n";
1961 }
1962
1963 /**
Bharat saraswal8beac342016-08-04 02:00:03 +05301964 * Returns setter for select leaf.
1965 *
1966 * @param name name of node
1967 * @param isRootNode if root node
1968 * @return setter for select leaf
1969 */
1970 static String getSetterForSelectLeaf(String name, boolean isRootNode) {
1971 String append = OVERRIDE;
1972 if (isRootNode) {
1973 append = EMPTY_STRING;
1974 }
1975 return "\n" +
1976 " " + append + "\n" +
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301977 " public " + name + BUILDER +
1978 " selectLeaf(LeafIdentifier leaf) {\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301979 " getSelectLeafFlags().set(leaf.getLeafIndex());\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301980 " return this;\n" +
1981 " }\n";
1982 }
Vidyashree Ramab3670472016-08-06 15:49:56 +05301983
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301984 private static String getListAttribute(String attrType,
1985 YangCompilerAnnotation compilerAnnotation) {
Vidyashree Ramab3670472016-08-06 15:49:56 +05301986 String listAttr;
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301987 if (compilerAnnotation != null &&
1988 compilerAnnotation.getYangAppDataStructure() != null) {
1989 switch (compilerAnnotation.getYangAppDataStructure()
1990 .getDataStructure()) {
Vidyashree Ramab3670472016-08-06 15:49:56 +05301991 case QUEUE: {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301992 listAttr = QUEUE + DIAMOND_OPEN_BRACKET + attrType +
1993 DIAMOND_CLOSE_BRACKET;
Vidyashree Ramab3670472016-08-06 15:49:56 +05301994 break;
1995 }
1996 case SET: {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05301997 listAttr = SET + DIAMOND_OPEN_BRACKET + attrType +
1998 DIAMOND_CLOSE_BRACKET;
Vidyashree Ramab3670472016-08-06 15:49:56 +05301999 break;
2000 }
2001 case LIST: {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05302002 listAttr = getListString() + attrType +
2003 DIAMOND_CLOSE_BRACKET;
Vidyashree Ramab3670472016-08-06 15:49:56 +05302004 break;
2005 }
2006 default: {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +05302007 listAttr = getListString() + attrType +
2008 DIAMOND_CLOSE_BRACKET;
Vidyashree Ramab3670472016-08-06 15:49:56 +05302009 }
2010 }
2011 } else {
2012 listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
2013 }
2014 return listAttr;
2015 }
Bharat saraswal97459962016-02-20 21:57:16 +05302016}