blob: 20cb3e831595fb212eb3fc467eac18421806ac04 [file] [log] [blame]
Bharat saraswal97459962016-02-20 21:57:16 +05301/*
Brian O'Connor0f7908b2016-04-09 01:19:45 -07002 * Copyright 2016-present Open Networking Laboratory
Bharat saraswal97459962016-02-20 21:57:16 +05303 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.onosproject.yangutils.translator.tojava.utils;
18
Bharat saraswal250a7472016-05-12 13:16:57 +053019import java.util.List;
20import java.util.Map;
Bharat saraswale304c252016-08-16 20:56:20 +053021
Bharat saraswal039f59c2016-07-14 21:57:13 +053022import org.onosproject.yangutils.datamodel.YangAtomicPath;
Bharat saraswale50edca2016-08-05 01:58:25 +053023import org.onosproject.yangutils.datamodel.YangAugment;
Bharat saraswal039f59c2016-07-14 21:57:13 +053024import org.onosproject.yangutils.datamodel.YangAugmentableNode;
Bharat saraswale50edca2016-08-05 01:58:25 +053025import org.onosproject.yangutils.datamodel.YangCase;
26import org.onosproject.yangutils.datamodel.YangChoice;
Gaurav Agrawal8a147522016-08-10 13:43:01 +053027import org.onosproject.yangutils.datamodel.YangCompilerAnnotation;
Bharat saraswal64e7e232016-07-14 23:33:55 +053028import org.onosproject.yangutils.datamodel.YangLeafRef;
Bharat saraswalaf413b82016-07-14 15:18:20 +053029import org.onosproject.yangutils.datamodel.YangNode;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +053030import org.onosproject.yangutils.datamodel.YangType;
janani b0e4e8ae2016-07-13 21:06:41 +053031import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +053032import org.onosproject.yangutils.translator.exception.TranslatorException;
Vinod Kumar S9f26ae52016-03-23 15:30:27 +053033import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
Bharat saraswal039f59c2016-07-14 21:57:13 +053034import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
Gaurav Agrawal8a147522016-08-10 13:43:01 +053035import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
36import org.onosproject.yangutils.utils.io.YangPluginConfig;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +053037import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
Bharat saraswal84366c52016-03-23 19:40:35 +053038
Bharat saraswal039f59c2016-07-14 21:57:13 +053039import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BINARY;
40import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BITS;
41import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BOOLEAN;
Shankara-Huaweia1039e52016-07-14 16:53:09 +053042import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DECIMAL64;
Bharat saraswal039f59c2016-07-14 21:57:13 +053043import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.EMPTY;
Shankara-Huaweia1039e52016-07-14 16:53:09 +053044import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT16;
45import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT32;
46import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT64;
Bharat saraswal039f59c2016-07-14 21:57:13 +053047import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT8;
Bharat saraswal64e7e232016-07-14 23:33:55 +053048import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.LEAFREF;
Shankara-Huaweia1039e52016-07-14 16:53:09 +053049import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT16;
Shankara-Huaweia1039e52016-07-14 16:53:09 +053050import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT32;
Bharat saraswal039f59c2016-07-14 21:57:13 +053051import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT64;
52import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT8;
Bharat saraswal715d3fc2016-05-17 19:59:16 +053053import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +053054import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
Bharat saraswal039f59c2016-07-14 21:57:13 +053055import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getAugmentedClassNameForDataMethods;
56import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getParentNodeNameForDataMethods;
57import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getSetOfNodeIdentifiers;
Bharat saraswal64e7e232016-07-14 23:33:55 +053058import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.INT_TYPE_CONFLICT;
Bharat saraswal64e7e232016-07-14 23:33:55 +053059import static org.onosproject.yangutils.utils.UtilConstants.ADD;
Bharat saraswal84366c52016-03-23 19:40:35 +053060import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
61import static org.onosproject.yangutils.utils.UtilConstants.AND;
Bharat saraswal039f59c2016-07-14 21:57:13 +053062import static org.onosproject.yangutils.utils.UtilConstants.APP_INSTANCE;
Bharat saraswalaf413b82016-07-14 15:18:20 +053063import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +053064import static org.onosproject.yangutils.utils.UtilConstants.BASE64;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +053065import static org.onosproject.yangutils.utils.UtilConstants.BIG_DECIMAL;
Bharat saraswald14cbe82016-07-14 13:26:18 +053066import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
Bharat saraswal84366c52016-03-23 19:40:35 +053067import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +053068import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
Bharat saraswal8beac342016-08-04 02:00:03 +053069import static org.onosproject.yangutils.utils.UtilConstants.BREAK;
Bharat saraswal84366c52016-03-23 19:40:35 +053070import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
71import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +053072import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +053073import static org.onosproject.yangutils.utils.UtilConstants.BYTE_WRAPPER;
Bharat saraswal250a7472016-05-12 13:16:57 +053074import static org.onosproject.yangutils.utils.UtilConstants.CASE;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +053075import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
Bharat saraswal84366c52016-03-23 19:40:35 +053076import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
Bharat saraswalaf413b82016-07-14 15:18:20 +053077import static org.onosproject.yangutils.utils.UtilConstants.CLASS;
78import static org.onosproject.yangutils.utils.UtilConstants.CLASS_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +053079import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
80import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
Bharat saraswal039f59c2016-07-14 21:57:13 +053081import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +053082import static org.onosproject.yangutils.utils.UtilConstants.COLON;
Bharat saraswal84366c52016-03-23 19:40:35 +053083import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +053084import static org.onosproject.yangutils.utils.UtilConstants.DECODE;
Bharat saraswal250a7472016-05-12 13:16:57 +053085import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
Bharat saraswal84366c52016-03-23 19:40:35 +053086import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
87import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +053088import static org.onosproject.yangutils.utils.UtilConstants.DOUBLE;
Bharat saraswal84366c52016-03-23 19:40:35 +053089import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
Bharat saraswal64e7e232016-07-14 23:33:55 +053090import static org.onosproject.yangutils.utils.UtilConstants.ELSE;
Bharat saraswal84366c52016-03-23 19:40:35 +053091import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
Bharat saraswal8beac342016-08-04 02:00:03 +053092import static org.onosproject.yangutils.utils.UtilConstants.ENUM;
Bharat saraswal84366c52016-03-23 19:40:35 +053093import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
94import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +053095import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
96import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
Bharat saraswal84366c52016-03-23 19:40:35 +053097import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
Bharat saraswal039f59c2016-07-14 21:57:13 +053098import static org.onosproject.yangutils.utils.UtilConstants.FILTER_CONTENT_MATCH;
Bharat saraswal8beac342016-08-04 02:00:03 +053099import static org.onosproject.yangutils.utils.UtilConstants.FLAG;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +0530100import static org.onosproject.yangutils.utils.UtilConstants.FOR;
Bharat saraswal84366c52016-03-23 19:40:35 +0530101import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530102import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
103import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530104import static org.onosproject.yangutils.utils.UtilConstants.GET;
Bharat saraswal8beac342016-08-04 02:00:03 +0530105import static org.onosproject.yangutils.utils.UtilConstants.GET_CLASS;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +0530106import static org.onosproject.yangutils.utils.UtilConstants.GET_DECODER;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530107import static org.onosproject.yangutils.utils.UtilConstants.GET_FILTER_LEAF;
Bharat saraswal8beac342016-08-04 02:00:03 +0530108import static org.onosproject.yangutils.utils.UtilConstants.GET_LEAF_INDEX;
109import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD;
Bharat saraswal84366c52016-03-23 19:40:35 +0530110import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
111import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
112import static org.onosproject.yangutils.utils.UtilConstants.HASH;
113import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
114import static org.onosproject.yangutils.utils.UtilConstants.IF;
Bharat saraswal8beac342016-08-04 02:00:03 +0530115import static org.onosproject.yangutils.utils.UtilConstants.ILLEGAL_ACCESS_EXCEPTION;
Bharat saraswale50edca2016-08-05 01:58:25 +0530116import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE;
Bharat saraswal84366c52016-03-23 19:40:35 +0530117import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
118import static org.onosproject.yangutils.utils.UtilConstants.INT;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530119import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530120import static org.onosproject.yangutils.utils.UtilConstants.INT_MAX_RANGE;
121import static org.onosproject.yangutils.utils.UtilConstants.INT_MIN_RANGE;
Bharat saraswal8beac342016-08-04 02:00:03 +0530122import static org.onosproject.yangutils.utils.UtilConstants.INVOCATION_TARGET_EXCEPTION;
123import static org.onosproject.yangutils.utils.UtilConstants.INVOKE;
124import static org.onosproject.yangutils.utils.UtilConstants.IS_EMPTY;
125import static org.onosproject.yangutils.utils.UtilConstants.IS_SELECT_LEAF;
126import static org.onosproject.yangutils.utils.UtilConstants.LEAF_IDENTIFIER;
Bharat saraswal84366c52016-03-23 19:40:35 +0530127import static org.onosproject.yangutils.utils.UtilConstants.LIST;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530128import static org.onosproject.yangutils.utils.UtilConstants.LONG;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530129import static org.onosproject.yangutils.utils.UtilConstants.LONG_MAX_RANGE;
130import static org.onosproject.yangutils.utils.UtilConstants.LONG_MIN_RANGE;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530131import static org.onosproject.yangutils.utils.UtilConstants.LONG_WRAPPER;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530132import static org.onosproject.yangutils.utils.UtilConstants.MAP;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530133import static org.onosproject.yangutils.utils.UtilConstants.MAX_RANGE;
134import static org.onosproject.yangutils.utils.UtilConstants.MIN_RANGE;
Bharat saraswal84366c52016-03-23 19:40:35 +0530135import static org.onosproject.yangutils.utils.UtilConstants.NEW;
136import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530137import static org.onosproject.yangutils.utils.UtilConstants.NOT;
Bharat saraswal8beac342016-08-04 02:00:03 +0530138import static org.onosproject.yangutils.utils.UtilConstants.NO_SUCH_METHOD_EXCEPTION;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530139import static org.onosproject.yangutils.utils.UtilConstants.NULL;
Bharat saraswal84366c52016-03-23 19:40:35 +0530140import static org.onosproject.yangutils.utils.UtilConstants.OBJ;
141import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
142import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
143import static org.onosproject.yangutils.utils.UtilConstants.OF;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530144import static org.onosproject.yangutils.utils.UtilConstants.OMIT_NULL_VALUE_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +0530145import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
146import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
Bharat saraswal8beac342016-08-04 02:00:03 +0530147import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530148import static org.onosproject.yangutils.utils.UtilConstants.OR_OPERATION;
Bharat saraswal84366c52016-03-23 19:40:35 +0530149import static org.onosproject.yangutils.utils.UtilConstants.OTHER;
150import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530151import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BOOLEAN;
152import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BYTE;
153import static org.onosproject.yangutils.utils.UtilConstants.PARSE_INT;
154import static org.onosproject.yangutils.utils.UtilConstants.PARSE_LONG;
155import static org.onosproject.yangutils.utils.UtilConstants.PARSE_SHORT;
Bharat saraswal84366c52016-03-23 19:40:35 +0530156import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530157import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
Bharat saraswal84366c52016-03-23 19:40:35 +0530158import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530159import static org.onosproject.yangutils.utils.UtilConstants.PUT;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530160import static org.onosproject.yangutils.utils.UtilConstants.QUESTION_MARK;
Vidyashree Ramab3670472016-08-06 15:49:56 +0530161import static org.onosproject.yangutils.utils.UtilConstants.QUEUE;
Bharat saraswal84366c52016-03-23 19:40:35 +0530162import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530163import static org.onosproject.yangutils.utils.UtilConstants.REPLACE_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +0530164import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530165import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
Bharat saraswal84366c52016-03-23 19:40:35 +0530166import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
Vidyashree Ramab3670472016-08-06 15:49:56 +0530167import static org.onosproject.yangutils.utils.UtilConstants.SET;
Bharat saraswal84366c52016-03-23 19:40:35 +0530168import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
Bharat saraswal8beac342016-08-04 02:00:03 +0530169import static org.onosproject.yangutils.utils.UtilConstants.SET_SELECT_LEAF;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530170import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530171import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530172import static org.onosproject.yangutils.utils.UtilConstants.SINGLE_QUOTE;
Bharat saraswal84366c52016-03-23 19:40:35 +0530173import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
174import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530175import static org.onosproject.yangutils.utils.UtilConstants.SPLIT_STRING;
176import static org.onosproject.yangutils.utils.UtilConstants.SQUARE_BRACKETS;
Bharat saraswal84366c52016-03-23 19:40:35 +0530177import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
178import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
179import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
Bharat saraswal250a7472016-05-12 13:16:57 +0530180import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
Bharat saraswal84366c52016-03-23 19:40:35 +0530181import static org.onosproject.yangutils.utils.UtilConstants.THIS;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530182import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
Gaurav Agrawal8a147522016-08-10 13:43:01 +0530183import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAR;
Bharat saraswal84366c52016-03-23 19:40:35 +0530184import static org.onosproject.yangutils.utils.UtilConstants.TO;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530185import static org.onosproject.yangutils.utils.UtilConstants.TRIM_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +0530186import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530187import static org.onosproject.yangutils.utils.UtilConstants.TRY;
Bharat saraswal84366c52016-03-23 19:40:35 +0530188import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
Bharat saraswal8beac342016-08-04 02:00:03 +0530189import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_FOUR_SPACE_INDENTATION;
190import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_SPACE_INDENTATION;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530191import static org.onosproject.yangutils.utils.UtilConstants.UINT_MAX_RANGE;
192import static org.onosproject.yangutils.utils.UtilConstants.UINT_MIN_RANGE;
193import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MAX_RANGE;
194import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MIN_RANGE;
195import static org.onosproject.yangutils.utils.UtilConstants.VALIDATE_RANGE;
Bharat saraswal84366c52016-03-23 19:40:35 +0530196import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
Bharat saraswal8beac342016-08-04 02:00:03 +0530197import static org.onosproject.yangutils.utils.UtilConstants.VALUE_LEAF_SET;
Bharat saraswal84366c52016-03-23 19:40:35 +0530198import static org.onosproject.yangutils.utils.UtilConstants.VOID;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530199import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
Bharat saraswal039f59c2016-07-14 21:57:13 +0530200import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_OP_PARAM_INFO;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530201import static org.onosproject.yangutils.utils.UtilConstants.YANG_UTILS_TODO;
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +0530202import static org.onosproject.yangutils.utils.UtilConstants.ZERO;
Bharat saraswal84366c52016-03-23 19:40:35 +0530203import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
204import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
205import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530206import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.FROM_METHOD;
Bharat saraswal84366c52016-03-23 19:40:35 +0530207import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530208import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.MANAGER_SETTER_METHOD;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530209import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
Bharat saraswal84366c52016-03-23 19:40:35 +0530210import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530211import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530212import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForAddAugmentation;
Bharat saraswal8beac342016-08-04 02:00:03 +0530213import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForBuilderMethod;
Bharat saraswalaf413b82016-07-14 15:18:20 +0530214import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForGetAugmentation;
Bharat saraswal8beac342016-08-04 02:00:03 +0530215import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForGetMethodWithAttribute;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530216import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForValidatorMethod;
Bharat saraswald14cbe82016-07-14 13:26:18 +0530217import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530218import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
219import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
220import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
Bharat saraswal84366c52016-03-23 19:40:35 +0530221import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
Bharat saraswal97459962016-02-20 21:57:16 +0530222
223/**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530224 * Represents generator for methods of generated files based on the file type.
Bharat saraswal97459962016-02-20 21:57:16 +0530225 */
226public final class MethodsGenerator {
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +0530227 private static final String BITS_STRING_ARRAY_VAR = "bitsTemp";
228 private static final String BIT_TEMP_VAR = "bitTemp";
Bharat saraswal97459962016-02-20 21:57:16 +0530229
Bharat saraswal97459962016-02-20 21:57:16 +0530230 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530231 * Creates an instance of method generator.
Bharat saraswal97459962016-02-20 21:57:16 +0530232 */
233 private MethodsGenerator() {
234 }
235
236 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530237 * Returns the methods strings for builder interface.
238 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530239 * @param name attribute name
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530240 * @param pluginConfig plugin configurations
Vinod Kumar S08710982016-03-03 19:55:30 +0530241 * @return method string for builder interface
Bharat saraswal97459962016-02-20 21:57:16 +0530242 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530243 public static String parseBuilderInterfaceBuildMethodString(String name, YangPluginConfig pluginConfig) {
Vidyashree Ramab3670472016-08-06 15:49:56 +0530244 return getJavaDoc(BUILD_METHOD, name, false, pluginConfig, null) + getBuildForInterface(name);
Bharat saraswal97459962016-02-20 21:57:16 +0530245 }
246
247 /**
248 * Returns getter string.
249 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530250 * @param attr attribute info
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530251 * @param generatedJavaFiles generated java files
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530252 * @param pluginConfig plugin configurations
Bharat saraswal97459962016-02-20 21:57:16 +0530253 * @return getter string
254 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530255 public static String getGetterString(JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530256 YangPluginConfig pluginConfig) {
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530257 String returnType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530258 String attributeName = attr.getAttributeName();
Vidyashree Ramab3670472016-08-06 15:49:56 +0530259 String appDataStructure = null;
260 if (attr.getCompilerAnnotation() != null) {
261 appDataStructure = attr.getCompilerAnnotation().getYangAppDataStructure().getDataStructure().name();
262 }
Bharat saraswal8beac342016-08-04 02:00:03 +0530263 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
264 return generateForGetMethodWithAttribute(returnType)
Vidyashree Ramab3670472016-08-06 15:49:56 +0530265 + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles,
266 attr.getCompilerAnnotation());
Bharat saraswal8beac342016-08-04 02:00:03 +0530267 }
Vinod Kumar S08710982016-03-03 19:55:30 +0530268
Vidyashree Ramab3670472016-08-06 15:49:56 +0530269 return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr(), pluginConfig, appDataStructure)
270 + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles,
271 attr.getCompilerAnnotation());
Bharat saraswal97459962016-02-20 21:57:16 +0530272 }
273
274 /**
275 * Returns setter string.
276 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530277 * @param attr attribute info
278 * @param className java class name
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530279 * @param generatedJavaFiles generated java files
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530280 * @param pluginConfig plugin configurations
Bharat saraswal97459962016-02-20 21:57:16 +0530281 * @return setter string
282 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530283 public static String getSetterString(JavaAttributeInfo attr, String className, int generatedJavaFiles,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530284 YangPluginConfig pluginConfig) {
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530285 String attrType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530286 String attributeName = attr.getAttributeName();
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530287 JavaDocGen.JavaDocType type;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530288 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530289 type = MANAGER_SETTER_METHOD;
290 } else {
291 type = SETTER_METHOD;
292 }
Bharat saraswal97459962016-02-20 21:57:16 +0530293
Vidyashree Ramab3670472016-08-06 15:49:56 +0530294 String appDataStructure = null;
295 if (attr.getCompilerAnnotation() != null) {
296 appDataStructure = attr.getCompilerAnnotation().getYangAppDataStructure().getDataStructure().name();
297 }
298 return getJavaDoc(type, attributeName, attr.isListAttr(), pluginConfig, appDataStructure)
299 + getSetterForInterface(attributeName, attrType, className, attr.isListAttr(), generatedJavaFiles,
300 attr.getCompilerAnnotation());
Bharat saraswal97459962016-02-20 21:57:16 +0530301 }
302
303 /**
304 * Returns constructor method string.
305 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530306 * @param name class name
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530307 * @param pluginConfig plugin configurations
Bharat saraswal97459962016-02-20 21:57:16 +0530308 * @return constructor string
309 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530310 private static String getConstructorString(String name, YangPluginConfig pluginConfig) {
Vidyashree Ramab3670472016-08-06 15:49:56 +0530311 return getJavaDoc(CONSTRUCTOR, name, false, pluginConfig, null);
Bharat saraswal97459962016-02-20 21:57:16 +0530312 }
313
314 /**
315 * Returns default constructor method string.
316 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530317 * @param name class name
Bharat saraswal022dae92016-03-04 20:08:09 +0530318 * @param modifierType modifier type
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530319 * @param pluginConfig plugin configurations
Bharat saraswal97459962016-02-20 21:57:16 +0530320 * @return default constructor string
321 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530322 public static String getDefaultConstructorString(String name, String modifierType,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530323 YangPluginConfig pluginConfig) {
Vidyashree Ramab3670472016-08-06 15:49:56 +0530324 return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false, pluginConfig, null)
325 + getDefaultConstructor(name, modifierType) + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530326 }
327
328 /**
329 * Returns check not null string.
330 *
331 * @param name attribute name
332 * @return check not null string
333 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530334 static String getCheckNotNull(String name) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530335 return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING + OPEN_PARENTHESIS + name + COMMA + SPACE + name
336 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal97459962016-02-20 21:57:16 +0530337 }
338
339 /**
340 * Returns build method string.
341 *
Bharat saraswal8beac342016-08-04 02:00:03 +0530342 * @param name class name
343 * @param isRootNode if root node
Bharat saraswal97459962016-02-20 21:57:16 +0530344 * @return build string
345 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530346 public static String getBuildString(String name, boolean isRootNode) {
347 if (isRootNode) {
348 return NEW_LINE + getBuild(name, true);
349 }
350 return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name, false);
Bharat saraswal97459962016-02-20 21:57:16 +0530351 }
352
353 /**
354 * Returns the getter method strings for class file.
355 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530356 * @param attr attribute info
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530357 * @param generatedJavaFiles for the type of java file being generated
Vinod Kumar S08710982016-03-03 19:55:30 +0530358 * @return getter method for class
Bharat saraswal97459962016-02-20 21:57:16 +0530359 */
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530360 public static String getGetterForClass(JavaAttributeInfo attr, int generatedJavaFiles) {
Bharat saraswal8beac342016-08-04 02:00:03 +0530361 String attrQualifiedType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530362 String attributeName = attr.getAttributeName();
Bharat saraswal022dae92016-03-04 20:08:09 +0530363
364 if (!attr.isListAttr()) {
Bharat saraswal8beac342016-08-04 02:00:03 +0530365 return getGetter(attrQualifiedType, attributeName, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530366 }
Vidyashree Ramab3670472016-08-06 15:49:56 +0530367 String attrParam = getListAttribute(attrQualifiedType, attr.getCompilerAnnotation());
368 return getGetter(attrParam, attributeName, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530369 }
370
371 /**
372 * Returns getter for attribute.
373 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530374 * @param type return type
375 * @param name attribute name
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530376 * @param generatedJavaFiles generated java files
Bharat saraswal022dae92016-03-04 20:08:09 +0530377 * @return getter for attribute
378 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530379 static String getGetter(String type, String name, int generatedJavaFiles) {
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530380 String ret = parseTypeForReturnValue(type);
Bharat saraswal64e7e232016-07-14 23:33:55 +0530381 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
janani b703cfe42016-05-17 13:12:22 +0530382 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCapitalCase(name)
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530383 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
384 EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION +
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530385 RETURN + SPACE + ret + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530386 } else {
387 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + name
388 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
389 EIGHT_SPACE_INDENTATION + RETURN + SPACE + name + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
390 + CLOSE_CURLY_BRACKET;
391 }
Bharat saraswal97459962016-02-20 21:57:16 +0530392 }
393
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530394 /*Provides string to return for type.*/
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530395 private static String parseTypeForReturnValue(String type) {
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530396 switch (type) {
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530397 case BYTE:
398 case INT:
399 case SHORT:
400 case LONG:
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +0530401 case DOUBLE:
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530402 return "0";
403 case BOOLEAN_DATA_TYPE:
404 return FALSE;
405 default:
406 return null;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530407 }
408 }
409
Bharat saraswal97459962016-02-20 21:57:16 +0530410 /**
411 * Returns the setter method strings for class file.
412 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530413 * @param attr attribute info
414 * @param className name of the class
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530415 * @param generatedJavaFiles generated java files
Vinod Kumar S08710982016-03-03 19:55:30 +0530416 * @return setter method for class
Bharat saraswal97459962016-02-20 21:57:16 +0530417 */
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530418 public static String getSetterForClass(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
Bharat saraswal8beac342016-08-04 02:00:03 +0530419 String attrQualifiedType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530420 String attributeName = attr.getAttributeName();
Bharat saraswal8beac342016-08-04 02:00:03 +0530421 boolean isTypeNull = false;
422 if (attr.getAttributeType() == null) {
423 isTypeNull = true;
Bharat saraswal022dae92016-03-04 20:08:09 +0530424 }
Bharat saraswal8beac342016-08-04 02:00:03 +0530425 if (!attr.isListAttr()) {
426 return getSetter(className, attributeName, attrQualifiedType, generatedJavaFiles, isTypeNull, false);
427 }
Vidyashree Ramab3670472016-08-06 15:49:56 +0530428 String attrParam = getListAttribute(attrQualifiedType, attr.getCompilerAnnotation());
429 return getSetter(className, attributeName, attrParam, generatedJavaFiles, isTypeNull, true);
Bharat saraswal022dae92016-03-04 20:08:09 +0530430 }
431
432 /**
433 * Returns setter for attribute.
434 *
Bharat saraswal8beac342016-08-04 02:00:03 +0530435 * @param className class name
436 * @param name attribute name
437 * @param type return type
438 * @param isTypeNull if attribute type is null
439 * @param isList true if leaf-list
Bharat saraswal022dae92016-03-04 20:08:09 +0530440 * @return setter for attribute
441 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530442 private static String getSetter(String className, String name, String type, int generatedJavaFiles,
443 boolean isTypeNull, boolean isList) {
Bharat saraswal64e7e232016-07-14 23:33:55 +0530444 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530445 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX
janani b703cfe42016-05-17 13:12:22 +0530446 + getCapitalCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530447 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO +
448 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530449 } else if (generatedJavaFiles == GENERATE_EVENT_SUBJECT_CLASS) {
450 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + name + OPEN_PARENTHESIS + type + SPACE
451 + name + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
452 + THIS + PERIOD + name + SPACE + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE
453 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530454 } else {
Bharat saraswal8beac342016-08-04 02:00:03 +0530455 String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE +
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530456 name + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
Bharat saraswal8beac342016-08-04 02:00:03 +0530457 + OPEN_CURLY_BRACKET;
458 if (!isTypeNull && !isList) {
459 method = method + getValueLeafSetString(name);
460 } else {
461 method = method + EMPTY_STRING;
462 }
463 return method + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS +
464 PERIOD + name + SPACE
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530465 + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE
466 + THIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530467 }
Bharat saraswal8beac342016-08-04 02:00:03 +0530468
469 }
470
471 //Returns value leaf flag setter.
472 private static String getValueLeafSetString(String name) {
Gaurav Agrawal8a147522016-08-10 13:43:01 +0530473 return "\n getValueLeafFlags().set(LeafIdentifier." + name.toUpperCase() + ".getLeafIndex());";
Bharat saraswal97459962016-02-20 21:57:16 +0530474 }
475
476 /**
Bharat saraswal022dae92016-03-04 20:08:09 +0530477 * Returns the setter method strings for class file.
478 *
479 * @param attr attribute info
480 * @return setter method for class
481 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530482 static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
Bharat saraswal022dae92016-03-04 20:08:09 +0530483
Bharat saraswal8beac342016-08-04 02:00:03 +0530484 String attrQualifiedType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530485 String attributeName = attr.getAttributeName();
Bharat saraswal8beac342016-08-04 02:00:03 +0530486 return getTypeDefSetter(attrQualifiedType, attributeName);
Bharat saraswal022dae92016-03-04 20:08:09 +0530487 }
488
489 /**
490 * Returns type def's setter for attribute.
491 *
492 * @param type data type
493 * @param name attribute name
494 * @return setter for type def's attribute
495 */
496 private static String getTypeDefSetter(String type, String name) {
janani b703cfe42016-05-17 13:12:22 +0530497 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(name)
Bharat saraswal84366c52016-03-23 19:40:35 +0530498 + OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Bharat saraswal8beac342016-08-04 02:00:03 +0530499 + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN +
500 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal022dae92016-03-04 20:08:09 +0530501 }
502
503 /**
504 * Returns override string.
505 *
506 * @return override string
507 */
508 public static String getOverRideString() {
Bharat saraswal84366c52016-03-23 19:40:35 +0530509 return NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530510 }
511
512 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530513 * Returns the getter method strings for interface file.
514 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530515 * @param yangName name of the attribute
516 * @param returnType return type of attribute
517 * @param isList is list attribute
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530518 * @param generatedJavaFiles generated java files
Vidyashree Ramab3670472016-08-06 15:49:56 +0530519 * @param compilerAnnotation compiler annotation
Vinod Kumar S08710982016-03-03 19:55:30 +0530520 * @return getter method for interface
Bharat saraswal97459962016-02-20 21:57:16 +0530521 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530522 static String getGetterForInterface(String yangName, String returnType, boolean isList,
Gaurav Agrawal8a147522016-08-10 13:43:01 +0530523 int generatedJavaFiles, YangCompilerAnnotation compilerAnnotation) {
Bharat saraswal022dae92016-03-04 20:08:09 +0530524 if (!isList) {
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530525 return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530526 }
Vidyashree Ramab3670472016-08-06 15:49:56 +0530527 String listAttr = getListAttribute(returnType, compilerAnnotation);
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530528 return getGetterInterfaceString(listAttr, yangName, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530529 }
530
531 /**
532 * Returns getter for attribute in interface.
533 *
534 * @param returnType return type
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530535 * @param yangName attribute name
Bharat saraswal022dae92016-03-04 20:08:09 +0530536 * @return getter for interface
537 */
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530538 private static String getGetterInterfaceString(String returnType, String yangName,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530539 int generatedJavaFiles) {
Bharat saraswal64e7e232016-07-14 23:33:55 +0530540 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
Bharat saraswal8beac342016-08-04 02:00:03 +0530541 return getGetMethodWithArgument(returnType, yangName);
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530542 } else {
543 return FOUR_SPACE_INDENTATION + returnType + SPACE + yangName
544 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
545 }
Bharat saraswal97459962016-02-20 21:57:16 +0530546 }
547
548 /**
549 * Returns the setter method strings for interface file.
550 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530551 * @param attrName name of the attribute
552 * @param attrType return type of attribute
553 * @param className name of the java class being generated
554 * @param isList is list attribute
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530555 * @param generatedJavaFiles generated java files
Vidyashree Ramab3670472016-08-06 15:49:56 +0530556 * @param compilerAnnotation compiler annotations
Vinod Kumar S08710982016-03-03 19:55:30 +0530557 * @return setter method for interface
Bharat saraswal97459962016-02-20 21:57:16 +0530558 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530559 static String getSetterForInterface(String attrName, String attrType, String className,
Gaurav Agrawal8a147522016-08-10 13:43:01 +0530560 boolean isList, int generatedJavaFiles,
561 YangCompilerAnnotation compilerAnnotation) {
Bharat saraswal022dae92016-03-04 20:08:09 +0530562 if (!isList) {
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530563 return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530564 }
Vidyashree Ramab3670472016-08-06 15:49:56 +0530565
566 String listAttr = getListAttribute(attrType, compilerAnnotation);
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530567 return getSetterInterfaceString(className, attrName, listAttr, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530568 }
569
570 /**
571 * Returns setter string for interface.
572 *
573 * @param className class name
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530574 * @param attrName attribute name
575 * @param attrType attribute type
Bharat saraswal022dae92016-03-04 20:08:09 +0530576 * @return setter string
577 */
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530578 private static String getSetterInterfaceString(String className, String attrName, String attrType,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530579 int generatedJavaFiles) {
Bharat saraswal64e7e232016-07-14 23:33:55 +0530580 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
janani b703cfe42016-05-17 13:12:22 +0530581 return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(attrName)
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530582 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
583 } else {
584 return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + attrName
585 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
586 }
Bharat saraswal97459962016-02-20 21:57:16 +0530587 }
588
589 /**
Bharat saraswal022dae92016-03-04 20:08:09 +0530590 * Returns list string.
591 *
592 * @return list string
593 */
594 private static String getListString() {
Bharat saraswal84366c52016-03-23 19:40:35 +0530595 return LIST + DIAMOND_OPEN_BRACKET;
Bharat saraswal022dae92016-03-04 20:08:09 +0530596 }
597
598 /**
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530599 * Returns return type for attribute.
600 *
601 * @param attr attribute info
602 * @return return type
603 */
604 private static String getReturnType(JavaAttributeInfo attr) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530605 String returnType = EMPTY_STRING;
Vidyashree Rama13960652016-04-26 15:06:06 +0530606 if (attr.isQualifiedName() && attr.getImportInfo().getPkgInfo() != null) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530607 returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530608 }
609 returnType = returnType + attr.getImportInfo().getClassInfo();
610 return returnType;
611 }
612
613 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530614 * Returns the build method strings for interface file.
615 *
Vinod Kumar S08710982016-03-03 19:55:30 +0530616 * @param yangName name of the interface
617 * @return build method for interface
Bharat saraswal97459962016-02-20 21:57:16 +0530618 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530619 static String getBuildForInterface(String yangName) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530620 return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
621 + NEW_LINE;
Bharat saraswal97459962016-02-20 21:57:16 +0530622 }
623
624 /**
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530625 * Returns constructor string for impl class.
626 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530627 * @param yangName class name
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530628 * @param pluginConfig plugin configurations
Bharat saraswal8beac342016-08-04 02:00:03 +0530629 * @param isRootNode if root node
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530630 * @return constructor string
631 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530632 static String getConstructorStart(String yangName, YangPluginConfig pluginConfig, boolean isRootNode) {
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530633 String javadoc = getConstructorString(yangName, pluginConfig);
Bharat saraswal8beac342016-08-04 02:00:03 +0530634
635 String returnType = getCapitalCase(DEFAULT) + yangName;
636 if (isRootNode) {
637 returnType = yangName + OP_PARAM;
638 }
639 String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + returnType +
Bharat saraswald14cbe82016-07-14 13:26:18 +0530640 OPEN_PARENTHESIS + yangName + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT
641 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530642 return javadoc + constructor;
643 }
644
645 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530646 * Returns the constructor strings for class file.
647 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530648 * @param attr attribute info
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530649 * @param generatedJavaFiles generated java files
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530650 * @param pluginConfig plugin configurations
Bharat saraswal97459962016-02-20 21:57:16 +0530651 * @return constructor for class
652 */
Bharat saraswald14cbe82016-07-14 13:26:18 +0530653 public static String getConstructor(JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530654 YangPluginConfig pluginConfig) {
janani b703cfe42016-05-17 13:12:22 +0530655 String attributeName = attr.getAttributeName();
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530656 String constructor;
Bharat saraswal84366c52016-03-23 19:40:35 +0530657
Bharat saraswal64e7e232016-07-14 23:33:55 +0530658 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
Bharat saraswald14cbe82016-07-14 13:26:18 +0530659 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD
660 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
661 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
662 + getCapitalCase(getCamelCase(attributeName, pluginConfig.getConflictResolver()))
663 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530664 } else {
Bharat saraswald14cbe82016-07-14 13:26:18 +0530665 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD
666 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
667 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD
668 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) +
669 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530670 }
Bharat saraswal022dae92016-03-04 20:08:09 +0530671 return constructor;
Bharat saraswal97459962016-02-20 21:57:16 +0530672 }
673
674 /**
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530675 * Returns the rpc strings for service interface.
676 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530677 * @param rpcName name of the rpc
678 * @param inputName name of input
679 * @param outputName name of output
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530680 * @param pluginConfig plugin configurations
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530681 * @return rpc method string
682 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530683 public static String getRpcServiceMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530684 YangPluginConfig pluginConfig) {
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530685 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530686 if (!inputName.equals(EMPTY_STRING)) {
687 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswal250a7472016-05-12 13:16:57 +0530688 }
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530689 return FOUR_SPACE_INDENTATION + outputName + SPACE + rpcName + OPEN_PARENTHESIS + inputName
690 + CLOSE_PARENTHESIS + SEMI_COLAN;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530691 }
692
693 /**
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530694 * Returns the rpc strings for manager impl.
695 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530696 * @param rpcName name of the rpc
697 * @param inputName name of input
698 * @param outputName name of output
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530699 * @param pluginConfig plugin configurations
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530700 * @return rpc method string
701 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530702 public static String getRpcManagerMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530703 YangPluginConfig pluginConfig) {
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530704 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530705 if (!inputName.equals(EMPTY_STRING)) {
706 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswal250a7472016-05-12 13:16:57 +0530707 }
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530708
Bharat saraswald14cbe82016-07-14 13:26:18 +0530709 String method = getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName
710 + OPEN_PARENTHESIS + inputName + CLOSE_PARENTHESIS + SPACE
711 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530712 if (!outputName.contentEquals(VOID)) {
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530713 method += EIGHT_SPACE_INDENTATION + RETURN + SPACE + parseTypeForReturnValue(outputName) + SEMI_COLAN
714 + NEW_LINE;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530715 }
716 method += FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530717 return method;
718 }
719
720 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530721 * Returns the build method strings for class file.
722 *
Bharat saraswal8beac342016-08-04 02:00:03 +0530723 * @param yangName class name
724 * @param isRootNode if root node
Vinod Kumar S08710982016-03-03 19:55:30 +0530725 * @return build method string for class
Bharat saraswal97459962016-02-20 21:57:16 +0530726 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530727 static String getBuild(String yangName, boolean isRootNode) {
728 String type = getCapitalCase(DEFAULT) + yangName;
729 if (isRootNode) {
730 type = yangName + OP_PARAM;
731 }
732 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS +
733 CLOSE_PARENTHESIS
Bharat saraswald14cbe82016-07-14 13:26:18 +0530734 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE +
Bharat saraswal8beac342016-08-04 02:00:03 +0530735 type + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN
Bharat saraswald14cbe82016-07-14 13:26:18 +0530736 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal97459962016-02-20 21:57:16 +0530737 }
738
739 /**
740 * Returns the Default constructor strings for class file.
741 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530742 * @param name name of the class
Bharat saraswal022dae92016-03-04 20:08:09 +0530743 * @param modifierType modifier type for default constructor
Bharat saraswal97459962016-02-20 21:57:16 +0530744 * @return Default constructor for class
745 */
Bharat saraswal022dae92016-03-04 20:08:09 +0530746 private static String getDefaultConstructor(String name, String modifierType) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530747 return FOUR_SPACE_INDENTATION + modifierType + SPACE + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
748 + OPEN_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal97459962016-02-20 21:57:16 +0530749 }
750
Bharat saraswal022dae92016-03-04 20:08:09 +0530751 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530752 * Returns to string method's open strings.
Bharat saraswal022dae92016-03-04 20:08:09 +0530753 *
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530754 * @return string method's open string
Bharat saraswal022dae92016-03-04 20:08:09 +0530755 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530756 static String getToStringMethodOpen() {
Bharat saraswal84366c52016-03-23 19:40:35 +0530757 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STRING_DATA_TYPE + SPACE + TO
758 + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
759 + EIGHT_SPACE_INDENTATION + RETURN + GOOGLE_MORE_OBJECT_METHOD_STRING + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530760 }
761
762 /**
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530763 * Returns whether the data type is of primitive data type.
764 *
765 * @param dataType data type to be checked
766 * @return true, if data type can have primitive data type, false otherwise
767 */
Bharat saraswal64e7e232016-07-14 23:33:55 +0530768 private static boolean isPrimitiveDataType(YangDataTypes dataType) {
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530769 return dataType == INT8
770 || dataType == INT16
771 || dataType == INT32
772 || dataType == INT64
773 || dataType == UINT8
774 || dataType == UINT16
775 || dataType == UINT32
776 || dataType == UINT64
777 || dataType == DECIMAL64
Bharat saraswal039f59c2016-07-14 21:57:13 +0530778 || dataType == BOOLEAN
779 || dataType == EMPTY;
Bharat saraswal64e7e232016-07-14 23:33:55 +0530780
781 }
782
783 private static String getAttrTypeForFilterContentMatchWhenPrimitiveDataType(String attributeName) {
784 return APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
785 + SPACE + NOT + EQUAL + SPACE + attributeName + OPEN_PARENTHESIS
786 + CLOSE_PARENTHESIS;
787 }
788
Bharat saraswal8beac342016-08-04 02:00:03 +0530789 private static String getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(String attributeName) {
Bharat saraswal64e7e232016-07-14 23:33:55 +0530790 return APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
791 + SPACE + EQUAL + EQUAL + SPACE + NULL + SPACE + OR_OPERATION + SPACE
792 + NOT + OPEN_PARENTHESIS + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
793 + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD
794 + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
795 + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS;
796 }
797
798 private static String getIfFilterContentMatchMethodImpl(String attributeName,
Bharat saraswal8beac342016-08-04 02:00:03 +0530799 YangType dataType) {
Bharat saraswal64e7e232016-07-14 23:33:55 +0530800 String attrQualifiedType;
801
802 if (isPrimitiveDataType(dataType.getDataType())) {
803 attrQualifiedType = getAttrTypeForFilterContentMatchWhenPrimitiveDataType(attributeName);
804 } else if (dataType.getDataType() == LEAFREF) {
805 YangType type = ((YangLeafRef) dataType.getDataTypeExtendedInfo()).getEffectiveDataType();
806 if (isPrimitiveDataType(type.getDataType())) {
807 attrQualifiedType = getAttrTypeForFilterContentMatchWhenPrimitiveDataType(attributeName);
808 } else {
Bharat saraswal8beac342016-08-04 02:00:03 +0530809 attrQualifiedType = getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(attributeName);
Bharat saraswal64e7e232016-07-14 23:33:55 +0530810 }
811 } else {
Bharat saraswal8beac342016-08-04 02:00:03 +0530812 attrQualifiedType = getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(attributeName);
Bharat saraswal64e7e232016-07-14 23:33:55 +0530813 }
814
815 return attrQualifiedType;
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530816 }
817
818 /**
Bharat saraswale50edca2016-08-05 01:58:25 +0530819 * Returns is filter content match for leaf.
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530820 *
Bharat saraswale50edca2016-08-05 01:58:25 +0530821 * @param javaAttributeInfo java attribute
822 * @param type data type
823 * @return is filter content match for leaf
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530824 */
Bharat saraswale50edca2016-08-05 01:58:25 +0530825 public static String getIsFilerContentMatchForLeaf(JavaAttributeInfo javaAttributeInfo, YangType<?> type) {
826 String attrQualifiedType;
827 String attributeName = javaAttributeInfo.getAttributeName();
828 attrQualifiedType = getIfFilterContentMatchMethodImpl(attributeName,
829 type);
830 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS
831 + GET_FILTER_LEAF + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + GET_METHOD_PREFIX
832 + OPEN_PARENTHESIS + LEAF_IDENTIFIER + PERIOD + attributeName.toUpperCase() + PERIOD +
833 GET_LEAF_INDEX
834 + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
835 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE
836 + OPEN_PARENTHESIS + attrQualifiedType + CLOSE_PARENTHESIS + SPACE
837 + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE
838 + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE
839 + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
840 }
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530841
Bharat saraswale50edca2016-08-05 01:58:25 +0530842 /**
843 * Returns is filter content match for leaf.
844 *
845 * @param javaAttributeInfo java attribute
846 * @return is filter content match for leaf
847 */
848 public static String getIsFilerContentMatchForLeafList(JavaAttributeInfo javaAttributeInfo) {
849 String attributeName = javaAttributeInfo.getAttributeName();
850 return getIsFileContentMatchForLists(getCapitalCase(attributeName), true,
851 javaAttributeInfo.getImportInfo().getClassInfo());
852 }
Bharat saraswal64e7e232016-07-14 23:33:55 +0530853
Bharat saraswale50edca2016-08-05 01:58:25 +0530854 /**
855 * Returns is filter content match for leaf.
856 *
857 * @param curNode current node
858 * @param pluginConfig plugin configurations
859 * @return is filter content match for leaf
860 */
861 static String getIsFilterContentMatchStart(YangNode curNode, YangPluginConfig pluginConfig) {
862 JavaFileInfoTranslator javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
863 JavaFileInfoTranslator parentInfo;
864
865 String instance = APP_INSTANCE;
866 String name = getCapitalCase(javaFileInfo.getJavaName());
867 if (curNode instanceof YangCase) {
868 instance = INSTANCE;
869 YangNode parent = curNode.getParent();
870 if (parent instanceof YangChoice) {
871 parentInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo();
872 name = getCapitalCase(parentInfo.getJavaName());
873 } else if (parent instanceof YangAugment) {
874 parentInfo = ((JavaFileInfoContainer) ((YangAugment) parent).getAugmentedNode()).getJavaFileInfo();
875 if (parentInfo != null) {
876 name = getCapitalCase(parentInfo.getJavaName());
877 } else {
878 name = getCapitalCase(getCamelCase(((YangAugment) parent).getAugmentedNode().getName(),
879 pluginConfig.getConflictResolver()));
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530880 }
881 }
Bharat saraswale50edca2016-08-05 01:58:25 +0530882 }
883 String filterMethod = getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE
884 + SPACE + FILTER_CONTENT_MATCH + OPEN_PARENTHESIS + name
885 + SPACE + instance + CLOSE_PARENTHESIS + SPACE
886 + OPEN_CURLY_BRACKET + NEW_LINE;
887 if (curNode instanceof YangCase) {
888 String caseName = getCapitalCase(javaFileInfo.getJavaName());
889 filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + caseName + SPACE + APP_INSTANCE + SPACE + EQUAL
890 + SPACE
891 + OPEN_PARENTHESIS + caseName + CLOSE_PARENTHESIS + SPACE + instance + SEMI_COLAN + NEW_LINE;
892 }
893 if (curNode instanceof YangAugmentableNode) {
894 filterMethod = filterMethod + getAugmentableOpParamSyntax();
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530895 }
896 return filterMethod;
897 }
898
Bharat saraswal8beac342016-08-04 02:00:03 +0530899 /**
Bharat saraswale50edca2016-08-05 01:58:25 +0530900 * Returns is filter content match for node.
901 *
902 * @param name attribute name
903 * @param isList if list node
904 * @return is filter content match for node
905 */
906 public static String getIsFilterContentForNodes(String name, boolean isList) {
907 name = getCapitalCase(name);
908 if (isList) {
909 return getIsFileContentMatchForLists(name, false, null);
910 } else {
911 return getIsFilerContentMatchForChildNode(name);
912 }
913 }
914
915 /**
916 * Returns is filter content match close.
917 *
918 * @return is filter content match close
919 */
920 static String getIsFilerContentMatchClose() {
921 return EIGHT_SPACE_INDENTATION + RETURN + SPACE + TRUE + SEMI_COLAN +
922 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
923 }
924
925 /**
Bharat saraswal8beac342016-08-04 02:00:03 +0530926 * Returns filter content match for child nodes.
927 *
928 * @param name name of node
929 * @return filter content match for child nodes
930 */
931 private static String getIsFilerContentMatchForChildNode(String name) {
932 name = getSmallCase(name);
933 String method = EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + name + OPEN_PARENTHESIS +
934 CLOSE_PARENTHESIS + SPACE + NOT + EQUAL + SPACE + NULL + CLOSE_PARENTHESIS + SPACE +
935 OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + APP_INSTANCE
936 + PERIOD + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + EQUAL
937 + EQUAL + SPACE + NULL + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
Bharat saraswale50edca2016-08-05 01:58:25 +0530938 SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION +
Bharat saraswal8beac342016-08-04 02:00:03 +0530939 CLOSE_CURLY_BRACKET + NEW_LINE;
940 return method + TWELVE_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + name + OPEN_PARENTHESIS +
941 CLOSE_PARENTHESIS + PERIOD + FILTER_CONTENT_MATCH + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD + name +
942 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
943 OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + SEMI_COLAN +
944 NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
945 + CLOSE_CURLY_BRACKET + NEW_LINE;
946 }
947
948 /**
949 * Returns filter content match for list types.
950 *
951 * @param name name of node
952 * @param isLeafList if for leaf list
953 * @param type type of the attribute
954 * @return filter content match for list types
955 */
956 private static String getIsFileContentMatchForLists(String name, boolean isLeafList, String type) {
957 String method = EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + getSmallCase(name) + OPEN_PARENTHESIS
958 + CLOSE_PARENTHESIS + SPACE + NOT + EQUAL + SPACE + NULL + SPACE + AND + AND + SPACE + NOT +
959 getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + IS_EMPTY +
960 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
961 + NEW_LINE;
Gaurav Agrawal8a147522016-08-10 13:43:01 +0530962 method = method + TWELVE_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD +
963 getSmallCase(name)
Bharat saraswal8beac342016-08-04 02:00:03 +0530964 + OPEN_PARENTHESIS
965 + CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + SPACE + NULL + SPACE + "||" + SPACE +
966 getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + IS_EMPTY + CLOSE_PARENTHESIS +
967 SPACE + OPEN_CURLY_BRACKET
968 + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE +
969 TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
970 if (isLeafList) {
971 if (type.equals(getSmallCase(STRING_DATA_TYPE))) {
972 type = STRING_DATA_TYPE;
973 }
974 method = method + TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + type + SPACE +
975 getSmallCase(name)
976 + SPACE + COLAN + SPACE + getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
977 CLOSE_PARENTHESIS
978 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE +
979 FLAG + SPACE + EQUAL + SPACE + FALSE + SEMI_COLAN + NEW_LINE;
980 method = method + SIXTEEN_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + type + SPACE +
Gaurav Agrawal8a147522016-08-10 13:43:01 +0530981 TMP_VAR + getSmallCase(name)
Bharat saraswal8beac342016-08-04 02:00:03 +0530982 + SPACE + COLAN + SPACE + APP_INSTANCE + PERIOD + getSmallCase(name) + OPEN_PARENTHESIS
983 + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
984 method = method + TWENTY_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + getSmallCase(name) + PERIOD;
985 } else {
986 method = method + TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + name + SPACE +
987 getSmallCase(name)
988 + SPACE + COLAN + SPACE + getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
989 CLOSE_PARENTHESIS
990 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE +
991 FLAG + SPACE + EQUAL + SPACE + FALSE + SEMI_COLAN + NEW_LINE;
992 method = method + SIXTEEN_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + name + SPACE +
Gaurav Agrawal8a147522016-08-10 13:43:01 +0530993 TMP_VAR + getSmallCase(name)
Bharat saraswal8beac342016-08-04 02:00:03 +0530994 + SPACE + COLAN + SPACE + APP_INSTANCE + PERIOD + getSmallCase(name) + OPEN_PARENTHESIS
995 + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
996 method = method + TWENTY_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + getSmallCase(name) + PERIOD;
997 }
998 if (!isLeafList) {
999 method = method + FILTER_CONTENT_MATCH;
1000 } else {
1001 method = method + EQUALS_STRING;
1002 }
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301003 method = method + OPEN_PARENTHESIS + TMP_VAR + getSmallCase(name) + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
Bharat saraswal8beac342016-08-04 02:00:03 +05301004 + SPACE +
1005 OPEN_CURLY_BRACKET + NEW_LINE + TWENTY_FOUR_SPACE_INDENTATION + FLAG + SPACE + EQUAL + SPACE + TRUE +
1006 SEMI_COLAN
1007 + NEW_LINE + TWENTY_FOUR_SPACE_INDENTATION + BREAK + SEMI_COLAN + NEW_LINE + TWENTY_SPACE_INDENTATION
1008 + CLOSE_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1009
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301010 method = method + SIXTEEN_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + NOT + FLAG
1011 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWENTY_SPACE_INDENTATION
Bharat saraswal8beac342016-08-04 02:00:03 +05301012 + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
1013 NEW_LINE;
1014 return method + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
Bharat saraswale50edca2016-08-05 01:58:25 +05301015 CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal8beac342016-08-04 02:00:03 +05301016
1017 }
1018
1019 //Returns method string for op params augmented syntax
Bharat saraswal039f59c2016-07-14 21:57:13 +05301020 private static String getAugmentableOpParamSyntax() {
Bharat saraswal8beac342016-08-04 02:00:03 +05301021 return EIGHT_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + OBJECT_STRING + SPACE +
Bharat saraswal64e7e232016-07-14 23:33:55 +05301022 getSmallCase(YANG_AUGMENTED_INFO) + SPACE + COLAN + SPACE + THIS +
Bharat saraswal8beac342016-08-04 02:00:03 +05301023 PERIOD + getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD
Bharat saraswal039f59c2016-07-14 21:57:13 +05301024 + VALUE + "s" + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
Bharat saraswal8beac342016-08-04 02:00:03 +05301025 NEW_LINE + TWELVE_SPACE_INDENTATION + OBJECT_STRING + SPACE +
Bharat saraswal039f59c2016-07-14 21:57:13 +05301026 getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO) + SPACE + EQUAL + SPACE + APP_INSTANCE + PERIOD +
Bharat saraswal8beac342016-08-04 02:00:03 +05301027 getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD + GET_CLASS +
1028 CLOSE_PARENTHESIS + SEMI_COLAN +
1029 NEW_LINE + TWELVE_SPACE_INDENTATION
1030 + BOOLEAN_DATA_TYPE + SPACE + FILTER_CONTENT_MATCH + SPACE + EQUAL + SPACE + FALSE + SEMI_COLAN
1031 + NEW_LINE + TWELVE_SPACE_INDENTATION + TRY + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
1032 SIXTEEN_SPACE_INDENTATION +
1033 FILTER_CONTENT_MATCH + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS
1034 + BOOLEAN_DATA_TYPE + CLOSE_PARENTHESIS + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + PERIOD +
1035 GET_CLASS + NEW_LINE + TWENTY_SPACE_INDENTATION + PERIOD + GET_METHOD
1036 + OPEN_PARENTHESIS + QUOTES + FILTER_CONTENT_MATCH + QUOTES + COMMA + SPACE + OBJECT_STRING + PERIOD
1037 + CLASS + CLOSE_PARENTHESIS + PERIOD + INVOKE + OPEN_PARENTHESIS + getSmallCase(YANG_AUGMENTED_INFO) +
1038 NEW_LINE + TWENTY_FOUR_SPACE_INDENTATION + PERIOD + GET_CLASS + COMMA + SPACE +
1039 getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO)
1040 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301041 + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS
Bharat saraswal8beac342016-08-04 02:00:03 +05301042 + NO_SUCH_METHOD_EXCEPTION + " | " + INVOCATION_TARGET_EXCEPTION + " | " + ILLEGAL_ACCESS_EXCEPTION +
1043 SPACE + EXCEPTION_VAR + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1044 + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
1045 + CLOSE_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301046 + IF + SPACE + OPEN_PARENTHESIS + NOT + FILTER_CONTENT_MATCH + CLOSE_PARENTHESIS +
Bharat saraswal039f59c2016-07-14 21:57:13 +05301047 SPACE + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE +
1048 SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
1049 + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1050 }
1051
Bharat saraswal039f59c2016-07-14 21:57:13 +05301052 /*
Bharat saraswal8beac342016-08-04 02:00:03 +05301053 * Returns omit null value string.
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301054 *
1055 * @return omit null value string
1056 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301057 static String getOmitNullValueString() {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301058 return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING + NEW_LINE;
1059 }
1060
1061 /**
1062 * Returns to string method's close string.
Bharat saraswal022dae92016-03-04 20:08:09 +05301063 *
1064 * @return to string method close string
1065 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301066 static String getToStringMethodClose() {
Bharat saraswal84366c52016-03-23 19:40:35 +05301067 return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
1068 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301069 }
1070
1071 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301072 * Returns to string method for class.
Bharat saraswal022dae92016-03-04 20:08:09 +05301073 *
1074 * @param attr attribute info
1075 * @return to string method
1076 */
Vinod Kumar S9f26ae52016-03-23 15:30:27 +05301077 public static String getToStringMethod(JavaAttributeInfo attr) {
1078
janani b703cfe42016-05-17 13:12:22 +05301079 String attributeName = attr.getAttributeName();
Bharat saraswal84366c52016-03-23 19:40:35 +05301080 return TWELVE_SPACE_INDENTATION + PERIOD + ADD_STRING + OPEN_PARENTHESIS + QUOTES + attributeName + QUOTES
1081 + COMMA + SPACE + attributeName + CLOSE_PARENTHESIS;
Bharat saraswal022dae92016-03-04 20:08:09 +05301082 }
1083
1084 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301085 * Returns from string method's open string.
1086 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301087 * @param className name of the class
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301088 * @param pluginConfig plugin configurations
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301089 * @return from string method's open string
1090 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301091 static String getFromStringMethodSignature(String className, YangPluginConfig pluginConfig) {
Vidyashree Ramab3670472016-08-06 15:49:56 +05301092 return getJavaDoc(FROM_METHOD, className, false, pluginConfig, null) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301093 + STATIC + SPACE + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS
1094 + STRING_DATA_TYPE + SPACE + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE
1095 + OPEN_CURLY_BRACKET + NEW_LINE;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301096 }
1097
1098 /**
1099 * Return from string method's close string.
1100 *
1101 * @return from string method's close string
1102 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301103 static String getFromStringMethodClose() {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301104 return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1105 CLOSE_CURLY_BRACKET + NEW_LINE;
1106 }
1107
1108 /**
1109 * Return from string method's body string.
1110 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301111 * @param attr attribute info
Bharat saraswal039f59c2016-07-14 21:57:13 +05301112 * @param fromStringAttributeInfo attribute info for the from string wrapper type
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301113 * @return from string method's body string
1114 */
1115 public static String getFromStringMethod(JavaAttributeInfo attr,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301116 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301117 return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
Mahesh Poojary S6986df32016-07-19 10:58:07 +05301118 + getParsedSubString(attr, fromStringAttributeInfo) + NEW_LINE + TWELVE_SPACE_INDENTATION
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301119 + getReturnOfSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION + getCatchSubString()
1120 + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1121 }
1122
1123 /**
1124 * Returns sub string with try statement for union's from string method.
1125 *
1126 * @return sub string with try statement for union's from string method
1127 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301128 private static String getTrySubString() {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301129 return TRY + SPACE + OPEN_CURLY_BRACKET;
1130 }
1131
1132 /**
1133 * Returns sub string with return statement for union's from string method.
1134 *
1135 * @return sub string with return statement for union's from string method
1136 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301137 private static String getReturnOfSubString() {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301138 return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL + CLOSE_PARENTHESIS + SEMI_COLAN;
1139 }
1140
1141 /**
1142 * Returns sub string with catch statement for union's from string method.
1143 *
1144 * @return sub string with catch statement for union's from string method
1145 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301146 private static String getCatchSubString() {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301147 return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS + EXCEPTION + SPACE + EXCEPTION_VAR
1148 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
1149 }
1150
1151 /**
1152 * Returns sub string with parsed statement for union's from string method.
1153 *
1154 * @param attr attribute info
1155 * @return sub string with parsed statement for union's from string method
1156 */
1157 private static String getParsedSubString(JavaAttributeInfo attr,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301158 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301159 String targetDataType = getReturnType(attr);
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +05301160 if (fromStringAttributeInfo.getAttributeType().getDataType() == BITS) {
1161 String lines = targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + NEW + SPACE + targetDataType
1162 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1163 lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
1164 + PERIOD + REPLACE_STRING + OPEN_PARENTHESIS + SINGLE_QUOTE + OPEN_CURLY_BRACKET + SINGLE_QUOTE
1165 + COMMA + SPACE + SINGLE_QUOTE + SPACE + SINGLE_QUOTE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1166 lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
1167 + PERIOD + REPLACE_STRING + OPEN_PARENTHESIS + SINGLE_QUOTE + CLOSE_CURLY_BRACKET + SINGLE_QUOTE
1168 + COMMA + SPACE + SINGLE_QUOTE + SPACE + SINGLE_QUOTE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1169 lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
1170 + PERIOD + TRIM_STRING + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1171 lines += TWELVE_SPACE_INDENTATION + STRING_DATA_TYPE + SQUARE_BRACKETS + SPACE + BITS_STRING_ARRAY_VAR
1172 + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME + PERIOD + SPLIT_STRING + OPEN_PARENTHESIS
1173 + QUOTES + COMMA + QUOTES + COMMA + SPACE + ZERO + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1174 lines += TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + STRING_DATA_TYPE + SPACE
1175 + BIT_TEMP_VAR + SPACE + COLON + SPACE + BITS_STRING_ARRAY_VAR + CLOSE_PARENTHESIS + SPACE
1176 + OPEN_CURLY_BRACKET + NEW_LINE;
1177 lines += SIXTEEN_SPACE_INDENTATION + BIT_TEMP_VAR + SPACE + EQUAL + SPACE + BIT_TEMP_VAR + PERIOD
1178 + TRIM_STRING + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1179 lines += SIXTEEN_SPACE_INDENTATION + TMP_VAL + PERIOD + SET_METHOD_PREFIX + OPEN_PARENTHESIS
1180 + INTEGER_WRAPPER + PERIOD + PARSE_INT + OPEN_PARENTHESIS + BIT_TEMP_VAR + CLOSE_PARENTHESIS
1181 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1182 lines += TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1183 return lines;
1184 } else if (attr.getAttributeType().getDataType() == BINARY) {
1185 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + BASE64 + PERIOD
1186 + GET_DECODER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + DECODE + OPEN_PARENTHESIS
1187 + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +05301188 } else {
1189 String parseFromStringMethod = getParseFromStringMethod(targetDataType,
Bharat saraswal039f59c2016-07-14 21:57:13 +05301190 fromStringAttributeInfo.getAttributeType());
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +05301191 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + parseFromStringMethod
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +05301192 + OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +05301193 }
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301194 }
1195
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301196 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301197 * Returns hash code method open strings.
Bharat saraswal022dae92016-03-04 20:08:09 +05301198 *
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301199 * @return hash code method open string
Bharat saraswal022dae92016-03-04 20:08:09 +05301200 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301201 static String getHashCodeMethodOpen() {
Bharat saraswal84366c52016-03-23 19:40:35 +05301202 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + INT + SPACE + HASH_CODE_STRING
Bharat saraswal8beac342016-08-04 02:00:03 +05301203 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
1204 EIGHT_SPACE_INDENTATION
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301205 + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS;
Bharat saraswal022dae92016-03-04 20:08:09 +05301206 }
1207
1208 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301209 * Returns hash code methods close string.
Bharat saraswal022dae92016-03-04 20:08:09 +05301210 *
1211 * @param hashcodeString hash code string
1212 * @return to hash code method close string
1213 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301214 static String getHashCodeMethodClose(String hashcodeString) {
Bharat saraswal84366c52016-03-23 19:40:35 +05301215 hashcodeString = trimAtLast(hashcodeString, COMMA);
1216 hashcodeString = trimAtLast(hashcodeString, SPACE);
Bharat saraswal8beac342016-08-04 02:00:03 +05301217 return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1218 CLOSE_CURLY_BRACKET
Bharat saraswal84366c52016-03-23 19:40:35 +05301219 + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301220 }
1221
1222 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301223 * Returns hash code method for class.
Bharat saraswal022dae92016-03-04 20:08:09 +05301224 *
1225 * @param attr attribute info
1226 * @return hash code method
1227 */
Vinod Kumar S9f26ae52016-03-23 15:30:27 +05301228 public static String getHashCodeMethod(JavaAttributeInfo attr) {
janani b703cfe42016-05-17 13:12:22 +05301229 return attr.getAttributeName() + COMMA + SPACE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301230 }
1231
1232 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301233 * Returns equals method open strings.
Bharat saraswal022dae92016-03-04 20:08:09 +05301234 *
1235 * @param className class name
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301236 * @return equals method open string
Bharat saraswal022dae92016-03-04 20:08:09 +05301237 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301238 static String getEqualsMethodOpen(String className) {
1239 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE +
1240 EQUALS_STRING
Bharat saraswal84366c52016-03-23 19:40:35 +05301241 + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + OBJ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
1242 + NEW_LINE + getEqualsMethodsCommonIfCondition() + getEqualsMethodsSpecificIfCondition(className);
Bharat saraswal022dae92016-03-04 20:08:09 +05301243 }
1244
1245 /**
1246 * Returns equal methods if condition string.
1247 *
1248 * @return if condition string
1249 */
1250 private static String getEqualsMethodsCommonIfCondition() {
Bharat saraswal84366c52016-03-23 19:40:35 +05301251 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + THIS + SPACE + EQUAL + EQUAL + SPACE + OBJ
1252 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + SPACE
1253 + TRUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301254 }
1255
1256 /**
1257 * Returns if condition for specific class object in equals method.
1258 *
1259 * @param className class name
1260 * @return if condition string
1261 */
1262 private static String getEqualsMethodsSpecificIfCondition(String className) {
Bharat saraswal84366c52016-03-23 19:40:35 +05301263 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + OBJ + INSTANCE_OF + className
1264 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + className
1265 + SPACE + OTHER + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS + className + CLOSE_PARENTHESIS + SPACE
1266 + OBJ + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301267 }
1268
1269 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301270 * Returns equals methods close string.
Bharat saraswal022dae92016-03-04 20:08:09 +05301271 *
1272 * @param equalMethodString equal method string
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301273 * @return equals method close string
Bharat saraswal022dae92016-03-04 20:08:09 +05301274 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301275 static String getEqualsMethodClose(String equalMethodString) {
Bharat saraswal84366c52016-03-23 19:40:35 +05301276 equalMethodString = trimAtLast(equalMethodString, AND);
1277 equalMethodString = trimAtLast(equalMethodString, AND);
1278 equalMethodString = trimAtLast(equalMethodString, SPACE);
1279 equalMethodString = trimAtLast(equalMethodString, NEW_LINE) + SEMI_COLAN + NEW_LINE;
1280 return equalMethodString + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
1281 + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1282 + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301283 }
1284
1285 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +05301286 * Returns equals method for class.
Bharat saraswal022dae92016-03-04 20:08:09 +05301287 *
1288 * @param attr attribute info
1289 * @return equals method
1290 */
Vinod Kumar S9f26ae52016-03-23 15:30:27 +05301291 public static String getEqualsMethod(JavaAttributeInfo attr) {
janani b703cfe42016-05-17 13:12:22 +05301292 String attributeName = attr.getAttributeName();
Bharat saraswal84366c52016-03-23 19:40:35 +05301293 return SIXTEEN_SPACE_INDENTATION + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS
1294 + attributeName + COMMA + SPACE + OTHER + PERIOD + attributeName + CLOSE_PARENTHESIS + SPACE + AND
1295 + AND;
Bharat saraswal022dae92016-03-04 20:08:09 +05301296 }
1297
1298 /**
1299 * Returns of method string for class.
1300 *
1301 * @param name class name
1302 * @param attr attribute info
1303 * @return of method string
1304 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301305 static String getOfMethod(String name, JavaAttributeInfo attr) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301306 String attrQualifiedType = getReturnType(attr);
Bharat saraswal84366c52016-03-23 19:40:35 +05301307 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name + SPACE + OF + OPEN_PARENTHESIS
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301308 + attrQualifiedType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Bharat saraswal84366c52016-03-23 19:40:35 +05301309 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name + OPEN_PARENTHESIS + VALUE
1310 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +05301311 }
1312
Bharat saraswale2bc60d2016-04-16 02:28:25 +05301313 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301314 * Returns of method's string and java doc for special type.
1315 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301316 * @param attr attribute info
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301317 * @param generatedJavaClassName class name
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301318 * @param pluginConfig plugin configurations
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301319 * @return of method's string and java doc for special type
1320 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301321 public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301322 YangPluginConfig pluginConfig) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301323 String attrType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +05301324 String attrName = attr.getAttributeName();
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301325
Vidyashree Ramab3670472016-08-06 15:49:56 +05301326 return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " + attrName, false, pluginConfig, null)
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301327 + getOfMethodString(attrType, generatedJavaClassName);
1328 }
1329
1330 /**
1331 * Returns of method's string.
1332 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301333 * @param type data type
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301334 * @param className class name
1335 * @return of method's string
1336 */
1337 private static String getOfMethodString(String type, String className) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301338 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + className + SPACE + OF + OPEN_PARENTHESIS
1339 + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1340 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + className + OPEN_PARENTHESIS + VALUE
1341 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1342 }
1343
1344 /**
1345 * Returns string and java doc for constructor of type class.
1346 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301347 * @param attr attribute info
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301348 * @param generatedJavaClassName class name
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301349 * @param pluginConfig plugin configurations
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301350 * @return string and java doc for constructor of type class
1351 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301352 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301353 String generatedJavaClassName,
1354 YangPluginConfig pluginConfig) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301355 String attrType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +05301356 String attrName = attr.getAttributeName();
Vidyashree Ramab3670472016-08-06 15:49:56 +05301357 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName, false, pluginConfig, null)
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301358 + getTypeConstructorString(attrType, attrName, generatedJavaClassName);
1359 }
1360
1361 /**
Bharat saraswal64e7e232016-07-14 23:33:55 +05301362 * Returns string and java doc for constructor of type class.
1363 *
1364 * @param attr1 first attribute info
1365 * @param attr2 second attribute info
1366 * @param generatedJavaClassName class name
1367 * @param pluginConfig plugin config
1368 * @param type conflict validate type
Bharat saraswal8beac342016-08-04 02:00:03 +05301369 * @param addFirst whether int came first or uInt came first
Bharat saraswal64e7e232016-07-14 23:33:55 +05301370 * @return string and java doc for constructor of type class
1371 */
1372 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr1, JavaAttributeInfo
1373 attr2, String generatedJavaClassName, YangPluginConfig pluginConfig, ValidatorTypeForUnionTypes type,
1374 boolean addFirst) {
Bharat saraswal64e7e232016-07-14 23:33:55 +05301375 String attrType = getReturnType(attr1);
1376 String attrName1 = "";
1377 String attrName2 = "";
1378 if (attr1 != null) {
1379 attrName1 = attr1.getAttributeName();
1380 }
1381 if (attr2 != null) {
1382 attrName2 = attr2.getAttributeName();
1383 }
1384
Vidyashree Ramab3670472016-08-06 15:49:56 +05301385 String appDataStructure = null;
1386 if (attr1.getCompilerAnnotation() != null) {
1387 appDataStructure = attr1.getCompilerAnnotation().getYangAppDataStructure().getDataStructure().name();
1388 }
1389 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName1, false, pluginConfig,
1390 appDataStructure) + getTypeConstructorString(attrType, attrName1,
1391 attrName2, generatedJavaClassName, type, addFirst);
Bharat saraswal64e7e232016-07-14 23:33:55 +05301392 }
1393
1394 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301395 * Returns type constructor string.
1396 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301397 * @param type data type
1398 * @param name attribute name
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301399 * @param className class name
1400 * @return type constructor string
1401 */
1402 private static String getTypeConstructorString(String type, String name, String className) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +05301403 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
1404 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
1405 + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
1406 + CLOSE_CURLY_BRACKET;
1407 }
1408
1409 /**
Bharat saraswal64e7e232016-07-14 23:33:55 +05301410 * Returns type constructor string.
1411 *
1412 * @param type data type
1413 * @param attr1 attribute attr1
1414 * @param className class attr1
1415 * @return type constructor string
1416 */
1417 private static String getTypeConstructorString(String type, String attr1, String attr2, String className,
1418 ValidatorTypeForUnionTypes validatorType, boolean addInt) {
Bharat saraswal64e7e232016-07-14 23:33:55 +05301419 String constructor;
1420 constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
1421 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1422
1423 String name1;
1424 String name2;
1425 if (addInt) {
1426 name1 = attr1;
1427 name2 = attr2;
1428 } else {
1429 name1 = attr2;
1430 name2 = attr1;
1431 }
Bharat saraswal8beac342016-08-04 02:00:03 +05301432 constructor = constructor + ifConditionForIntInTypeDefConstructor(validatorType, addInt) +
Bharat saraswal64e7e232016-07-14 23:33:55 +05301433 TWELVE_SPACE_INDENTATION + THIS + PERIOD
1434 + name1 + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
1435 + CLOSE_CURLY_BRACKET + SPACE + ELSE + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION
1436 + THIS + PERIOD
1437 + name2 + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
1438 + CLOSE_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION
1439 + CLOSE_CURLY_BRACKET;
1440
1441 return constructor;
1442 }
1443
1444 /**
Bharat saraswal8beac342016-08-04 02:00:03 +05301445 * Returns interface of add augmentation.
1446 *
1447 * @return interface of add augmentation
1448 */
1449 static String getAddAugmentInfoMethodInterface() {
1450 return generateForAddAugmentation() + FOUR_SPACE_INDENTATION + VOID + SPACE +
1451 ADD_STRING + YANG_AUGMENTED_INFO + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + VALUE + COMMA +
1452 SPACE + CLASS_STRING + SPACE + CLASS + OBJECT_STRING + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1453 }
1454
1455 /**
Bharat saraswalaf413b82016-07-14 15:18:20 +05301456 * Returns implementation of add augmentation.
1457 *
1458 * @return implementation of add augmentation
1459 */
Bharat saraswal039f59c2016-07-14 21:57:13 +05301460 static String getAddAugmentInfoMethodImpl() {
Bharat saraswal8beac342016-08-04 02:00:03 +05301461 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE +
1462 ADD_STRING + YANG_AUGMENTED_INFO + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + VALUE + COMMA +
Bharat saraswal039f59c2016-07-14 21:57:13 +05301463 SPACE + CLASS_STRING + SPACE + CLASS + OBJECT_STRING + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
1464 NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + PUT +
1465 OPEN_PARENTHESIS + CLASS + OBJECT_STRING + COMMA + SPACE + VALUE +
Bharat saraswalaf413b82016-07-14 15:18:20 +05301466 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1467 CLOSE_CURLY_BRACKET + NEW_LINE;
1468 }
1469
1470 /**
Bharat saraswal8beac342016-08-04 02:00:03 +05301471 * Returns interface of get YANG augment info.
Bharat saraswalaf413b82016-07-14 15:18:20 +05301472 *
Bharat saraswal8beac342016-08-04 02:00:03 +05301473 * @return interface of get YANG augment info
Bharat saraswalaf413b82016-07-14 15:18:20 +05301474 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301475 static String getYangAugmentInfoInterface() {
1476 return generateForGetAugmentation() + FOUR_SPACE_INDENTATION + OBJECT_STRING + SPACE +
1477 getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
1478 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1479 }
Bharat saraswalaf413b82016-07-14 15:18:20 +05301480
Bharat saraswal8beac342016-08-04 02:00:03 +05301481 /**
1482 * Returns implementation of get YANG augment info.
1483 *
1484 * @return implementation of get YANG augment info
1485 */
1486 static String getYangAugmentInfoImpl() {
1487 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
1488 OBJECT_STRING + SPACE +
1489 getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
Bharat saraswalaf413b82016-07-14 15:18:20 +05301490 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
1491 RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + GET + OPEN_PARENTHESIS + CLASS +
1492 OBJECT_STRING + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1493 CLOSE_CURLY_BRACKET + NEW_LINE;
1494 }
1495
1496 /**
Bharat saraswal8beac342016-08-04 02:00:03 +05301497 * Returns implementation of get YANG augment info.
Bharat saraswal039f59c2016-07-14 21:57:13 +05301498 *
Bharat saraswal8beac342016-08-04 02:00:03 +05301499 * @return implementation of get YANG augment info
Bharat saraswal039f59c2016-07-14 21:57:13 +05301500 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301501 static String getYangAugmentInfoMapInterface(YangPluginConfig pluginConfig) {
Vidyashree Ramab3670472016-08-06 15:49:56 +05301502 return getJavaDoc(GETTER_METHOD, getSmallCase(YANG_AUGMENTED_INFO) + MAP, false, pluginConfig, null)
Bharat saraswal8beac342016-08-04 02:00:03 +05301503 + FOUR_SPACE_INDENTATION + MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING + DIAMOND_OPEN_BRACKET +
1504 QUESTION_MARK + DIAMOND_CLOSE_BRACKET + COMMA + SPACE + OBJECT_STRING + DIAMOND_CLOSE_BRACKET +
1505 SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS +
1506 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1507 }
1508
1509 /**
1510 * Returns implementation of get YANG augment info.
1511 *
1512 * @return implementation of get YANG augment info
1513 */
1514 static String getYangAugmentInfoMapImpl() {
1515 return getOverRideString()
Bharat saraswal039f59c2016-07-14 21:57:13 +05301516 + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
1517 MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING + DIAMOND_OPEN_BRACKET + QUESTION_MARK +
Bharat saraswal8beac342016-08-04 02:00:03 +05301518 DIAMOND_CLOSE_BRACKET + COMMA + SPACE + OBJECT_STRING + DIAMOND_CLOSE_BRACKET + SPACE +
1519 getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS +
Bharat saraswal039f59c2016-07-14 21:57:13 +05301520 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
1521 RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + SEMI_COLAN + NEW_LINE
1522 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1523 }
1524
1525 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +05301526 * Returns enum's constructor.
1527 *
1528 * @param className enum's class name
1529 * @return enum's constructor
1530 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301531 static String getEnumsConstructor(String className) {
Bharat saraswal68fa0d12016-04-19 01:00:16 +05301532 return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
1533 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
1534 + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1535 }
Bharat saraswal250a7472016-05-12 13:16:57 +05301536
1537 /**
1538 * Returns of method for enum class.
1539 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301540 * @param className class name
1541 * @param attr java attribute
1542 * @param enumMap enum's sets map
1543 * @param enumList enum's sets list
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301544 * @param pluginConfig plugin configurations
Bharat saraswal250a7472016-05-12 13:16:57 +05301545 * @return of method
1546 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301547 static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
1548 Map<String, Integer> enumMap, List<String> enumList,
1549 YangPluginConfig pluginConfig) {
Bharat saraswal250a7472016-05-12 13:16:57 +05301550 String attrType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +05301551 String attrName = attr.getAttributeName();
Bharat saraswal250a7472016-05-12 13:16:57 +05301552
janani b703cfe42016-05-17 13:12:22 +05301553 String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + getCapitalCase(className) + SPACE
1554 + OF + OPEN_PARENTHESIS
Bharat saraswal250a7472016-05-12 13:16:57 +05301555 + attrType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1556 + EIGHT_SPACE_INDENTATION + SWITCH + SPACE + OPEN_PARENTHESIS + VALUE
1557 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
Bharat saraswal8beac342016-08-04 02:00:03 +05301558 int value;
Bharat saraswal250a7472016-05-12 13:16:57 +05301559 for (String str : enumList) {
Bharat saraswal250a7472016-05-12 13:16:57 +05301560 value = enumMap.get(str);
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +05301561 method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value + COLON + NEW_LINE
janani b703cfe42016-05-17 13:12:22 +05301562 + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + getCapitalCase(className) + PERIOD
Bharat saraswal250a7472016-05-12 13:16:57 +05301563 + str + SEMI_COLAN + NEW_LINE;
1564 }
Mahesh Poojary Huawei41547ad2016-07-14 17:49:50 +05301565 method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLON + NEW_LINE + SIXTEEN_SPACE_INDENTATION
Bharat saraswal250a7472016-05-12 13:16:57 +05301566 + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1567 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1568
Vidyashree Ramab3670472016-08-06 15:49:56 +05301569 return getJavaDoc(OF_METHOD, getCapitalCase(className) + " for type " + attrName, false, pluginConfig, null)
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301570 + method;
Bharat saraswal250a7472016-05-12 13:16:57 +05301571 }
Bharat saraswal715d3fc2016-05-17 19:59:16 +05301572
1573 /**
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301574 * Returns from string method parsed string.
1575 *
1576 * @param targetDataType target data type
1577 * @param yangType YANG type
1578 * @return parsed string
1579 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301580 private static String getParseFromStringMethod(String targetDataType, YangType<?> yangType) {
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301581 YangDataTypes type = yangType.getDataType();
1582
1583 switch (type) {
1584 case INT8:
1585 return BYTE_WRAPPER + PERIOD + PARSE_BYTE;
1586 case INT16:
1587 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1588 case INT32:
1589 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1590 case INT64:
1591 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1592 case UINT8:
1593 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1594 case UINT16:
1595 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1596 case UINT32:
1597 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1598 case UINT64:
1599 return NEW + SPACE + BIG_INTEGER;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +05301600 case DECIMAL64:
1601 return NEW + SPACE + BIG_DECIMAL;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301602 case STRING:
Shankara-Huaweib7564772016-08-02 18:13:13 +05301603 case IDENTITYREF:
1604 return EMPTY_STRING;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301605 case EMPTY:
1606 case BOOLEAN:
1607 return BOOLEAN_WRAPPER + PERIOD + PARSE_BOOLEAN;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301608 case BITS:
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301609 case UNION:
1610 case ENUMERATION:
1611 case DERIVED:
1612 return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
1613 default:
1614 throw new TranslatorException("given data type is not supported.");
1615 }
1616 }
Bharat saraswald14cbe82016-07-14 13:26:18 +05301617
1618 /**
Bharat saraswalaf413b82016-07-14 15:18:20 +05301619 * Returns augmented data getter and setter methods for service class.
1620 *
1621 * @param parent parent node
1622 * @return augmented data getter and setter methods for service class
1623 */
Bharat saraswal039f59c2016-07-14 21:57:13 +05301624 static String getAugmentsDataMethodForService(YangNode parent) {
Bharat saraswalaf413b82016-07-14 15:18:20 +05301625 List<YangAtomicPath> targets = getSetOfNodeIdentifiers(parent);
1626 YangNode augmentedNode;
1627 String curNodeName;
1628 String method;
1629 StringBuilder methods = new StringBuilder();
1630 String parentName;
1631 String returnType;
Bharat saraswal64e7e232016-07-14 23:33:55 +05301632 YangNode methodNode;
Bharat saraswalaf413b82016-07-14 15:18:20 +05301633 YangPluginConfig pluginConfig = ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig();
1634 for (YangAtomicPath nodeId : targets) {
Bharat saraswal039f59c2016-07-14 21:57:13 +05301635 augmentedNode = nodeId.getResolvedNode().getParent();
Bharat saraswal64e7e232016-07-14 23:33:55 +05301636 methodNode = nodeId.getResolvedNode();
1637 if (((JavaFileInfoContainer) methodNode).getJavaFileInfo().getJavaName() != null) {
1638 curNodeName = ((JavaFileInfoContainer) methodNode).getJavaFileInfo().getJavaName();
Bharat saraswalaf413b82016-07-14 15:18:20 +05301639 } else {
Bharat saraswal64e7e232016-07-14 23:33:55 +05301640 curNodeName = getCapitalCase(getCamelCase(methodNode.getName(), pluginConfig
Bharat saraswalaf413b82016-07-14 15:18:20 +05301641 .getConflictResolver()));
1642 }
1643 returnType = getAugmentedClassNameForDataMethods(augmentedNode, parent);
Bharat saraswal039f59c2016-07-14 21:57:13 +05301644 parentName = getParentNodeNameForDataMethods(augmentedNode, pluginConfig);
Bharat saraswal8beac342016-08-04 02:00:03 +05301645 method = generateForGetMethodWithAttribute(returnType)
1646 + getGetMethodWithArgument(returnType, AUGMENTED + parentName
1647 + getCapitalCase(curNodeName)) + NEW_LINE;
Bharat saraswalaf413b82016-07-14 15:18:20 +05301648 methods.append(method);
1649
1650 method = getJavaDoc(MANAGER_SETTER_METHOD, AUGMENTED +
Vidyashree Ramab3670472016-08-06 15:49:56 +05301651 getCapitalCase(parentName) + getCapitalCase(curNodeName), false, pluginConfig, null) +
Bharat saraswalaf413b82016-07-14 15:18:20 +05301652 getSetterForInterface(getSmallCase(AUGMENTED) + parentName +
Vidyashree Ramab3670472016-08-06 15:49:56 +05301653 getCapitalCase(curNodeName), returnType, parentName, false,
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301654 GENERATE_SERVICE_AND_MANAGER, null) + NEW_LINE;
Bharat saraswalaf413b82016-07-14 15:18:20 +05301655 methods.append(method);
1656 }
1657 return methods.toString();
1658 }
1659
1660 /**
Bharat saraswal64e7e232016-07-14 23:33:55 +05301661 * Returns validator method for range in union class.
1662 *
1663 * @param type type
1664 * @return validator method for range in union class
1665 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301666 static String getRangeValidatorMethodForUnion(String type) {
Bharat saraswal64e7e232016-07-14 23:33:55 +05301667 String newType;
1668 if (type.contentEquals(BIG_INTEGER)) {
1669 newType = LONG;
1670 } else {
1671 newType = INT;
1672 }
1673 String method = generateForValidatorMethod() + FOUR_SPACE_INDENTATION + PRIVATE + SPACE + BOOLEAN_DATA_TYPE +
1674 SPACE +
1675 VALIDATE_RANGE +
1676 OPEN_PARENTHESIS
1677 + type + SPACE + MIN_RANGE + COMMA + SPACE + type + SPACE + MAX_RANGE + COMMA + SPACE +
1678 newType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1679 if (type.contentEquals(BIG_INTEGER)) {
1680 method = method + EIGHT_SPACE_INDENTATION + BIG_INTEGER + SPACE + getSmallCase(BIG_INTEGER)
1681 + SPACE + EQUAL + SPACE + NEW + SPACE + BIG_INTEGER + OPEN_PARENTHESIS + QUOTES + SPACE +
1682 QUOTES + SPACE + ADD + SPACE + VALUE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE +
1683 EIGHT_SPACE_INDENTATION + RETURN + SPACE + getSmallCase(BIG_INTEGER) + PERIOD + "compareTo"
1684 + OPEN_PARENTHESIS + MIN_RANGE + CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + " 1" + SPACE + AND +
1685 AND + SPACE + getSmallCase(BIG_INTEGER) + PERIOD + "compareTo" + OPEN_PARENTHESIS + MAX_RANGE +
1686 CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + " 1" + SEMI_COLAN + NEW_LINE;
1687 } else {
1688 method = method + EIGHT_SPACE_INDENTATION
1689 + RETURN + SPACE + VALUE + SPACE + DIAMOND_CLOSE_BRACKET + EQUAL + SPACE + MIN_RANGE + SPACE + AND +
1690 AND + SPACE + VALUE + DIAMOND_OPEN_BRACKET + EQUAL + SPACE + MAX_RANGE + SEMI_COLAN + NEW_LINE;
1691 }
1692 return method + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1693 }
1694
1695 /**
1696 * Returns if condition string for typedef constructor.
1697 *
1698 * @param type type of conflict
1699 * @param addFirst true int/long need to be added first
1700 * @return if condition string for typedef constructor
1701 */
Bharat saraswal8beac342016-08-04 02:00:03 +05301702 private static String ifConditionForIntInTypeDefConstructor(ValidatorTypeForUnionTypes type, boolean addFirst) {
Bharat saraswal64e7e232016-07-14 23:33:55 +05301703 String condition = EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + VALIDATE_RANGE + OPEN_PARENTHESIS;
1704
1705 if (type == INT_TYPE_CONFLICT) {
1706 if (addFirst) {
1707 condition = condition + INT_MIN_RANGE + COMMA + SPACE + INT_MAX_RANGE + COMMA + SPACE + VALUE;
1708 } else {
1709 condition = condition + UINT_MIN_RANGE + COMMA + SPACE + UINT_MAX_RANGE + COMMA + SPACE + VALUE;
1710 }
1711 } else {
1712 if (addFirst) {
1713 condition = condition + LONG_MIN_RANGE + COMMA + SPACE + LONG_MAX_RANGE + COMMA + SPACE + VALUE;
1714 } else {
1715 condition = condition + ULONG_MIN_RANGE + COMMA + SPACE + ULONG_MAX_RANGE + COMMA + SPACE + VALUE;
1716 }
1717 }
1718 return condition + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1719 }
1720
Bharat saraswal8beac342016-08-04 02:00:03 +05301721 //Get method with arguments.
1722 private static String getGetMethodWithArgument(String returnType, String yangName) {
1723 return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCapitalCase(yangName)
1724 + OPEN_PARENTHESIS + returnType + OP_PARAM + SPACE + getSmallCase(returnType) + CLOSE_PARENTHESIS +
1725 SEMI_COLAN;
1726 }
Bharat saraswal64e7e232016-07-14 23:33:55 +05301727
Bharat saraswal8beac342016-08-04 02:00:03 +05301728 /**
1729 * Returns add to list method interface.
1730 *
1731 * @param attr java attribute
1732 * @return add to list method interface
1733 */
1734 public static String getAddToListMethodInterface(JavaAttributeInfo attr) {
1735 return FOUR_SPACE_INDENTATION + VOID + SPACE + ADD_STRING + getCapitalCase(TO) +
1736 getCapitalCase(attr.getAttributeName()) + OPEN_PARENTHESIS + getReturnType(attr) + SPACE +
1737 VALUE + CLOSE_PARENTHESIS + SEMI_COLAN;
1738 }
1739
1740 /**
1741 * Returns add to list method impl.
1742 *
1743 * @param attr java attribute
1744 * @return add to list method impl
1745 */
1746 public static String getAddToListMethodImpl(JavaAttributeInfo attr) {
1747 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + ADD_STRING +
1748 getCapitalCase(TO) + getCapitalCase(attr.getAttributeName()) + OPEN_PARENTHESIS +
1749 getReturnType(attr) + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
1750 + NEW_LINE + EIGHT_SPACE_INDENTATION + attr.getAttributeName() + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
1751 + PERIOD + ADD_STRING + OPEN_PARENTHESIS + VALUE + CLOSE_PARENTHESIS + SEMI_COLAN +
1752 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1753 }
1754
1755 /**
1756 * Returns builder method for class.
1757 *
1758 * @param name name of class
1759 * @return builder method for class
1760 */
1761 static String builderMethod(String name) {
1762 return NEW_LINE + generateForBuilderMethod(name) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE
1763 + name + BUILDER + SPACE + getSmallCase(BUILDER) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
1764 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name +
1765 BUILDER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1766 CLOSE_CURLY_BRACKET;
1767 }
1768
1769 /**
1770 * Returns is filter content match interface.
1771 *
1772 * @param name name of node
1773 * @return is filter content match interface
1774 */
1775 static String isFilterContentMatchInterface(String name) {
1776 String method = " /**\n" +
1777 " * Checks if the passed " + name + " maps the content match query condition.\n" +
1778 " *\n" +
1779 " * @param " + getSmallCase(name) + SPACE + getSmallCase(name) + SPACE + "being passed to check" +
1780 " for" +
1781 " content match\n" +
1782 " * @return match result\n" +
1783 " */\n";
1784 return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE + FILTER_CONTENT_MATCH + OPEN_PARENTHESIS
1785 + name + SPACE + getSmallCase(name) + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1786 }
1787
1788 /**
1789 * Returns is value set interface.
1790 *
1791 * @return is value set interface
1792 */
1793 static String isLeafValueSetInterface() {
1794 String method = " /**\n" +
1795 " * Checks if the leaf value is set.\n" +
1796 " *\n" +
1797 " * @param leaf leaf whose value status needs to checked\n" +
1798 " * @return result of leaf value set in object\n" +
1799 " */\n";
1800 return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE + VALUE_LEAF_SET + OPEN_PARENTHESIS
1801 + LEAF_IDENTIFIER + SPACE + "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1802 }
1803
1804 /**
1805 * Returns is select leaf set interface.
1806 *
1807 * @return is select leaf set interface
1808 */
1809 static String isSelectLeafSetInterface() {
1810 String method = " /**\n" +
1811 " * Checks if the leaf is set to be a selected leaf.\n" +
1812 " *\n" +
1813 " * @param leaf if leaf needs to be selected\n" +
1814 " * @return result of leaf value set in object\n" +
1815 " */\n";
1816 return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE + IS_SELECT_LEAF + OPEN_PARENTHESIS
1817 + LEAF_IDENTIFIER + SPACE + "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1818 }
1819
1820 /**
1821 * Returns set select leaf set interface.
1822 *
1823 * @param name node name
1824 * @return set select leaf set interface
1825 */
1826 static String setSelectLeafSetInterface(String name) {
1827 String method = " /**\n" +
1828 " * Set a leaf to be selected.\n" +
1829 " *\n" +
1830 " * @param leaf leaf needs to be selected\n" +
1831 " */\n";
1832 return method + FOUR_SPACE_INDENTATION + name + BUILDER + SPACE + SET_SELECT_LEAF + OPEN_PARENTHESIS
1833 + LEAF_IDENTIFIER + SPACE + "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1834 }
1835
1836 /**
1837 * Returns leaf identifier interface enum signature.
1838 *
1839 * @param name name of node
1840 * @return leaf identifier interface enum signature
1841 */
1842 static String getInterfaceLeafIdEnumSignature(String name) {
1843 String start = " /**\n" +
1844 " * Identify the leaf of " + name + PERIOD + NEW_LINE +
1845 " */\n";
1846 return start + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + ENUM + SPACE + LEAF_IDENTIFIER + SPACE +
1847 OPEN_CURLY_BRACKET + NEW_LINE;
1848 }
1849
1850 /**
1851 * Returns interface leaf identifier enum method.
1852 *
1853 * @return interface leaf identifier enum method
1854 */
1855 static String getInterfaceLeafIdEnumMethods() {
1856 return " private int leafIndex;\n" +
1857 "\n" +
1858 " public int getLeafIndex() {\n" +
1859 " return leafIndex;\n" +
1860 " }\n" +
1861 "\n" +
1862 " LeafIdentifier(int value) {\n" +
1863 " this.leafIndex = value;\n" +
1864 " }\n" +
1865 " }\n";
1866 }
1867
1868 /**
1869 * Returns getter methods for operation attributes.
1870 *
1871 * @return getter methods for operation attributes
1872 */
1873 static String getOperationAttributesGetters() {
1874 return "\n" +
1875 " /**\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301876 " * Returns the valueLeafFlags.\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301877 " *\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301878 " * @return value of valueLeafFlags\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301879 " */\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301880 " public BitSet getValueLeafFlags() {\n" +
1881 " return valueLeafFlags;\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301882 " }\n" +
1883 "\n" +
1884 " /**\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301885 " * Returns the selectLeafFlags.\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301886 " *\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301887 " * @return value of selectLeafFlags\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301888 " */\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301889 " public BitSet getSelectLeafFlags() {\n" +
1890 " return selectLeafFlags;\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301891 " }\n" +
1892 "\n";
1893 }
1894
1895 /**
1896 * Returns getter for operation type.
1897 *
1898 * @return getter for operation type
1899 */
1900 static String getGetterForOperationType() {
1901 return " /**\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301902 " * Returns the operationType.\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301903 " *\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301904 " * @return value of operationType\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301905 " */\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301906 " public OperationType getOperationType() {\n" +
1907 " return operationType;\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301908 " }\n";
1909 }
1910
1911 /**
1912 * Returns getters for value and select leaf.
1913 *
1914 * @return getters for value and select leaf
1915 */
1916 static String getGettersForValueAndSelectLeaf() {
1917 return "\n" +
1918 " @Override\n" +
1919 " public boolean isLeafValueSet(LeafIdentifier leaf) {\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301920 " return getValueLeafFlags().get(leaf.getLeafIndex());\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301921 " }\n" +
1922 "\n" +
1923 " @Override\n" +
1924 " public boolean isSelectLeaf(LeafIdentifier leaf) {\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301925 " return getSelectLeafFlags().get(leaf.getLeafIndex());\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301926 " }\n";
1927 }
1928
1929 /**
1930 * Returns setter for operation type.
1931 *
1932 * @param name name of node
1933 * @return setter for operation type
1934 */
1935 static String getSetterForOperationType(String name) {
1936 return " /**\n" +
1937 " * Set operation type.\n" +
1938 " *\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301939 " * @param operationType operation type\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301940 " */\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301941 " public " + name + BUILDER + " setOperationType(OperationType operationType) {\n" +
1942 " this.operationType = operationType;\n" +
Bharat saraswale304c252016-08-16 20:56:20 +05301943 " return this;\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301944 " }\n";
1945 }
1946
1947 /**
1948 * Returns setter for select leaf.
1949 *
1950 * @param name name of node
1951 * @param isRootNode if root node
1952 * @return setter for select leaf
1953 */
1954 static String getSetterForSelectLeaf(String name, boolean isRootNode) {
1955 String append = OVERRIDE;
1956 if (isRootNode) {
1957 append = EMPTY_STRING;
1958 }
1959 return "\n" +
1960 " " + append + "\n" +
1961 " public " + name + BUILDER + " selectLeaf(LeafIdentifier leaf) {\n" +
Gaurav Agrawal8a147522016-08-10 13:43:01 +05301962 " getSelectLeafFlags().set(leaf.getLeafIndex());\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +05301963 " return this;\n" +
1964 " }\n";
1965 }
Vidyashree Ramab3670472016-08-06 15:49:56 +05301966
1967 private static String getListAttribute(String attrType, YangCompilerAnnotation compilerAnnotation) {
1968 String listAttr;
1969 if (compilerAnnotation != null && compilerAnnotation.getYangAppDataStructure() != null) {
1970 switch (compilerAnnotation.getYangAppDataStructure().getDataStructure()) {
1971 case QUEUE: {
1972 listAttr = QUEUE + DIAMOND_OPEN_BRACKET + attrType + DIAMOND_CLOSE_BRACKET;
1973 break;
1974 }
1975 case SET: {
1976 listAttr = SET + DIAMOND_OPEN_BRACKET + attrType + DIAMOND_CLOSE_BRACKET;
1977 break;
1978 }
1979 case LIST: {
1980 listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
1981 break;
1982 }
1983 default: {
1984 listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
1985 }
1986 }
1987 } else {
1988 listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
1989 }
1990 return listAttr;
1991 }
Bharat saraswal97459962016-02-20 21:57:16 +05301992}