blob: 06a3f4b8fc9c51e994abefa4d549823a809add11 [file] [log] [blame]
Bharat saraswal870c56f2016-02-20 21:57:16 +05301/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2016-present Open Networking Laboratory
Bharat saraswal870c56f2016-02-20 21:57:16 +05303 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.onosproject.yangutils.translator.tojava.utils;
18
Bharat saraswalc0e04842016-05-12 13:16:57 +053019import java.util.List;
20import java.util.Map;
janani be18b5342016-07-13 21:06:41 +053021
Bharat saraswald50c6382016-07-14 21:57:13 +053022import org.onosproject.yangutils.datamodel.YangAtomicPath;
23import org.onosproject.yangutils.datamodel.YangAugmentableNode;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053024import org.onosproject.yangutils.datamodel.YangLeaf;
25import org.onosproject.yangutils.datamodel.YangLeafList;
Bharat saraswale707f032016-07-14 23:33:55 +053026import org.onosproject.yangutils.datamodel.YangLeafRef;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053027import org.onosproject.yangutils.datamodel.YangLeavesHolder;
Bharat saraswalb551aae2016-07-14 15:18:20 +053028import org.onosproject.yangutils.datamodel.YangNode;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053029import org.onosproject.yangutils.datamodel.YangType;
janani be18b5342016-07-13 21:06:41 +053030import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053031import org.onosproject.yangutils.translator.exception.TranslatorException;
Vinod Kumar S38046502016-03-23 15:30:27 +053032import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053033import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
Bharat saraswald50c6382016-07-14 21:57:13 +053034import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053035import org.onosproject.yangutils.translator.tojava.TempJavaBeanFragmentFiles;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053036import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053037import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
Bharat saraswale2d51d62016-03-23 19:40:35 +053038
Bharat saraswald50c6382016-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-Huaweib9999eb2016-07-14 16:53:09 +053042import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DECIMAL64;
Bharat saraswald50c6382016-07-14 21:57:13 +053043import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.EMPTY;
Shankara-Huaweib9999eb2016-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 saraswald50c6382016-07-14 21:57:13 +053047import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT8;
Bharat saraswale707f032016-07-14 23:33:55 +053048import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.LEAFREF;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053049import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT16;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053050import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT32;
Bharat saraswald50c6382016-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 saraswal33dfa012016-05-17 19:59:16 +053053import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053054import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053055import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.getJavaAttributeOfLeaf;
56import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.getJavaAttributeOfLeafList;
Bharat saraswald50c6382016-07-14 21:57:13 +053057import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getAugmentedClassNameForDataMethods;
58import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getParentNodeNameForDataMethods;
59import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getSetOfNodeIdentifiers;
Bharat saraswale707f032016-07-14 23:33:55 +053060import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.INT_TYPE_CONFLICT;
Bharat saraswal33dfa012016-05-17 19:59:16 +053061import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE;
62import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE_ANNOTATION;
Bharat saraswale707f032016-07-14 23:33:55 +053063import static org.onosproject.yangutils.utils.UtilConstants.ADD;
Bharat saraswale2d51d62016-03-23 19:40:35 +053064import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
65import static org.onosproject.yangutils.utils.UtilConstants.AND;
Bharat saraswald50c6382016-07-14 21:57:13 +053066import static org.onosproject.yangutils.utils.UtilConstants.APP_INSTANCE;
Bharat saraswalb551aae2016-07-14 15:18:20 +053067import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
Bharat saraswald50c6382016-07-14 21:57:13 +053068import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +053069import static org.onosproject.yangutils.utils.UtilConstants.BASE64;
Bharat saraswald50c6382016-07-14 21:57:13 +053070import static org.onosproject.yangutils.utils.UtilConstants.BASE_CLASS;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +053071import static org.onosproject.yangutils.utils.UtilConstants.BIG_DECIMAL;
Bharat saraswalb1170bd2016-07-14 13:26:18 +053072import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
Bharat saraswald50c6382016-07-14 21:57:13 +053073import static org.onosproject.yangutils.utils.UtilConstants.BITSET;
Bharat saraswale2d51d62016-03-23 19:40:35 +053074import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053075import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053076import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
77import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053078import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053079import static org.onosproject.yangutils.utils.UtilConstants.BYTE_WRAPPER;
Bharat saraswalc0e04842016-05-12 13:16:57 +053080import static org.onosproject.yangutils.utils.UtilConstants.CASE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053081import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +053082import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
Bharat saraswalb551aae2016-07-14 15:18:20 +053083import static org.onosproject.yangutils.utils.UtilConstants.CLASS;
84import static org.onosproject.yangutils.utils.UtilConstants.CLASS_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +053085import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
86import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
Bharat saraswald50c6382016-07-14 21:57:13 +053087import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +053088import static org.onosproject.yangutils.utils.UtilConstants.COLON;
Bharat saraswale2d51d62016-03-23 19:40:35 +053089import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
Bharat saraswal33dfa012016-05-17 19:59:16 +053090import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE;
91import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE_ANNOTATION;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +053092import static org.onosproject.yangutils.utils.UtilConstants.DECODE;
Bharat saraswalc0e04842016-05-12 13:16:57 +053093import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
Bharat saraswale2d51d62016-03-23 19:40:35 +053094import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
95import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +053096import static org.onosproject.yangutils.utils.UtilConstants.DOUBLE;
Bharat saraswale2d51d62016-03-23 19:40:35 +053097import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
Bharat saraswale707f032016-07-14 23:33:55 +053098import static org.onosproject.yangutils.utils.UtilConstants.ELSE;
Bharat saraswale2d51d62016-03-23 19:40:35 +053099import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
100import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
101import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530102import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
103import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530104import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
Bharat saraswald50c6382016-07-14 21:57:13 +0530105import static org.onosproject.yangutils.utils.UtilConstants.FILTER_CONTENT_MATCH;
106import static org.onosproject.yangutils.utils.UtilConstants.FILTER_LEAF;
107import static org.onosproject.yangutils.utils.UtilConstants.FILTER_LEAF_LIST;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530108import static org.onosproject.yangutils.utils.UtilConstants.FOR;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530109import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530110import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
111import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530112import static org.onosproject.yangutils.utils.UtilConstants.GET;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530113import static org.onosproject.yangutils.utils.UtilConstants.GET_DECODER;
Bharat saraswald50c6382016-07-14 21:57:13 +0530114import static org.onosproject.yangutils.utils.UtilConstants.GET_FILTER_LEAF;
115import static org.onosproject.yangutils.utils.UtilConstants.GET_FILTER_LEAF_LIST;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530116import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
Bharat saraswald50c6382016-07-14 21:57:13 +0530117import static org.onosproject.yangutils.utils.UtilConstants.GET_OPERATION_TYPE;
118import static org.onosproject.yangutils.utils.UtilConstants.GET_SELECT_LEAF;
119import static org.onosproject.yangutils.utils.UtilConstants.GET_SELECT_LEAF_LIST;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530120import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
121import static org.onosproject.yangutils.utils.UtilConstants.HASH;
122import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
123import static org.onosproject.yangutils.utils.UtilConstants.IF;
Bharat saraswald50c6382016-07-14 21:57:13 +0530124import static org.onosproject.yangutils.utils.UtilConstants.ILLEGAL_ARGUMENT_EXCEPTION;
125import static org.onosproject.yangutils.utils.UtilConstants.ILLEGAL_ARGUMENT_EXCEPTION_MSG;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530126import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
127import static org.onosproject.yangutils.utils.UtilConstants.INT;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530128import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
Bharat saraswale707f032016-07-14 23:33:55 +0530129import static org.onosproject.yangutils.utils.UtilConstants.INT_MAX_RANGE;
130import static org.onosproject.yangutils.utils.UtilConstants.INT_MIN_RANGE;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530131import static org.onosproject.yangutils.utils.UtilConstants.LIST;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530132import static org.onosproject.yangutils.utils.UtilConstants.LONG;
Bharat saraswale707f032016-07-14 23:33:55 +0530133import static org.onosproject.yangutils.utils.UtilConstants.LONG_MAX_RANGE;
134import static org.onosproject.yangutils.utils.UtilConstants.LONG_MIN_RANGE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530135import static org.onosproject.yangutils.utils.UtilConstants.LONG_WRAPPER;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530136import static org.onosproject.yangutils.utils.UtilConstants.MAP;
Bharat saraswale707f032016-07-14 23:33:55 +0530137import static org.onosproject.yangutils.utils.UtilConstants.MAX_RANGE;
138import static org.onosproject.yangutils.utils.UtilConstants.MIN_RANGE;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530139import static org.onosproject.yangutils.utils.UtilConstants.NEW;
140import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Bharat saraswald50c6382016-07-14 21:57:13 +0530141import static org.onosproject.yangutils.utils.UtilConstants.NOT;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530142import static org.onosproject.yangutils.utils.UtilConstants.NULL;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530143import static org.onosproject.yangutils.utils.UtilConstants.OBJ;
144import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
145import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
146import static org.onosproject.yangutils.utils.UtilConstants.OF;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530147import static org.onosproject.yangutils.utils.UtilConstants.OMIT_NULL_VALUE_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530148import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
149import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
Bharat saraswald50c6382016-07-14 21:57:13 +0530150import static org.onosproject.yangutils.utils.UtilConstants.OPERATION;
151import static org.onosproject.yangutils.utils.UtilConstants.OPERATION_ENUM;
152import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM_TYPE;
153import static org.onosproject.yangutils.utils.UtilConstants.OR_OPERATION;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530154import static org.onosproject.yangutils.utils.UtilConstants.OTHER;
155import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530156import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BOOLEAN;
157import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BYTE;
158import static org.onosproject.yangutils.utils.UtilConstants.PARSE_INT;
159import static org.onosproject.yangutils.utils.UtilConstants.PARSE_LONG;
160import static org.onosproject.yangutils.utils.UtilConstants.PARSE_SHORT;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530161import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
Bharat saraswale707f032016-07-14 23:33:55 +0530162import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530163import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530164import static org.onosproject.yangutils.utils.UtilConstants.PUT;
Bharat saraswald50c6382016-07-14 21:57:13 +0530165import static org.onosproject.yangutils.utils.UtilConstants.QUESTION_MARK;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530166import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
Bharat saraswald50c6382016-07-14 21:57:13 +0530167import static org.onosproject.yangutils.utils.UtilConstants.RECEIVED_OBJECT;
168import static org.onosproject.yangutils.utils.UtilConstants.REPLACE_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530169import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530170import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
Bharat saraswald50c6382016-07-14 21:57:13 +0530171import static org.onosproject.yangutils.utils.UtilConstants.SELECT_LEAF;
172import static org.onosproject.yangutils.utils.UtilConstants.SELECT_LEAF_LIST;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530173import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
174import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
Bharat saraswald50c6382016-07-14 21:57:13 +0530175import static org.onosproject.yangutils.utils.UtilConstants.SET_OPERATION_TYPE;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530176import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530177import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
Bharat saraswald50c6382016-07-14 21:57:13 +0530178import static org.onosproject.yangutils.utils.UtilConstants.SINGLE_QUOTE;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530179import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
180import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswald50c6382016-07-14 21:57:13 +0530181import static org.onosproject.yangutils.utils.UtilConstants.SPLIT_STRING;
182import static org.onosproject.yangutils.utils.UtilConstants.SQUARE_BRACKETS;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530183import static org.onosproject.yangutils.utils.UtilConstants.STARTED_LOG_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530184import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530185import static org.onosproject.yangutils.utils.UtilConstants.STOPPED_LOG_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530186import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
187import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530188import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530189import static org.onosproject.yangutils.utils.UtilConstants.THIS;
Bharat saraswald50c6382016-07-14 21:57:13 +0530190import static org.onosproject.yangutils.utils.UtilConstants.THROW;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530191import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530192import static org.onosproject.yangutils.utils.UtilConstants.TO;
Bharat saraswald50c6382016-07-14 21:57:13 +0530193import static org.onosproject.yangutils.utils.UtilConstants.TRIM_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530194import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530195import static org.onosproject.yangutils.utils.UtilConstants.TRY;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530196import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
Bharat saraswale707f032016-07-14 23:33:55 +0530197import static org.onosproject.yangutils.utils.UtilConstants.UINT_MAX_RANGE;
198import static org.onosproject.yangutils.utils.UtilConstants.UINT_MIN_RANGE;
199import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MAX_RANGE;
200import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MIN_RANGE;
201import static org.onosproject.yangutils.utils.UtilConstants.VALIDATE_RANGE;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530202import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
203import static org.onosproject.yangutils.utils.UtilConstants.VOID;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530204import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
Bharat saraswald50c6382016-07-14 21:57:13 +0530205import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_OP_PARAM_INFO;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530206import static org.onosproject.yangutils.utils.UtilConstants.YANG_UTILS_TODO;
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530207import static org.onosproject.yangutils.utils.UtilConstants.ZERO;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530208import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
209import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
210import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530211import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.FROM_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530212import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530213import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.MANAGER_SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530214import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530215import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530216import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530217import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForAddAugmentation;
218import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForGetAugmentation;
Bharat saraswale707f032016-07-14 23:33:55 +0530219import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForValidatorMethod;
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530220import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530221import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
222import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
223import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530224import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530225
226/**
Bharat saraswald9822e92016-04-05 15:13:44 +0530227 * Represents generator for methods of generated files based on the file type.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530228 */
229public final class MethodsGenerator {
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +0530230 private static final String BITS_STRING_ARRAY_VAR = "bitsTemp";
231 private static final String BIT_TEMP_VAR = "bitTemp";
Bharat saraswal870c56f2016-02-20 21:57:16 +0530232
Bharat saraswal870c56f2016-02-20 21:57:16 +0530233 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530234 * Creates an instance of method generator.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530235 */
236 private MethodsGenerator() {
237 }
238
239 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530240 * Returns the methods strings for builder interface.
241 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530242 * @param name attribute name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530243 * @param pluginConfig plugin configurations
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530244 * @return method string for builder interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530245 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530246 public static String parseBuilderInterfaceBuildMethodString(String name, YangPluginConfig pluginConfig) {
247 return getJavaDoc(BUILD_METHOD, name, false, pluginConfig) + getBuildForInterface(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530248 }
249
250 /**
251 * Returns getter string.
252 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530253 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530254 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530255 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530256 * @return getter string
257 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530258 public static String getGetterString(JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530259 YangPluginConfig pluginConfig) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530260
Vinod Kumar S38046502016-03-23 15:30:27 +0530261 String returnType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530262 String attributeName = attr.getAttributeName();
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530263
Bharat saraswal33dfa012016-05-17 19:59:16 +0530264 return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr(), pluginConfig)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530265 + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530266 }
267
268 /**
269 * Returns setter string.
270 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530271 * @param attr attribute info
272 * @param className java class name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530273 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530274 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530275 * @return setter string
276 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530277 public static String getSetterString(JavaAttributeInfo attr, String className, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530278 YangPluginConfig pluginConfig) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530279
Vinod Kumar S38046502016-03-23 15:30:27 +0530280 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530281 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530282 JavaDocGen.JavaDocType type;
Bharat saraswale707f032016-07-14 23:33:55 +0530283 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530284 type = MANAGER_SETTER_METHOD;
285 } else {
286 type = SETTER_METHOD;
287 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530288
Bharat saraswal33dfa012016-05-17 19:59:16 +0530289 return getJavaDoc(type, attributeName, attr.isListAttr(), pluginConfig)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530290 + getSetterForInterface(attributeName, attrType, className, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530291 }
292
293 /**
294 * Returns constructor method string.
295 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530296 * @param name class name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530297 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530298 * @return constructor string
299 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530300 public static String getConstructorString(String name, YangPluginConfig pluginConfig) {
301 return getJavaDoc(CONSTRUCTOR, name, false, pluginConfig);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530302 }
303
304 /**
305 * Returns default constructor method string.
306 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530307 * @param name class name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530308 * @param modifierType modifier type
Bharat saraswal33dfa012016-05-17 19:59:16 +0530309 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530310 * @return default constructor string
311 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530312 public static String getDefaultConstructorString(String name, String modifierType,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530313 YangPluginConfig pluginConfig) {
Bharat saraswal33dfa012016-05-17 19:59:16 +0530314 return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false, pluginConfig)
315 + getDefaultConstructor(name, modifierType)
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530316 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530317 }
318
319 /**
320 * Returns check not null string.
321 *
322 * @param name attribute name
323 * @return check not null string
324 */
325 public static String getCheckNotNull(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530326 return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING + OPEN_PARENTHESIS + name + COMMA + SPACE + name
327 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530328 }
329
330 /**
331 * Returns build method string.
332 *
333 * @param name class name
334 * @return build string
335 */
336 public static String getBuildString(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530337 return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530338 }
339
340 /**
341 * Returns the getter method strings for class file.
342 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530343 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530344 * @param generatedJavaFiles for the type of java file being generated
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530345 * @return getter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530346 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530347 public static String getGetterForClass(JavaAttributeInfo attr, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530348
Vinod Kumar S38046502016-03-23 15:30:27 +0530349 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530350 String attributeName = attr.getAttributeName();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530351
352 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530353 return getGetter(attrQuaifiedType, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530354 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530355 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530356 return getGetter(listAttr, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530357 }
358
359 /**
360 * Returns getter for attribute.
361 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530362 * @param type return type
363 * @param name attribute name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530364 * @param generatedJavaFiles generated java files
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530365 * @return getter for attribute
366 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530367 public static String getGetter(String type, String name, int generatedJavaFiles) {
Bharat saraswalcad0e652016-05-26 23:48:38 +0530368 String ret = parseTypeForReturnValue(type);
Bharat saraswale707f032016-07-14 23:33:55 +0530369 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
janani b4a6711a2016-05-17 13:12:22 +0530370 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCapitalCase(name)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530371 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
372 EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION +
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530373 RETURN + SPACE + ret + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530374 } else {
375 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + name
376 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
377 EIGHT_SPACE_INDENTATION + RETURN + SPACE + name + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
378 + CLOSE_CURLY_BRACKET;
379 }
380
Bharat saraswal870c56f2016-02-20 21:57:16 +0530381 }
382
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530383 /*Provides string to return for type.*/
Bharat saraswalcad0e652016-05-26 23:48:38 +0530384 private static String parseTypeForReturnValue(String type) {
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530385 switch (type) {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530386 case BYTE:
387 case INT:
388 case SHORT:
389 case LONG:
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +0530390 case DOUBLE:
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530391 return "0";
392 case BOOLEAN_DATA_TYPE:
393 return FALSE;
394 default:
395 return null;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530396 }
397 }
398
Bharat saraswal870c56f2016-02-20 21:57:16 +0530399 /**
400 * Returns the setter method strings for class file.
401 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530402 * @param attr attribute info
403 * @param className name of the class
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530404 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530405 * @return setter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530406 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530407 public static String getSetterForClass(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530408
Vinod Kumar S38046502016-03-23 15:30:27 +0530409 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530410 String attributeName = attr.getAttributeName();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530411 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530412 return getSetter(className, attributeName, attrQuaifiedType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530413 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530414 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530415 return getSetter(className, attributeName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530416 }
417
418 /**
419 * Returns setter for attribute.
420 *
421 * @param className class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530422 * @param name attribute name
423 * @param type return type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530424 * @return setter for attribute
425 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530426 private static String getSetter(String className, String name, String type, int generatedJavaFiles) {
Bharat saraswale707f032016-07-14 23:33:55 +0530427 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530428 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX
janani b4a6711a2016-05-17 13:12:22 +0530429 + getCapitalCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530430 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO +
431 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530432 } else if (generatedJavaFiles == GENERATE_EVENT_SUBJECT_CLASS) {
433 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + name + OPEN_PARENTHESIS + type + SPACE
434 + name + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
435 + THIS + PERIOD + name + SPACE + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE
436 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530437 } else {
438 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE +
439 name + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
Bharat saraswal33dfa012016-05-17 19:59:16 +0530440 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE
441 + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE
442 + THIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530443 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530444 }
445
446 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530447 * Returns the setter method strings for class file.
448 *
449 * @param attr attribute info
450 * @return setter method for class
451 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530452 public static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530453
Vinod Kumar S38046502016-03-23 15:30:27 +0530454 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530455 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530456 return getTypeDefSetter(attrQuaifiedType, attributeName);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530457 }
458
459 /**
460 * Returns type def's setter for attribute.
461 *
462 * @param type data type
463 * @param name attribute name
464 * @return setter for type def's attribute
465 */
466 private static String getTypeDefSetter(String type, String name) {
janani b4a6711a2016-05-17 13:12:22 +0530467 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(name)
Bharat saraswale2d51d62016-03-23 19:40:35 +0530468 + OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
469 + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE
470 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530471 }
472
473 /**
474 * Returns override string.
475 *
476 * @return override string
477 */
478 public static String getOverRideString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530479 return NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530480 }
481
482 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530483 * Returns the getter method strings for interface file.
484 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530485 * @param yangName name of the attribute
486 * @param returnType return type of attribute
487 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530488 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530489 * @return getter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530490 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530491 public static String getGetterForInterface(String yangName, String returnType, boolean isList,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530492 int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530493
494 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530495 return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530496 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530497 String listAttr = getListString() + returnType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530498 return getGetterInterfaceString(listAttr, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530499 }
500
501 /**
502 * Returns getter for attribute in interface.
503 *
504 * @param returnType return type
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530505 * @param yangName attribute name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530506 * @return getter for interface
507 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530508 private static String getGetterInterfaceString(String returnType, String yangName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530509 int generatedJavaFiles) {
Bharat saraswale707f032016-07-14 23:33:55 +0530510 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
janani b4a6711a2016-05-17 13:12:22 +0530511 return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCapitalCase(yangName)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530512 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
513 } else {
514 return FOUR_SPACE_INDENTATION + returnType + SPACE + yangName
515 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
516 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530517 }
518
519 /**
520 * Returns the setter method strings for interface file.
521 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530522 * @param attrName name of the attribute
523 * @param attrType return type of attribute
524 * @param className name of the java class being generated
525 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530526 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530527 * @return setter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530528 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530529 public static String getSetterForInterface(String attrName, String attrType, String className,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530530 boolean isList, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530531
532 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530533 return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530534 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530535 String listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530536 return getSetterInterfaceString(className, attrName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530537 }
538
539 /**
540 * Returns setter string for interface.
541 *
542 * @param className class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530543 * @param attrName attribute name
544 * @param attrType attribute type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530545 * @return setter string
546 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530547 private static String getSetterInterfaceString(String className, String attrName, String attrType,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530548 int generatedJavaFiles) {
Bharat saraswale707f032016-07-14 23:33:55 +0530549 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530550
janani b4a6711a2016-05-17 13:12:22 +0530551 return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(attrName)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530552 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
553 } else {
554 return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + attrName
555 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
556 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530557 }
558
559 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530560 * Returns list string.
561 *
562 * @return list string
563 */
564 private static String getListString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530565 return LIST + DIAMOND_OPEN_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530566 }
567
568 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530569 * Returns return type for attribute.
570 *
571 * @param attr attribute info
572 * @return return type
573 */
574 private static String getReturnType(JavaAttributeInfo attr) {
575
Bharat saraswale2d51d62016-03-23 19:40:35 +0530576 String returnType = EMPTY_STRING;
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530577 if (attr.isQualifiedName() && attr.getImportInfo().getPkgInfo() != null) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530578 returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
Vinod Kumar S38046502016-03-23 15:30:27 +0530579 }
580 returnType = returnType + attr.getImportInfo().getClassInfo();
581 return returnType;
582 }
583
584 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530585 * Returns the build method strings for interface file.
586 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530587 * @param yangName name of the interface
588 * @return build method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530589 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530590 public static String getBuildForInterface(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530591 return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
592 + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530593 }
594
595 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530596 * Returns constructor string for impl class.
597 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530598 * @param yangName class name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530599 * @param pluginConfig plugin configurations
Vinod Kumar S38046502016-03-23 15:30:27 +0530600 * @return constructor string
601 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530602 public static String getConstructorStart(String yangName, YangPluginConfig pluginConfig) {
Vinod Kumar S38046502016-03-23 15:30:27 +0530603
Bharat saraswal33dfa012016-05-17 19:59:16 +0530604 String javadoc = getConstructorString(yangName, pluginConfig);
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530605 String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + getCapitalCase(DEFAULT) + yangName +
606 OPEN_PARENTHESIS + yangName + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT
607 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
Vinod Kumar S38046502016-03-23 15:30:27 +0530608 return javadoc + constructor;
609 }
610
611 /**
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530612 * Returns constructor string for op param class.
613 *
Bharat saraswald50c6382016-07-14 21:57:13 +0530614 * @param yangName class name
615 * @param pluginConfig plugin configurations
616 * @return constructor string
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530617 */
618 public static String getOpParamConstructorStart(String yangName, YangPluginConfig pluginConfig) {
619
620 String javadoc = getConstructorString(yangName, pluginConfig);
621 String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + OPERATION +
622 OPEN_PARENTHESIS + yangName + OPERATION + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT
623 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
624 return javadoc + constructor;
625 }
Bharat saraswald50c6382016-07-14 21:57:13 +0530626
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530627 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530628 * Returns the constructor strings for class file.
629 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530630 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530631 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530632 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530633 * @return constructor for class
634 */
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530635 public static String getConstructor(JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530636 YangPluginConfig pluginConfig) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530637
janani b4a6711a2016-05-17 13:12:22 +0530638 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530639 String constructor;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530640
Bharat saraswale707f032016-07-14 23:33:55 +0530641 if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530642 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD
643 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
644 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
645 + getCapitalCase(getCamelCase(attributeName, pluginConfig.getConflictResolver()))
646 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530647 } else {
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530648 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD
649 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
650 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD
651 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) +
652 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530653 }
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530654 return constructor;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530655 }
656
657 /**
Gaurav Agrawal56527662016-04-20 15:49:17 +0530658 * Returns the rpc strings for service interface.
659 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530660 * @param rpcName name of the rpc
661 * @param inputName name of input
662 * @param outputName name of output
Bharat saraswal33dfa012016-05-17 19:59:16 +0530663 * @param pluginConfig plugin configurations
Gaurav Agrawal56527662016-04-20 15:49:17 +0530664 * @return rpc method string
665 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530666 public static String getRpcServiceMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530667 YangPluginConfig pluginConfig) {
Gaurav Agrawal56527662016-04-20 15:49:17 +0530668
Bharat saraswal33dfa012016-05-17 19:59:16 +0530669 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswalcad0e652016-05-26 23:48:38 +0530670 if (!inputName.equals(EMPTY_STRING)) {
671 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530672 }
Bharat saraswalcad0e652016-05-26 23:48:38 +0530673 return FOUR_SPACE_INDENTATION + outputName + SPACE + rpcName + OPEN_PARENTHESIS + inputName
674 + CLOSE_PARENTHESIS + SEMI_COLAN;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530675 }
676
677 /**
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530678 * Returns the rpc strings for manager impl.
679 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530680 * @param rpcName name of the rpc
681 * @param inputName name of input
682 * @param outputName name of output
Bharat saraswal33dfa012016-05-17 19:59:16 +0530683 * @param pluginConfig plugin configurations
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530684 * @return rpc method string
685 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530686 public static String getRpcManagerMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530687 YangPluginConfig pluginConfig) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530688
Bharat saraswal33dfa012016-05-17 19:59:16 +0530689 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswalcad0e652016-05-26 23:48:38 +0530690 if (!inputName.equals(EMPTY_STRING)) {
691 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530692 }
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530693
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530694 String method = getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName
695 + OPEN_PARENTHESIS + inputName + CLOSE_PARENTHESIS + SPACE
696 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530697 if (!outputName.contentEquals(VOID)) {
Bharat saraswalcad0e652016-05-26 23:48:38 +0530698 method += EIGHT_SPACE_INDENTATION + RETURN + SPACE + parseTypeForReturnValue(outputName) + SEMI_COLAN
699 + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530700 }
701 method += FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
702
703 return method;
704 }
705
706 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530707 * Returns the build method strings for class file.
708 *
709 * @param yangName class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530710 * @return build method string for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530711 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530712 public static String getBuild(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530713 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530714 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE +
715 getCapitalCase(DEFAULT) + yangName + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN
716 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530717 }
718
719 /**
720 * Returns the Default constructor strings for class file.
721 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530722 * @param name name of the class
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530723 * @param modifierType modifier type for default constructor
Bharat saraswal870c56f2016-02-20 21:57:16 +0530724 * @return Default constructor for class
725 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530726 private static String getDefaultConstructor(String name, String modifierType) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530727 return FOUR_SPACE_INDENTATION + modifierType + SPACE + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
728 + OPEN_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530729 }
730
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530731 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530732 * Returns to string method's open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530733 *
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530734 * @return string method's open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530735 */
736 public static String getToStringMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530737 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STRING_DATA_TYPE + SPACE + TO
738 + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
739 + EIGHT_SPACE_INDENTATION + RETURN + GOOGLE_MORE_OBJECT_METHOD_STRING + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530740 }
741
742 /**
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530743 * Returns to string leaf for get method.
744 *
Bharat saraswald50c6382016-07-14 21:57:13 +0530745 * @return string leaf for get method
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530746 */
747 public static String getToStringLeafgetter() {
748 return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BITSET + SPACE + GET_FILTER_LEAF
Bharat saraswald50c6382016-07-14 21:57:13 +0530749 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530750 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + FILTER_LEAF + SEMI_COLAN + NEW_LINE
751 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
752 }
753
754 /**
755 * Returns to string select leaf for get method.
756 *
757 * @return select leaf string for get method
758 */
759 public static String getToStringSelectLeafgetter() {
760 return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BITSET + SPACE + GET_SELECT_LEAF
Bharat saraswald50c6382016-07-14 21:57:13 +0530761 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530762 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + SELECT_LEAF + SEMI_COLAN + NEW_LINE
763 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
764 }
765
766 /**
767 * Returns to string leaf list for get method.
768 *
Bharat saraswald50c6382016-07-14 21:57:13 +0530769 * @return string leaf list for get method
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530770 */
771 public static String getToStringLeafListgetter() {
772 return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BITSET + SPACE + GET_FILTER_LEAF_LIST
Bharat saraswald50c6382016-07-14 21:57:13 +0530773 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530774 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + FILTER_LEAF_LIST + SEMI_COLAN + NEW_LINE
775 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
776 }
777
778 /**
779 * Returns to string select leaf list for get.
780 *
781 * @return select leaf list list for get
782 */
783 public static String getToStringSelectLeafListgetter() {
784 return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BITSET + SPACE + GET_SELECT_LEAF_LIST
Bharat saraswald50c6382016-07-14 21:57:13 +0530785 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530786 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + SELECT_LEAF_LIST + SEMI_COLAN + NEW_LINE
787 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
788 }
789
790 /**
791 * Returns to string operation type for get method.
792 *
793 * @return operation type for get method
794 */
795 public static String getOperationTypegetter() {
796 return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + OPERATION_ENUM
Bharat saraswald50c6382016-07-14 21:57:13 +0530797 + SPACE + GET_OPERATION_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530798 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE
799 + OP_PARAM_TYPE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
800 }
801
802 /**
803 * Returns to string operation type for set.
804 *
805 * @return operation type set method
806 */
807 public static String getOperationTypeSetter() {
808 return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_OPERATION_TYPE
Bharat saraswald50c6382016-07-14 21:57:13 +0530809 + OPEN_PARENTHESIS + OPERATION_ENUM + SPACE + getSmallCase(OPERATION_ENUM) + CLOSE_PARENTHESIS
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530810 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
811 + OP_PARAM_TYPE + SPACE + EQUAL + SPACE + getSmallCase(OPERATION_ENUM) + SEMI_COLAN + NEW_LINE
812 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
813 }
814
815 /**
816 * Returns string for leaf set method.
817 *
Bharat saraswald50c6382016-07-14 21:57:13 +0530818 * @param className class name
819 * @param curnode current YANG node
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530820 * @param pluginConfig plugin configurations
Bharat saraswald50c6382016-07-14 21:57:13 +0530821 * @return string for leaf set method
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530822 */
823 public static String getSetterForLeaf(String className, YangNode curnode, YangPluginConfig pluginConfig) {
824
825 int numleaf = 1;
826 String filterMethod = "";
827 TempJavaBeanFragmentFiles tempFragmentFiles = ((JavaCodeGeneratorInfo) curnode)
828 .getTempJavaCodeFragmentFiles().getBeanTempFiles();
829 if (curnode instanceof YangLeavesHolder) {
830 YangLeavesHolder leavesHolder = (YangLeavesHolder) curnode;
831 List<YangLeaf> leaves = leavesHolder.getListOfLeaf();
832 if (leaves != null && !leaves.isEmpty()) {
833 for (YangLeaf leaf : leaves) {
834 JavaAttributeInfo javaAttributeInfo = getJavaAttributeOfLeaf(tempFragmentFiles, leaf, pluginConfig);
835 String attrQuaifiedType = getReturnType(javaAttributeInfo);
836 String attributeName = javaAttributeInfo.getAttributeName();
837
838 filterMethod = filterMethod + NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE
839 + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE
840 + attributeName + OPEN_PARENTHESIS + attrQuaifiedType
841 + SPACE + RECEIVED_OBJECT + attributeName + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
842 + NEW_LINE + EIGHT_SPACE_INDENTATION + attributeName + SPACE + EQUAL + SPACE
843 + RECEIVED_OBJECT + attributeName + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
844 + GET_FILTER_LEAF + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + SET_METHOD_PREFIX
845 + OPEN_PARENTHESIS + String.valueOf(numleaf) + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
846 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + THIS + SEMI_COLAN + NEW_LINE
847 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
848 numleaf++;
849 }
850 }
851 }
852 return filterMethod;
853 }
854
855 /**
856 * Returns string for leaf list set method.
857 *
Bharat saraswald50c6382016-07-14 21:57:13 +0530858 * @param className class name
859 * @param curnode current YANG node
860 * @param pluginConfig plugin configurations
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530861 * @return string for leaf list set method
862 */
863 public static String getSetterForLeafList(String className, YangNode curnode, YangPluginConfig pluginConfig) {
864
865 int numleaf = 1;
866 String filterMethod = "";
867 TempJavaBeanFragmentFiles tempFragmentFiles = ((JavaCodeGeneratorInfo) curnode)
868 .getTempJavaCodeFragmentFiles().getBeanTempFiles();
869 if (curnode instanceof YangLeavesHolder) {
870 YangLeavesHolder leavesHolder = (YangLeavesHolder) curnode;
871 List<YangLeafList> listOfLeafList = leavesHolder.getListOfLeafList();
872
873 if (listOfLeafList != null && !listOfLeafList.isEmpty()) {
874 for (YangLeafList leafList : listOfLeafList) {
875 JavaAttributeInfo javaAttributeInfo = getJavaAttributeOfLeafList(tempFragmentFiles, leafList,
Bharat saraswald50c6382016-07-14 21:57:13 +0530876 pluginConfig);
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530877 String attributeName = javaAttributeInfo.getAttributeName();
878 String attrQuaifiedType = getReturnType(javaAttributeInfo);
879 if (javaAttributeInfo.isListAttr()) {
880 attrQuaifiedType = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
881 }
882 filterMethod = filterMethod + NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE
883 + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE
884 + attributeName + OPEN_PARENTHESIS + attrQuaifiedType
885 + SPACE + RECEIVED_OBJECT + attributeName + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
886 + NEW_LINE + EIGHT_SPACE_INDENTATION + attributeName + SPACE + EQUAL + SPACE
887 + RECEIVED_OBJECT + attributeName + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
888 + GET_FILTER_LEAF_LIST + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + SET_METHOD_PREFIX
889 + OPEN_PARENTHESIS + String.valueOf(numleaf) + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
890 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + THIS + SEMI_COLAN + NEW_LINE
891 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
892 numleaf++;
893 }
894 }
895 }
896 return filterMethod;
897 }
898
899 /**
900 * Returns whether the data type is of primitive data type.
901 *
902 * @param dataType data type to be checked
903 * @return true, if data type can have primitive data type, false otherwise
904 */
Bharat saraswale707f032016-07-14 23:33:55 +0530905 private static boolean isPrimitiveDataType(YangDataTypes dataType) {
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530906 return dataType == INT8
907 || dataType == INT16
908 || dataType == INT32
909 || dataType == INT64
910 || dataType == UINT8
911 || dataType == UINT16
912 || dataType == UINT32
913 || dataType == UINT64
914 || dataType == DECIMAL64
Bharat saraswald50c6382016-07-14 21:57:13 +0530915 || dataType == BOOLEAN
916 || dataType == EMPTY;
Bharat saraswale707f032016-07-14 23:33:55 +0530917
918 }
919
920 private static String getAttrTypeForFilterContentMatchWhenPrimitiveDataType(String attributeName) {
921 return APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
922 + SPACE + NOT + EQUAL + SPACE + attributeName + OPEN_PARENTHESIS
923 + CLOSE_PARENTHESIS;
924 }
925
926 private static String getAttrTypeForFilterContentMatchWhenNonPremitiveDatatype(String attributeName) {
927 return APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
928 + SPACE + EQUAL + EQUAL + SPACE + NULL + SPACE + OR_OPERATION + SPACE
929 + NOT + OPEN_PARENTHESIS + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
930 + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD
931 + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
932 + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS;
933 }
934
935 private static String getIfFilterContentMatchMethodImpl(String attributeName,
936 String filterMethod, int numleaf, YangType dataType) {
937 String attrQualifiedType;
938
939 if (isPrimitiveDataType(dataType.getDataType())) {
940 attrQualifiedType = getAttrTypeForFilterContentMatchWhenPrimitiveDataType(attributeName);
941 } else if (dataType.getDataType() == LEAFREF) {
942 YangType type = ((YangLeafRef) dataType.getDataTypeExtendedInfo()).getEffectiveDataType();
943 if (isPrimitiveDataType(type.getDataType())) {
944 attrQualifiedType = getAttrTypeForFilterContentMatchWhenPrimitiveDataType(attributeName);
945 } else {
946 attrQualifiedType = getAttrTypeForFilterContentMatchWhenNonPremitiveDatatype(attributeName);
947 }
948 } else {
949 attrQualifiedType = getAttrTypeForFilterContentMatchWhenNonPremitiveDatatype(attributeName);
950 }
951
952 return attrQualifiedType;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530953 }
954
955 /**
956 * Returns string for is filter content match method.
957 *
Bharat saraswald50c6382016-07-14 21:57:13 +0530958 * @param className class name
959 * @param curNode current YANG node
960 * @param pluginConfig plugin configurations
961 * @return string for is filter content match method
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530962 */
Bharat saraswald50c6382016-07-14 21:57:13 +0530963 public static String getIsFilterContentMatch(String className, YangNode curNode, YangPluginConfig pluginConfig) {
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530964
Bharat saraswale707f032016-07-14 23:33:55 +0530965 int numLeaf = 1;
966 String filterMethod = "";
Bharat saraswald50c6382016-07-14 21:57:13 +0530967 TempJavaBeanFragmentFiles tempFragmentFiles = ((JavaCodeGeneratorInfo) curNode)
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530968 .getTempJavaCodeFragmentFiles().getBeanTempFiles();
Bharat saraswald50c6382016-07-14 21:57:13 +0530969 if (curNode instanceof YangLeavesHolder) {
Bharat saraswale707f032016-07-14 23:33:55 +0530970 filterMethod = NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE
971 + SPACE + FILTER_CONTENT_MATCH + OPEN_PARENTHESIS + getCapitalCase(OBJECT)
972 + SPACE + OBJ +
973 CLOSE_PARENTHESIS + SPACE
974 + OPEN_CURLY_BRACKET + NEW_LINE;
975 filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + getCapitalCase(DEFAULT)
976 + getCapitalCase(className) + SPACE + APP_INSTANCE + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS +
977 getCapitalCase(DEFAULT) + getCapitalCase(className) + CLOSE_PARENTHESIS + OBJ +
978 SEMI_COLAN + NEW_LINE;
979 if (curNode instanceof YangAugmentableNode) {
980 filterMethod = filterMethod + getAugmentableOpParamSyntax();
981 }
982
Bharat saraswald50c6382016-07-14 21:57:13 +0530983 YangLeavesHolder leavesHolder = (YangLeavesHolder) curNode;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530984 List<YangLeaf> leaves = leavesHolder.getListOfLeaf();
985 List<YangLeafList> listOfLeafList = leavesHolder.getListOfLeafList();
Bharat saraswale707f032016-07-14 23:33:55 +0530986 String attrQualifiedType;
Bharat saraswald50c6382016-07-14 21:57:13 +0530987 if (leaves != null) {
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530988 for (YangLeaf leaf : leaves) {
989 JavaAttributeInfo javaAttributeInfo = getJavaAttributeOfLeaf(tempFragmentFiles, leaf,
Bharat saraswald50c6382016-07-14 21:57:13 +0530990 pluginConfig);
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530991 String attributeName = javaAttributeInfo.getAttributeName();
Bharat saraswale707f032016-07-14 23:33:55 +0530992 attrQualifiedType = getIfFilterContentMatchMethodImpl(attributeName,
993 filterMethod, numLeaf, leaf.getDataType());
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530994 filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS
995 + GET_FILTER_LEAF + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + GET_METHOD_PREFIX
Bharat saraswale707f032016-07-14 23:33:55 +0530996 + OPEN_PARENTHESIS + String.valueOf(numLeaf) + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530997 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE
Bharat saraswale707f032016-07-14 23:33:55 +0530998 + OPEN_PARENTHESIS + attrQualifiedType + CLOSE_PARENTHESIS + SPACE
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530999 + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE
1000 + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE
1001 + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswale707f032016-07-14 23:33:55 +05301002
1003 numLeaf++;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +05301004 }
1005 }
1006
Bharat saraswald50c6382016-07-14 21:57:13 +05301007 if (listOfLeafList != null) {
Bharat saraswale707f032016-07-14 23:33:55 +05301008 numLeaf = 1;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +05301009 for (YangLeafList leafList : listOfLeafList) {
1010 JavaAttributeInfo javaAttributeInfo = getJavaAttributeOfLeafList(tempFragmentFiles, leafList,
Bharat saraswald50c6382016-07-14 21:57:13 +05301011 pluginConfig);
Shankara-Huaweib9999eb2016-07-14 16:53:09 +05301012 String attributeName = javaAttributeInfo.getAttributeName();
Bharat saraswale707f032016-07-14 23:33:55 +05301013 attrQualifiedType = getIfFilterContentMatchMethodImpl(
1014 attributeName, filterMethod, numLeaf, leafList.getDataType());
Shankara-Huaweib9999eb2016-07-14 16:53:09 +05301015 filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS
1016 + GET_FILTER_LEAF_LIST + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + GET_METHOD_PREFIX
Bharat saraswale707f032016-07-14 23:33:55 +05301017 + OPEN_PARENTHESIS + String.valueOf(numLeaf) + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
Shankara-Huaweib9999eb2016-07-14 16:53:09 +05301018 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE
Bharat saraswale707f032016-07-14 23:33:55 +05301019 + OPEN_PARENTHESIS + attrQualifiedType + CLOSE_PARENTHESIS + SPACE
Shankara-Huaweib9999eb2016-07-14 16:53:09 +05301020 + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE
1021 + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE
1022 + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswale707f032016-07-14 23:33:55 +05301023 numLeaf++;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +05301024 }
1025 }
1026
Bharat saraswale707f032016-07-14 23:33:55 +05301027 filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + RETURN + SPACE + TRUE + SEMI_COLAN +
1028 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1029
Shankara-Huaweib9999eb2016-07-14 16:53:09 +05301030 }
1031 return filterMethod;
1032 }
1033
Bharat saraswald50c6382016-07-14 21:57:13 +05301034 /*Returns method string for op parms augmented syntax*/
1035 private static String getAugmentableOpParamSyntax() {
1036 return EIGHT_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + YANG_AUGMENTED_INFO + SPACE +
Bharat saraswale707f032016-07-14 23:33:55 +05301037 getSmallCase(YANG_AUGMENTED_INFO) + SPACE + COLAN + SPACE + THIS +
Bharat saraswald50c6382016-07-14 21:57:13 +05301038 PERIOD + GET_METHOD_PREFIX + YANG_AUGMENTED_INFO + MAP + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD
1039 + VALUE + "s" + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
1040 NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + NOT + OPEN_PARENTHESIS +
1041 getSmallCase(YANG_AUGMENTED_INFO) + SPACE + INSTANCE_OF + SPACE + YANG_AUGMENTED_OP_PARAM_INFO +
1042 CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
1043 SIXTEEN_SPACE_INDENTATION + THROW + SPACE + NEW + SPACE + ILLEGAL_ARGUMENT_EXCEPTION +
1044 OPEN_PARENTHESIS +
1045 ILLEGAL_ARGUMENT_EXCEPTION_MSG + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION +
1046 CLOSE_CURLY_BRACKET + NEW_LINE + NEW_LINE + TWELVE_SPACE_INDENTATION + YANG_AUGMENTED_INFO + SPACE +
1047 getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO) + SPACE + EQUAL + SPACE + APP_INSTANCE + PERIOD +
1048 GET_METHOD_PREFIX + AUGMENTED_INFO + OPEN_PARENTHESIS + OPEN_PARENTHESIS + OPEN_PARENTHESIS +
1049 YANG_AUGMENTED_OP_PARAM_INFO + CLOSE_PARENTHESIS + SPACE + getSmallCase(YANG_AUGMENTED_INFO) +
1050 CLOSE_PARENTHESIS + PERIOD + GET_METHOD_PREFIX + BASE_CLASS + CLOSE_PARENTHESIS + SEMI_COLAN +
1051 NEW_LINE + TWELVE_SPACE_INDENTATION + IF + OPEN_PARENTHESIS + NOT +
1052 OPEN_PARENTHESIS + OPEN_PARENTHESIS + YANG_AUGMENTED_OP_PARAM_INFO + CLOSE_PARENTHESIS + SPACE +
1053 getSmallCase(YANG_AUGMENTED_INFO) + CLOSE_PARENTHESIS
1054 + PERIOD + "isFilterContentMatch" + OPEN_PARENTHESIS +
1055 getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO) + CLOSE_PARENTHESIS +
1056 CLOSE_PARENTHESIS +
1057 SPACE + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE +
1058 SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
1059 + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1060 }
1061
Shankara-Huaweib9999eb2016-07-14 16:53:09 +05301062 /**
Bharat saraswald50c6382016-07-14 21:57:13 +05301063 * Returns implementation of get base class method for op param files.
1064 *
1065 * @param baseClassName base class name
1066 * @return implementation of get base class method for op param files
1067 */
1068 public static String getBaseClassMethodImpl(String baseClassName) {
1069 return NEW_LINE + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + CLASS_STRING +
1070 DIAMOND_OPEN_BRACKET +
1071 QUESTION_MARK +
1072 DIAMOND_CLOSE_BRACKET + SPACE + GET_METHOD_PREFIX + BASE_CLASS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
1073 EIGHT_SPACE_INDENTATION + RETURN + SPACE + baseClassName + PERIOD + CLASS + SEMI_COLAN + NEW_LINE +
1074 FOUR_SPACE_INDENTATION +
1075 CLOSE_CURLY_BRACKET;
1076
1077 }
1078
1079 /*
1080 * Retruns omit null value string.
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301081 *
1082 * @return omit null value string
1083 */
1084 public static String getOmitNullValueString() {
1085 return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING + NEW_LINE;
1086 }
1087
1088 /**
1089 * Returns to string method's close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301090 *
1091 * @return to string method close string
1092 */
1093 public static String getToStringMethodClose() {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301094 return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
1095 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301096 }
1097
1098 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301099 * Returns to string method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301100 *
1101 * @param attr attribute info
1102 * @return to string method
1103 */
Vinod Kumar S38046502016-03-23 15:30:27 +05301104 public static String getToStringMethod(JavaAttributeInfo attr) {
1105
janani b4a6711a2016-05-17 13:12:22 +05301106 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +05301107 return TWELVE_SPACE_INDENTATION + PERIOD + ADD_STRING + OPEN_PARENTHESIS + QUOTES + attributeName + QUOTES
1108 + COMMA + SPACE + attributeName + CLOSE_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301109 }
1110
1111 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301112 * Returns from string method's open string.
1113 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301114 * @param className name of the class
Bharat saraswal33dfa012016-05-17 19:59:16 +05301115 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301116 * @return from string method's open string
1117 */
Bharat saraswal33dfa012016-05-17 19:59:16 +05301118 public static String getFromStringMethodSignature(String className, YangPluginConfig pluginConfig) {
1119 return getJavaDoc(FROM_METHOD, className, false, pluginConfig) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
1120 + STATIC + SPACE + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS
1121 + STRING_DATA_TYPE + SPACE + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE
1122 + OPEN_CURLY_BRACKET + NEW_LINE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301123 }
1124
1125 /**
1126 * Return from string method's close string.
1127 *
1128 * @return from string method's close string
1129 */
1130 public static String getFromStringMethodClose() {
1131 return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1132 CLOSE_CURLY_BRACKET + NEW_LINE;
1133 }
1134
1135 /**
1136 * Return from string method's body string.
1137 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301138 * @param attr attribute info
Bharat saraswald50c6382016-07-14 21:57:13 +05301139 * @param fromStringAttributeInfo attribute info for the from string wrapper type
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301140 * @return from string method's body string
1141 */
1142 public static String getFromStringMethod(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301143 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301144
1145 return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
Mahesh Poojary Sbbd48492016-07-19 10:58:07 +05301146 + getParsedSubString(attr, fromStringAttributeInfo) + NEW_LINE + TWELVE_SPACE_INDENTATION
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301147 + getReturnOfSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION + getCatchSubString()
1148 + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1149 }
1150
1151 /**
1152 * Returns sub string with try statement for union's from string method.
1153 *
1154 * @return sub string with try statement for union's from string method
1155 */
1156 public static String getTrySubString() {
1157 return TRY + SPACE + OPEN_CURLY_BRACKET;
1158 }
1159
1160 /**
1161 * Returns sub string with return statement for union's from string method.
1162 *
1163 * @return sub string with return statement for union's from string method
1164 */
1165 public static String getReturnOfSubString() {
1166 return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL + CLOSE_PARENTHESIS + SEMI_COLAN;
1167 }
1168
1169 /**
1170 * Returns sub string with catch statement for union's from string method.
1171 *
1172 * @return sub string with catch statement for union's from string method
1173 */
1174 public static String getCatchSubString() {
1175 return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS + EXCEPTION + SPACE + EXCEPTION_VAR
1176 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
1177 }
1178
1179 /**
1180 * Returns sub string with parsed statement for union's from string method.
1181 *
1182 * @param attr attribute info
1183 * @return sub string with parsed statement for union's from string method
1184 */
1185 private static String getParsedSubString(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301186 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301187
1188 String targetDataType = getReturnType(attr);
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +05301189 if (fromStringAttributeInfo.getAttributeType().getDataType() == BITS) {
1190 String lines = targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + NEW + SPACE + targetDataType
1191 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1192 lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
1193 + PERIOD + REPLACE_STRING + OPEN_PARENTHESIS + SINGLE_QUOTE + OPEN_CURLY_BRACKET + SINGLE_QUOTE
1194 + COMMA + SPACE + SINGLE_QUOTE + SPACE + SINGLE_QUOTE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1195 lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
1196 + PERIOD + REPLACE_STRING + OPEN_PARENTHESIS + SINGLE_QUOTE + CLOSE_CURLY_BRACKET + SINGLE_QUOTE
1197 + COMMA + SPACE + SINGLE_QUOTE + SPACE + SINGLE_QUOTE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1198 lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
1199 + PERIOD + TRIM_STRING + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1200 lines += TWELVE_SPACE_INDENTATION + STRING_DATA_TYPE + SQUARE_BRACKETS + SPACE + BITS_STRING_ARRAY_VAR
1201 + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME + PERIOD + SPLIT_STRING + OPEN_PARENTHESIS
1202 + QUOTES + COMMA + QUOTES + COMMA + SPACE + ZERO + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1203 lines += TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + STRING_DATA_TYPE + SPACE
1204 + BIT_TEMP_VAR + SPACE + COLON + SPACE + BITS_STRING_ARRAY_VAR + CLOSE_PARENTHESIS + SPACE
1205 + OPEN_CURLY_BRACKET + NEW_LINE;
1206 lines += SIXTEEN_SPACE_INDENTATION + BIT_TEMP_VAR + SPACE + EQUAL + SPACE + BIT_TEMP_VAR + PERIOD
1207 + TRIM_STRING + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1208 lines += SIXTEEN_SPACE_INDENTATION + TMP_VAL + PERIOD + SET_METHOD_PREFIX + OPEN_PARENTHESIS
1209 + INTEGER_WRAPPER + PERIOD + PARSE_INT + OPEN_PARENTHESIS + BIT_TEMP_VAR + CLOSE_PARENTHESIS
1210 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1211 lines += TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1212 return lines;
1213 } else if (attr.getAttributeType().getDataType() == BINARY) {
1214 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + BASE64 + PERIOD
1215 + GET_DECODER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + DECODE + OPEN_PARENTHESIS
1216 + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +05301217 } else {
1218 String parseFromStringMethod = getParseFromStringMethod(targetDataType,
Bharat saraswald50c6382016-07-14 21:57:13 +05301219 fromStringAttributeInfo.getAttributeType());
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +05301220 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + parseFromStringMethod
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +05301221 + OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +05301222 }
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301223 }
1224
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301225 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301226 * Returns hash code method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301227 *
Bharat saraswald9822e92016-04-05 15:13:44 +05301228 * @return hash code method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301229 */
1230 public static String getHashCodeMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301231 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + INT + SPACE + HASH_CODE_STRING
1232 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
1233 + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301234 }
1235
1236 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301237 * Returns hash code methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301238 *
1239 * @param hashcodeString hash code string
1240 * @return to hash code method close string
1241 */
1242 public static String getHashCodeMethodClose(String hashcodeString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301243 hashcodeString = trimAtLast(hashcodeString, COMMA);
1244 hashcodeString = trimAtLast(hashcodeString, SPACE);
1245 return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1246 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301247 }
1248
1249 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301250 * Returns hash code method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301251 *
1252 * @param attr attribute info
1253 * @return hash code method
1254 */
Vinod Kumar S38046502016-03-23 15:30:27 +05301255 public static String getHashCodeMethod(JavaAttributeInfo attr) {
janani b4a6711a2016-05-17 13:12:22 +05301256 return attr.getAttributeName() + COMMA + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301257 }
1258
1259 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301260 * Returns equals method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301261 *
1262 * @param className class name
Bharat saraswald9822e92016-04-05 15:13:44 +05301263 * @return equals method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301264 */
1265 public static String getEqualsMethodOpen(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301266 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE + EQUALS_STRING
1267 + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + OBJ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
1268 + NEW_LINE + getEqualsMethodsCommonIfCondition() + getEqualsMethodsSpecificIfCondition(className);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301269 }
1270
1271 /**
1272 * Returns equal methods if condition string.
1273 *
1274 * @return if condition string
1275 */
1276 private static String getEqualsMethodsCommonIfCondition() {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301277 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + THIS + SPACE + EQUAL + EQUAL + SPACE + OBJ
1278 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + SPACE
1279 + TRUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301280 }
1281
1282 /**
1283 * Returns if condition for specific class object in equals method.
1284 *
1285 * @param className class name
1286 * @return if condition string
1287 */
1288 private static String getEqualsMethodsSpecificIfCondition(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301289 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + OBJ + INSTANCE_OF + className
1290 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + className
1291 + SPACE + OTHER + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS + className + CLOSE_PARENTHESIS + SPACE
1292 + OBJ + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301293 }
1294
1295 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301296 * Returns equals methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301297 *
1298 * @param equalMethodString equal method string
Bharat saraswald9822e92016-04-05 15:13:44 +05301299 * @return equals method close string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301300 */
1301 public static String getEqualsMethodClose(String equalMethodString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301302 equalMethodString = trimAtLast(equalMethodString, AND);
1303 equalMethodString = trimAtLast(equalMethodString, AND);
1304 equalMethodString = trimAtLast(equalMethodString, SPACE);
1305 equalMethodString = trimAtLast(equalMethodString, NEW_LINE) + SEMI_COLAN + NEW_LINE;
1306 return equalMethodString + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
1307 + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1308 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301309 }
1310
1311 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301312 * Returns equals method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301313 *
1314 * @param attr attribute info
1315 * @return equals method
1316 */
Vinod Kumar S38046502016-03-23 15:30:27 +05301317 public static String getEqualsMethod(JavaAttributeInfo attr) {
1318
janani b4a6711a2016-05-17 13:12:22 +05301319 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +05301320 return SIXTEEN_SPACE_INDENTATION + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS
1321 + attributeName + COMMA + SPACE + OTHER + PERIOD + attributeName + CLOSE_PARENTHESIS + SPACE + AND
1322 + AND;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301323 }
1324
1325 /**
1326 * Returns of method string for class.
1327 *
1328 * @param name class name
1329 * @param attr attribute info
1330 * @return of method string
1331 */
Vinod Kumar S38046502016-03-23 15:30:27 +05301332 public static String getOfMethod(String name, JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301333
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301334 String attrQualifiedType = getReturnType(attr);
1335
Bharat saraswale2d51d62016-03-23 19:40:35 +05301336 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name + SPACE + OF + OPEN_PARENTHESIS
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301337 + attrQualifiedType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Bharat saraswale2d51d62016-03-23 19:40:35 +05301338 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name + OPEN_PARENTHESIS + VALUE
1339 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301340 }
1341
Bharat saraswalcc1cdab2016-04-16 02:28:25 +05301342 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301343 * Returns of method's string and java doc for special type.
1344 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301345 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301346 * @param generatedJavaClassName class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301347 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301348 * @return of method's string and java doc for special type
1349 */
Bharat saraswal33dfa012016-05-17 19:59:16 +05301350 public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301351 YangPluginConfig pluginConfig) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301352
1353 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +05301354 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301355
Bharat saraswal33dfa012016-05-17 19:59:16 +05301356 return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301357 + getOfMethodString(attrType, generatedJavaClassName);
1358 }
1359
1360 /**
1361 * Returns of method's string.
1362 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301363 * @param type data type
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301364 * @param className class name
1365 * @return of method's string
1366 */
1367 private static String getOfMethodString(String type, String className) {
1368
1369 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + className + SPACE + OF + OPEN_PARENTHESIS
1370 + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1371 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + className + OPEN_PARENTHESIS + VALUE
1372 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1373 }
1374
1375 /**
1376 * Returns string and java doc for constructor of type class.
1377 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301378 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301379 * @param generatedJavaClassName class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301380 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301381 * @return string and java doc for constructor of type class
1382 */
Bharat saraswal33dfa012016-05-17 19:59:16 +05301383 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301384 String generatedJavaClassName,
1385 YangPluginConfig pluginConfig) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301386
1387 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +05301388 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301389
Bharat saraswal33dfa012016-05-17 19:59:16 +05301390 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301391 + getTypeConstructorString(attrType, attrName, generatedJavaClassName);
1392 }
1393
1394 /**
Bharat saraswale707f032016-07-14 23:33:55 +05301395 * Returns string and java doc for constructor of type class.
1396 *
1397 * @param attr1 first attribute info
1398 * @param attr2 second attribute info
1399 * @param generatedJavaClassName class name
1400 * @param pluginConfig plugin config
1401 * @param type conflict validate type
1402 * @param addFirst whether int came first or uint came first
1403 * @return string and java doc for constructor of type class
1404 */
1405 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr1, JavaAttributeInfo
1406 attr2, String generatedJavaClassName, YangPluginConfig pluginConfig, ValidatorTypeForUnionTypes type,
1407 boolean addFirst) {
1408
1409 String attrType = getReturnType(attr1);
1410 String attrName1 = "";
1411 String attrName2 = "";
1412 if (attr1 != null) {
1413 attrName1 = attr1.getAttributeName();
1414 }
1415 if (attr2 != null) {
1416 attrName2 = attr2.getAttributeName();
1417 }
1418
1419 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName1, false, pluginConfig)
1420 + getTypeConstructorString(attrType, attrName1, attrName2, generatedJavaClassName, type, addFirst);
1421 }
1422
1423 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301424 * Returns type constructor string.
1425 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301426 * @param type data type
1427 * @param name attribute name
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301428 * @param className class name
1429 * @return type constructor string
1430 */
1431 private static String getTypeConstructorString(String type, String name, String className) {
1432
1433 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
1434 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
1435 + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
1436 + CLOSE_CURLY_BRACKET;
1437 }
1438
1439 /**
Bharat saraswale707f032016-07-14 23:33:55 +05301440 * Returns type constructor string.
1441 *
1442 * @param type data type
1443 * @param attr1 attribute attr1
1444 * @param className class attr1
1445 * @return type constructor string
1446 */
1447 private static String getTypeConstructorString(String type, String attr1, String attr2, String className,
1448 ValidatorTypeForUnionTypes validatorType, boolean addInt) {
1449
1450 String constructor;
1451 constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
1452 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1453
1454 String name1;
1455 String name2;
1456 if (addInt) {
1457 name1 = attr1;
1458 name2 = attr2;
1459 } else {
1460 name1 = attr2;
1461 name2 = attr1;
1462 }
1463 constructor = constructor + ifConditionForIntInTypeDefConstrcutor(validatorType, addInt) +
1464 TWELVE_SPACE_INDENTATION + THIS + PERIOD
1465 + name1 + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
1466 + CLOSE_CURLY_BRACKET + SPACE + ELSE + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION
1467 + THIS + PERIOD
1468 + name2 + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
1469 + CLOSE_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION
1470 + CLOSE_CURLY_BRACKET;
1471
1472 return constructor;
1473 }
1474
1475 /**
Bharat saraswalb551aae2016-07-14 15:18:20 +05301476 * Returns implementation of add augmentation.
1477 *
1478 * @return implementation of add augmentation
1479 */
Bharat saraswald50c6382016-07-14 21:57:13 +05301480 static String getAddAugmentInfoMethodImpl() {
1481 return NEW_LINE + generateForAddAugmentation() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE +
1482 ADD_STRING + AUGMENTED_INFO + OPEN_PARENTHESIS + YANG_AUGMENTED_INFO + SPACE + VALUE + COMMA +
1483 SPACE + CLASS_STRING + SPACE + CLASS + OBJECT_STRING + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
1484 NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + PUT +
1485 OPEN_PARENTHESIS + CLASS + OBJECT_STRING + COMMA + SPACE + VALUE +
Bharat saraswalb551aae2016-07-14 15:18:20 +05301486 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1487 CLOSE_CURLY_BRACKET + NEW_LINE;
1488 }
1489
1490 /**
1491 * Returns implementation of get augment info.
1492 *
1493 * @return implementation of get augment info
1494 */
Bharat saraswald50c6382016-07-14 21:57:13 +05301495 static String getAugmentInfoImpl() {
Bharat saraswalb551aae2016-07-14 15:18:20 +05301496
1497 return generateForGetAugmentation() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
1498 YANG_AUGMENTED_INFO + SPACE + GET_METHOD_PREFIX +
Bharat saraswald50c6382016-07-14 21:57:13 +05301499 AUGMENTED_INFO + OPEN_PARENTHESIS + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
Bharat saraswalb551aae2016-07-14 15:18:20 +05301500 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
1501 RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + GET + OPEN_PARENTHESIS + CLASS +
1502 OBJECT_STRING + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1503 CLOSE_CURLY_BRACKET + NEW_LINE;
1504 }
1505
1506 /**
Bharat saraswald50c6382016-07-14 21:57:13 +05301507 * Returns implementation of get augment info.
1508 *
1509 * @return implementation of get augment info
1510 */
1511 static String getAugmentInfoMapImpl(YangPluginConfig pluginConfig) {
1512
1513 return getJavaDoc(GETTER_METHOD, getSmallCase(YANG_AUGMENTED_INFO) + MAP, false, pluginConfig)
1514 + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
1515 MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING + DIAMOND_OPEN_BRACKET + QUESTION_MARK +
1516 DIAMOND_CLOSE_BRACKET + COMMA + SPACE + YANG_AUGMENTED_INFO + DIAMOND_CLOSE_BRACKET + SPACE +
1517 GET_METHOD_PREFIX + YANG_AUGMENTED_INFO + MAP + OPEN_PARENTHESIS +
1518 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
1519 RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + SEMI_COLAN + NEW_LINE
1520 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1521 }
1522
1523 /**
Bharat saraswald72411a2016-04-19 01:00:16 +05301524 * Returns enum's constructor.
1525 *
1526 * @param className enum's class name
1527 * @return enum's constructor
1528 */
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301529 public static String getEnumsConstructor(String className) {
Bharat saraswald72411a2016-04-19 01:00:16 +05301530 return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
1531 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
1532 + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1533 }
Bharat saraswalc0e04842016-05-12 13:16:57 +05301534
1535 /**
1536 * Returns of method for enum class.
1537 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301538 * @param className class name
1539 * @param attr java attribute
1540 * @param enumMap enum's sets map
1541 * @param enumList enum's sets list
Bharat saraswal33dfa012016-05-17 19:59:16 +05301542 * @param pluginConfig plugin configurations
Bharat saraswalc0e04842016-05-12 13:16:57 +05301543 * @return of method
1544 */
1545 public static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301546 Map<String, Integer> enumMap, List<String> enumList,
1547 YangPluginConfig pluginConfig) {
Bharat saraswalc0e04842016-05-12 13:16:57 +05301548 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +05301549 String attrName = attr.getAttributeName();
Bharat saraswalc0e04842016-05-12 13:16:57 +05301550
janani b4a6711a2016-05-17 13:12:22 +05301551 String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + getCapitalCase(className) + SPACE
1552 + OF + OPEN_PARENTHESIS
Bharat saraswalc0e04842016-05-12 13:16:57 +05301553 + attrType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1554 + EIGHT_SPACE_INDENTATION + SWITCH + SPACE + OPEN_PARENTHESIS + VALUE
1555 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1556 int value = 0;
1557 for (String str : enumList) {
1558
1559 value = enumMap.get(str);
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +05301560 method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value + COLON + NEW_LINE
janani b4a6711a2016-05-17 13:12:22 +05301561 + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + getCapitalCase(className) + PERIOD
Bharat saraswalc0e04842016-05-12 13:16:57 +05301562 + str + SEMI_COLAN + NEW_LINE;
1563 }
Mahesh Poojary Huawei30c116a2016-07-14 17:49:50 +05301564 method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLON + NEW_LINE + SIXTEEN_SPACE_INDENTATION
Bharat saraswalc0e04842016-05-12 13:16:57 +05301565 + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1566 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1567
Bharat saraswale707f032016-07-14 23:33:55 +05301568 return getJavaDoc(OF_METHOD, getCapitalCase(className) + " for type " + attrName, false, pluginConfig)
Bharat saraswal33dfa012016-05-17 19:59:16 +05301569 + method;
Bharat saraswalc0e04842016-05-12 13:16:57 +05301570 }
Bharat saraswal33dfa012016-05-17 19:59:16 +05301571
1572 /**
1573 * Returns activate method string.
1574 *
1575 * @return activate method string
1576 */
1577 public static String addActivateMethod() {
1578 return FOUR_SPACE_INDENTATION + ACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
1579 + PUBLIC + SPACE + VOID + SPACE + ACTIVATE + OPEN_PARENTHESIS
1580 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
1581 + NEW_LINE + EIGHT_SPACE_INDENTATION
1582 + YANG_UTILS_TODO
1583 + NEW_LINE + EIGHT_SPACE_INDENTATION
1584 + STARTED_LOG_INFO + FOUR_SPACE_INDENTATION
1585 + CLOSE_CURLY_BRACKET + NEW_LINE;
1586 }
1587
1588 /**
1589 * Returns deactivate method string.
1590 *
1591 * @return deactivate method string
1592 */
1593 public static String addDeActivateMethod() {
1594 return NEW_LINE + FOUR_SPACE_INDENTATION + DEACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
1595 + PUBLIC + SPACE + VOID + SPACE + DEACTIVATE + OPEN_PARENTHESIS
1596 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
1597 + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION
1598 + STOPPED_LOG_INFO + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1599 }
1600
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301601 /**
1602 * Returns from string method parsed string.
1603 *
1604 * @param targetDataType target data type
1605 * @param yangType YANG type
1606 * @return parsed string
1607 */
1608 public static String getParseFromStringMethod(String targetDataType, YangType<?> yangType) {
1609
1610 YangDataTypes type = yangType.getDataType();
1611
1612 switch (type) {
1613 case INT8:
1614 return BYTE_WRAPPER + PERIOD + PARSE_BYTE;
1615 case INT16:
1616 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1617 case INT32:
1618 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1619 case INT64:
1620 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1621 case UINT8:
1622 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1623 case UINT16:
1624 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1625 case UINT32:
1626 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1627 case UINT64:
1628 return NEW + SPACE + BIG_INTEGER;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +05301629 case DECIMAL64:
1630 return NEW + SPACE + BIG_DECIMAL;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301631 case STRING:
1632 return EMPTY_STRING;
1633 case EMPTY:
1634 case BOOLEAN:
1635 return BOOLEAN_WRAPPER + PERIOD + PARSE_BOOLEAN;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301636 case BITS:
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301637 case UNION:
1638 case ENUMERATION:
1639 case DERIVED:
1640 return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
1641 default:
1642 throw new TranslatorException("given data type is not supported.");
1643 }
1644 }
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301645
1646 /**
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301647 * Returns the constructor strings for class file.
1648 *
1649 * @param attr attribute info
1650 * @param pluginConfig plugin configurations
1651 * @return constructor for class
1652 */
1653 public static String getAugmentedConstructor(JavaAttributeInfo attr, YangPluginConfig pluginConfig) {
1654
1655 String attributeName = getCamelCase(attr.getAttributeName(), pluginConfig.getConflictResolver());
1656
1657 return EIGHT_SPACE_INDENTATION + THIS + PERIOD + attributeName + OPEN_PARENTHESIS
1658 + VALUE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
1659 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1660 }
Bharat saraswalb551aae2016-07-14 15:18:20 +05301661
1662 /**
1663 * Returns augmented data getter and setter methods for service class.
1664 *
1665 * @param parent parent node
1666 * @return augmented data getter and setter methods for service class
1667 */
Bharat saraswald50c6382016-07-14 21:57:13 +05301668 static String getAugmentsDataMethodForService(YangNode parent) {
Bharat saraswalb551aae2016-07-14 15:18:20 +05301669 List<YangAtomicPath> targets = getSetOfNodeIdentifiers(parent);
1670 YangNode augmentedNode;
1671 String curNodeName;
1672 String method;
1673 StringBuilder methods = new StringBuilder();
1674 String parentName;
1675 String returnType;
Bharat saraswale707f032016-07-14 23:33:55 +05301676 YangNode methodNode;
Bharat saraswalb551aae2016-07-14 15:18:20 +05301677 YangPluginConfig pluginConfig = ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig();
1678 for (YangAtomicPath nodeId : targets) {
Bharat saraswald50c6382016-07-14 21:57:13 +05301679 augmentedNode = nodeId.getResolvedNode().getParent();
Bharat saraswale707f032016-07-14 23:33:55 +05301680 methodNode = nodeId.getResolvedNode();
1681 if (((JavaFileInfoContainer) methodNode).getJavaFileInfo().getJavaName() != null) {
1682 curNodeName = ((JavaFileInfoContainer) methodNode).getJavaFileInfo().getJavaName();
Bharat saraswalb551aae2016-07-14 15:18:20 +05301683 } else {
Bharat saraswale707f032016-07-14 23:33:55 +05301684 curNodeName = getCapitalCase(getCamelCase(methodNode.getName(), pluginConfig
Bharat saraswalb551aae2016-07-14 15:18:20 +05301685 .getConflictResolver()));
1686 }
1687 returnType = getAugmentedClassNameForDataMethods(augmentedNode, parent);
Bharat saraswald50c6382016-07-14 21:57:13 +05301688 parentName = getParentNodeNameForDataMethods(augmentedNode, pluginConfig);
Bharat saraswalb551aae2016-07-14 15:18:20 +05301689 method = getJavaDoc(GETTER_METHOD, getSmallCase(AUGMENTED + parentName + curNodeName), false,
1690 pluginConfig) + getGetterForInterface(AUGMENTED + parentName
1691 + getCapitalCase(curNodeName),
1692 returnType, false, GENERATE_SERVICE_AND_MANAGER)
1693 + NEW_LINE;
1694 methods.append(method);
1695
1696 method = getJavaDoc(MANAGER_SETTER_METHOD, AUGMENTED +
Bharat saraswale707f032016-07-14 23:33:55 +05301697 getCapitalCase(parentName) + getCapitalCase(curNodeName), false, pluginConfig) +
Bharat saraswalb551aae2016-07-14 15:18:20 +05301698 getSetterForInterface(getSmallCase(AUGMENTED) + parentName +
1699 getCapitalCase(curNodeName), returnType, parentName,
1700 false,
1701 GENERATE_SERVICE_AND_MANAGER) + NEW_LINE;
1702 methods.append(method);
1703 }
1704 return methods.toString();
1705 }
1706
1707 /**
1708 * Returns augmented data getter and setter methods for manager class.
1709 *
1710 * @param parent parent node
1711 * @return augmented data getter and setter methods for manager class
1712 */
Bharat saraswald50c6382016-07-14 21:57:13 +05301713 static String getAugmentsDataMethodForManager(YangNode parent) {
Bharat saraswalb551aae2016-07-14 15:18:20 +05301714 List<YangAtomicPath> targets = getSetOfNodeIdentifiers(parent);
1715 YangNode augmentedNode;
1716 String curNodeName;
1717 String returnType;
1718 String method;
1719 StringBuilder methods = new StringBuilder();
1720 String parentName;
Bharat saraswale707f032016-07-14 23:33:55 +05301721 YangNode methodNode;
Bharat saraswalb551aae2016-07-14 15:18:20 +05301722 YangPluginConfig pluginConfig = ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig();
1723 for (YangAtomicPath nodeId : targets) {
Bharat saraswald50c6382016-07-14 21:57:13 +05301724 augmentedNode = nodeId.getResolvedNode().getParent();
Bharat saraswale707f032016-07-14 23:33:55 +05301725 methodNode = nodeId.getResolvedNode();
1726 if (((JavaFileInfoContainer) methodNode).getJavaFileInfo().getJavaName() != null) {
1727 curNodeName = ((JavaFileInfoContainer) methodNode).getJavaFileInfo().getJavaName();
Bharat saraswalb551aae2016-07-14 15:18:20 +05301728 } else {
Bharat saraswale707f032016-07-14 23:33:55 +05301729 curNodeName = getCapitalCase(getCamelCase(methodNode.getName(), pluginConfig
Bharat saraswalb551aae2016-07-14 15:18:20 +05301730 .getConflictResolver()));
1731 }
1732 returnType = getAugmentedClassNameForDataMethods(augmentedNode, parent);
Bharat saraswald50c6382016-07-14 21:57:13 +05301733 parentName = getParentNodeNameForDataMethods(augmentedNode, pluginConfig);
Bharat saraswalb551aae2016-07-14 15:18:20 +05301734 method = getOverRideString() + getGetter(returnType, AUGMENTED
1735 + parentName + getCapitalCase(curNodeName),
1736 GENERATE_SERVICE_AND_MANAGER) + NEW_LINE;
1737 methods.append(method);
1738
1739 method = getOverRideString() + getSetter(parentName, getSmallCase(AUGMENTED) +
1740 getCapitalCase(parentName) + getCapitalCase(curNodeName),
1741 returnType,
1742 GENERATE_SERVICE_AND_MANAGER)
1743 + NEW_LINE;
1744 methods.append(method);
1745 }
1746 return methods.toString();
1747 }
1748
Bharat saraswale707f032016-07-14 23:33:55 +05301749 /**
1750 * Returns validator method for range in union class.
1751 *
1752 * @param type type
1753 * @return validator method for range in union class
1754 */
1755 public static String getRangeValidatorMethodForUnion(String type) {
1756 String newType;
1757 if (type.contentEquals(BIG_INTEGER)) {
1758 newType = LONG;
1759 } else {
1760 newType = INT;
1761 }
1762 String method = generateForValidatorMethod() + FOUR_SPACE_INDENTATION + PRIVATE + SPACE + BOOLEAN_DATA_TYPE +
1763 SPACE +
1764 VALIDATE_RANGE +
1765 OPEN_PARENTHESIS
1766 + type + SPACE + MIN_RANGE + COMMA + SPACE + type + SPACE + MAX_RANGE + COMMA + SPACE +
1767 newType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1768 if (type.contentEquals(BIG_INTEGER)) {
1769 method = method + EIGHT_SPACE_INDENTATION + BIG_INTEGER + SPACE + getSmallCase(BIG_INTEGER)
1770 + SPACE + EQUAL + SPACE + NEW + SPACE + BIG_INTEGER + OPEN_PARENTHESIS + QUOTES + SPACE +
1771 QUOTES + SPACE + ADD + SPACE + VALUE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE +
1772 EIGHT_SPACE_INDENTATION + RETURN + SPACE + getSmallCase(BIG_INTEGER) + PERIOD + "compareTo"
1773 + OPEN_PARENTHESIS + MIN_RANGE + CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + " 1" + SPACE + AND +
1774 AND + SPACE + getSmallCase(BIG_INTEGER) + PERIOD + "compareTo" + OPEN_PARENTHESIS + MAX_RANGE +
1775 CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + " 1" + SEMI_COLAN + NEW_LINE;
1776 } else {
1777 method = method + EIGHT_SPACE_INDENTATION
1778 + RETURN + SPACE + VALUE + SPACE + DIAMOND_CLOSE_BRACKET + EQUAL + SPACE + MIN_RANGE + SPACE + AND +
1779 AND + SPACE + VALUE + DIAMOND_OPEN_BRACKET + EQUAL + SPACE + MAX_RANGE + SEMI_COLAN + NEW_LINE;
1780 }
1781 return method + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1782 }
1783
1784 /**
1785 * Returns if condition string for typedef constructor.
1786 *
1787 * @param type type of conflict
1788 * @param addFirst true int/long need to be added first
1789 * @return if condition string for typedef constructor
1790 */
1791 private static String ifConditionForIntInTypeDefConstrcutor(ValidatorTypeForUnionTypes type, boolean addFirst) {
1792 String condition = EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + VALIDATE_RANGE + OPEN_PARENTHESIS;
1793
1794 if (type == INT_TYPE_CONFLICT) {
1795 if (addFirst) {
1796 condition = condition + INT_MIN_RANGE + COMMA + SPACE + INT_MAX_RANGE + COMMA + SPACE + VALUE;
1797 } else {
1798 condition = condition + UINT_MIN_RANGE + COMMA + SPACE + UINT_MAX_RANGE + COMMA + SPACE + VALUE;
1799 }
1800 } else {
1801 if (addFirst) {
1802 condition = condition + LONG_MIN_RANGE + COMMA + SPACE + LONG_MAX_RANGE + COMMA + SPACE + VALUE;
1803 } else {
1804 condition = condition + ULONG_MIN_RANGE + COMMA + SPACE + ULONG_MAX_RANGE + COMMA + SPACE + VALUE;
1805 }
1806 }
1807 return condition + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1808 }
1809
1810
Bharat saraswal870c56f2016-02-20 21:57:16 +05301811}