blob: 14243cac6c3f7e378cb4f007cc74a7a8b8cb6683 [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
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053022import org.onosproject.yangutils.datamodel.YangLeaf;
23import org.onosproject.yangutils.datamodel.YangLeafList;
24import org.onosproject.yangutils.datamodel.YangLeavesHolder;
Bharat saraswalb551aae2016-07-14 15:18:20 +053025import org.onosproject.yangutils.datamodel.YangAtomicPath;
26import org.onosproject.yangutils.datamodel.YangAugment;
27import org.onosproject.yangutils.datamodel.YangNode;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053028import org.onosproject.yangutils.datamodel.YangType;
janani be18b5342016-07-13 21:06:41 +053029import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053030import org.onosproject.yangutils.translator.exception.TranslatorException;
Vinod Kumar S38046502016-03-23 15:30:27 +053031import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
Bharat saraswalb551aae2016-07-14 15:18:20 +053032import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053033import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
34import org.onosproject.yangutils.translator.tojava.TempJavaBeanFragmentFiles;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053035import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053036import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
Bharat saraswale2d51d62016-03-23 19:40:35 +053037
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053038import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DECIMAL64;
39import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT8;
40import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT16;
41import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT32;
42import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT64;
43import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT8;
44import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT16;
45import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BOOLEAN;
46import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT64;
47import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT32;
Bharat saraswal33dfa012016-05-17 19:59:16 +053048import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053049import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
Bharat saraswalb551aae2016-07-14 15:18:20 +053050import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getAugmentedClassNameForDataMethods;
51import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getParentNodeNameForDataMethods;
52import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getResolvedAugmentsForManager;
53import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getSetOfNodeIdentifiers;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053054import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.getJavaAttributeOfLeaf;
55import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.getJavaAttributeOfLeafList;
Bharat saraswal33dfa012016-05-17 19:59:16 +053056import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE;
57import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE_ANNOTATION;
Bharat saraswale2d51d62016-03-23 19:40:35 +053058import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
59import static org.onosproject.yangutils.utils.UtilConstants.AND;
Bharat saraswalb551aae2016-07-14 15:18:20 +053060import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTATION;
61import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +053062import static org.onosproject.yangutils.utils.UtilConstants.BIG_DECIMAL;
Bharat saraswalb1170bd2016-07-14 13:26:18 +053063import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053064import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053065import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053066import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
67import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053068import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053069import static org.onosproject.yangutils.utils.UtilConstants.BYTE_WRAPPER;
Bharat saraswalc0e04842016-05-12 13:16:57 +053070import static org.onosproject.yangutils.utils.UtilConstants.CASE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053071import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +053072import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
Bharat saraswalb551aae2016-07-14 15:18:20 +053073import static org.onosproject.yangutils.utils.UtilConstants.CLASS;
74import static org.onosproject.yangutils.utils.UtilConstants.CLASS_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +053075import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
76import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
Bharat saraswalc0e04842016-05-12 13:16:57 +053077import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
Bharat saraswale2d51d62016-03-23 19:40:35 +053078import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
Bharat saraswal33dfa012016-05-17 19:59:16 +053079import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE;
80import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE_ANNOTATION;
Bharat saraswalc0e04842016-05-12 13:16:57 +053081import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
Bharat saraswale2d51d62016-03-23 19:40:35 +053082import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
83import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +053084import static org.onosproject.yangutils.utils.UtilConstants.DOUBLE;
Bharat saraswale2d51d62016-03-23 19:40:35 +053085import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
86import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
87import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
88import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053089import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
90import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
Bharat saraswale2d51d62016-03-23 19:40:35 +053091import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
92import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053093import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
94import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
Bharat saraswalb551aae2016-07-14 15:18:20 +053095import static org.onosproject.yangutils.utils.UtilConstants.GET;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +053096import static org.onosproject.yangutils.utils.UtilConstants.GET_BYTES;
Bharat saraswale2d51d62016-03-23 19:40:35 +053097import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
98import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
99import static org.onosproject.yangutils.utils.UtilConstants.HASH;
100import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
101import static org.onosproject.yangutils.utils.UtilConstants.IF;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530102import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
103import static org.onosproject.yangutils.utils.UtilConstants.INT;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530104import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530105import static org.onosproject.yangutils.utils.UtilConstants.LIST;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530106import static org.onosproject.yangutils.utils.UtilConstants.LONG;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530107import static org.onosproject.yangutils.utils.UtilConstants.LONG_WRAPPER;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530108import static org.onosproject.yangutils.utils.UtilConstants.MAP;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530109import static org.onosproject.yangutils.utils.UtilConstants.NEW;
110import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530111import static org.onosproject.yangutils.utils.UtilConstants.NULL;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530112import static org.onosproject.yangutils.utils.UtilConstants.OBJ;
113import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
114import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
115import static org.onosproject.yangutils.utils.UtilConstants.OF;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530116import static org.onosproject.yangutils.utils.UtilConstants.OMIT_NULL_VALUE_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530117import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
118import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
119import static org.onosproject.yangutils.utils.UtilConstants.OTHER;
120import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530121import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BOOLEAN;
122import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BYTE;
123import static org.onosproject.yangutils.utils.UtilConstants.PARSE_INT;
124import static org.onosproject.yangutils.utils.UtilConstants.PARSE_LONG;
125import static org.onosproject.yangutils.utils.UtilConstants.PARSE_SHORT;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530126import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
127import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530128import static org.onosproject.yangutils.utils.UtilConstants.PUT;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530129import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
130import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530131import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530132import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
133import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530134import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530135import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530136import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
137import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530138import static org.onosproject.yangutils.utils.UtilConstants.STARTED_LOG_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530139import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530140import static org.onosproject.yangutils.utils.UtilConstants.STOPPED_LOG_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530141import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
142import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530143import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530144import static org.onosproject.yangutils.utils.UtilConstants.THIS;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530145import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530146import static org.onosproject.yangutils.utils.UtilConstants.TO;
147import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530148import static org.onosproject.yangutils.utils.UtilConstants.TRY;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530149import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
150import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
151import static org.onosproject.yangutils.utils.UtilConstants.VOID;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530152import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530153import static org.onosproject.yangutils.utils.UtilConstants.YANG_UTILS_TODO;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530154import static org.onosproject.yangutils.utils.UtilConstants.OPERATION;
155import static org.onosproject.yangutils.utils.UtilConstants.BITSET;
156import static org.onosproject.yangutils.utils.UtilConstants.GET_FILTER_LEAF;
157import static org.onosproject.yangutils.utils.UtilConstants.FILTER_LEAF;
158import static org.onosproject.yangutils.utils.UtilConstants.GET_SELECT_LEAF;
159import static org.onosproject.yangutils.utils.UtilConstants.SELECT_LEAF;
160import static org.onosproject.yangutils.utils.UtilConstants.GET_FILTER_LEAF_LIST;
161import static org.onosproject.yangutils.utils.UtilConstants.FILTER_LEAF_LIST;
162import static org.onosproject.yangutils.utils.UtilConstants.GET_SELECT_LEAF_LIST;
163import static org.onosproject.yangutils.utils.UtilConstants.SELECT_LEAF_LIST;
164import static org.onosproject.yangutils.utils.UtilConstants.OPERATION_ENUM;
165import static org.onosproject.yangutils.utils.UtilConstants.GET_OPERATION_TYPE;
166import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM_TYPE;
167import static org.onosproject.yangutils.utils.UtilConstants.SET_OPERATION_TYPE;
168import static org.onosproject.yangutils.utils.UtilConstants.RECEIVED_OBJECT;
169import static org.onosproject.yangutils.utils.UtilConstants.FILTER_CONTENT_MATCH;
170import static org.onosproject.yangutils.utils.UtilConstants.APP_INSTANCE;
171import static org.onosproject.yangutils.utils.UtilConstants.NOT;
172import static org.onosproject.yangutils.utils.UtilConstants.OR_OPERATION;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530173import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
174import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
175import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530176import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.FROM_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530177import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530178import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.MANAGER_SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530179import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530180import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530181import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530182import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForAddAugmentation;
183import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForGetAugmentation;
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530184import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForTypeConstructor;
185import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530186import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
187import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
188import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530189import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +0530190import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BINARY;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530191
192/**
Bharat saraswald9822e92016-04-05 15:13:44 +0530193 * Represents generator for methods of generated files based on the file type.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530194 */
195public final class MethodsGenerator {
196
Bharat saraswal870c56f2016-02-20 21:57:16 +0530197 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530198 * Creates an instance of method generator.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530199 */
200 private MethodsGenerator() {
201 }
202
203 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530204 * Returns the methods strings for builder interface.
205 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530206 * @param name attribute name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530207 * @param pluginConfig plugin configurations
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530208 * @return method string for builder interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530209 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530210 public static String parseBuilderInterfaceBuildMethodString(String name, YangPluginConfig pluginConfig) {
211 return getJavaDoc(BUILD_METHOD, name, false, pluginConfig) + getBuildForInterface(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530212 }
213
214 /**
215 * Returns getter string.
216 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530217 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530218 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530219 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530220 * @return getter string
221 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530222 public static String getGetterString(JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530223 YangPluginConfig pluginConfig) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530224
Vinod Kumar S38046502016-03-23 15:30:27 +0530225 String returnType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530226 String attributeName = attr.getAttributeName();
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530227
Bharat saraswal33dfa012016-05-17 19:59:16 +0530228 return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr(), pluginConfig)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530229 + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530230 }
231
232 /**
233 * Returns setter string.
234 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530235 * @param attr attribute info
236 * @param className java class name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530237 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530238 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530239 * @return setter string
240 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530241 public static String getSetterString(JavaAttributeInfo attr, String className, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530242 YangPluginConfig pluginConfig) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530243
Vinod Kumar S38046502016-03-23 15:30:27 +0530244 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530245 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530246 JavaDocGen.JavaDocType type;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530247 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530248 type = MANAGER_SETTER_METHOD;
249 } else {
250 type = SETTER_METHOD;
251 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530252
Bharat saraswal33dfa012016-05-17 19:59:16 +0530253 return getJavaDoc(type, attributeName, attr.isListAttr(), pluginConfig)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530254 + getSetterForInterface(attributeName, attrType, className, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530255 }
256
257 /**
258 * Returns constructor method string.
259 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530260 * @param name class name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530261 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530262 * @return constructor string
263 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530264 public static String getConstructorString(String name, YangPluginConfig pluginConfig) {
265 return getJavaDoc(CONSTRUCTOR, name, false, pluginConfig);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530266 }
267
268 /**
269 * Returns default constructor method string.
270 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530271 * @param name class name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530272 * @param modifierType modifier type
Bharat saraswal33dfa012016-05-17 19:59:16 +0530273 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530274 * @return default constructor string
275 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530276 public static String getDefaultConstructorString(String name, String modifierType,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530277 YangPluginConfig pluginConfig) {
Bharat saraswal33dfa012016-05-17 19:59:16 +0530278 return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false, pluginConfig)
279 + getDefaultConstructor(name, modifierType)
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530280 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530281 }
282
283 /**
284 * Returns check not null string.
285 *
286 * @param name attribute name
287 * @return check not null string
288 */
289 public static String getCheckNotNull(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530290 return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING + OPEN_PARENTHESIS + name + COMMA + SPACE + name
291 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530292 }
293
294 /**
295 * Returns build method string.
296 *
297 * @param name class name
298 * @return build string
299 */
300 public static String getBuildString(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530301 return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530302 }
303
304 /**
305 * Returns the getter method strings for class file.
306 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530307 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530308 * @param generatedJavaFiles for the type of java file being generated
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530309 * @return getter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530310 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530311 public static String getGetterForClass(JavaAttributeInfo attr, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530312
Vinod Kumar S38046502016-03-23 15:30:27 +0530313 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530314 String attributeName = attr.getAttributeName();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530315
316 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530317 return getGetter(attrQuaifiedType, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530318 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530319 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530320 return getGetter(listAttr, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530321 }
322
323 /**
324 * Returns getter for attribute.
325 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530326 * @param type return type
327 * @param name attribute name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530328 * @param generatedJavaFiles generated java files
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530329 * @return getter for attribute
330 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530331 public static String getGetter(String type, String name, int generatedJavaFiles) {
Bharat saraswalcad0e652016-05-26 23:48:38 +0530332 String ret = parseTypeForReturnValue(type);
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530333 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
janani b4a6711a2016-05-17 13:12:22 +0530334 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCapitalCase(name)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530335 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
336 EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION +
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530337 RETURN + SPACE + ret + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530338 } else {
339 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + name
340 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
341 EIGHT_SPACE_INDENTATION + RETURN + SPACE + name + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
342 + CLOSE_CURLY_BRACKET;
343 }
344
Bharat saraswal870c56f2016-02-20 21:57:16 +0530345 }
346
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530347 /*Provides string to return for type.*/
Bharat saraswalcad0e652016-05-26 23:48:38 +0530348 private static String parseTypeForReturnValue(String type) {
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530349 switch (type) {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530350 case BYTE:
351 case INT:
352 case SHORT:
353 case LONG:
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +0530354 case DOUBLE:
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530355 return "0";
356 case BOOLEAN_DATA_TYPE:
357 return FALSE;
358 default:
359 return null;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530360 }
361 }
362
Bharat saraswal870c56f2016-02-20 21:57:16 +0530363 /**
364 * Returns the setter method strings for class file.
365 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530366 * @param attr attribute info
367 * @param className name of the class
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530368 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530369 * @return setter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530370 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530371 public static String getSetterForClass(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530372
Vinod Kumar S38046502016-03-23 15:30:27 +0530373 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530374 String attributeName = attr.getAttributeName();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530375 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530376 return getSetter(className, attributeName, attrQuaifiedType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530377 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530378 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530379 return getSetter(className, attributeName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530380 }
381
382 /**
383 * Returns setter for attribute.
384 *
385 * @param className class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530386 * @param name attribute name
387 * @param type return type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530388 * @return setter for attribute
389 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530390 private static String getSetter(String className, String name, String type, int generatedJavaFiles) {
391 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
392 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX
janani b4a6711a2016-05-17 13:12:22 +0530393 + getCapitalCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530394 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO +
395 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530396 } else if (generatedJavaFiles == GENERATE_EVENT_SUBJECT_CLASS) {
397 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + name + OPEN_PARENTHESIS + type + SPACE
398 + name + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
399 + THIS + PERIOD + name + SPACE + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE
400 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530401 } else {
402 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE +
403 name + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
Bharat saraswal33dfa012016-05-17 19:59:16 +0530404 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE
405 + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE
406 + THIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530407 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530408 }
409
410 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530411 * Returns the setter method strings for class file.
412 *
413 * @param attr attribute info
414 * @return setter method for class
415 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530416 public static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530417
Vinod Kumar S38046502016-03-23 15:30:27 +0530418 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530419 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530420 return getTypeDefSetter(attrQuaifiedType, attributeName);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530421 }
422
423 /**
424 * Returns type def's setter for attribute.
425 *
426 * @param type data type
427 * @param name attribute name
428 * @return setter for type def's attribute
429 */
430 private static String getTypeDefSetter(String type, String name) {
janani b4a6711a2016-05-17 13:12:22 +0530431 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(name)
Bharat saraswale2d51d62016-03-23 19:40:35 +0530432 + OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
433 + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE
434 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530435 }
436
437 /**
438 * Returns override string.
439 *
440 * @return override string
441 */
442 public static String getOverRideString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530443 return NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530444 }
445
446 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530447 * Returns the getter method strings for interface file.
448 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530449 * @param yangName name of the attribute
450 * @param returnType return type of attribute
451 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530452 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530453 * @return getter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530454 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530455 public static String getGetterForInterface(String yangName, String returnType, boolean isList,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530456 int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530457
458 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530459 return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530460 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530461 String listAttr = getListString() + returnType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530462 return getGetterInterfaceString(listAttr, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530463 }
464
465 /**
466 * Returns getter for attribute in interface.
467 *
468 * @param returnType return type
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530469 * @param yangName attribute name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530470 * @return getter for interface
471 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530472 private static String getGetterInterfaceString(String returnType, String yangName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530473 int generatedJavaFiles) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530474 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
janani b4a6711a2016-05-17 13:12:22 +0530475 return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCapitalCase(yangName)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530476 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
477 } else {
478 return FOUR_SPACE_INDENTATION + returnType + SPACE + yangName
479 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
480 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530481 }
482
483 /**
484 * Returns the setter method strings for interface file.
485 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530486 * @param attrName name of the attribute
487 * @param attrType return type of attribute
488 * @param className name of the java class being generated
489 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530490 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530491 * @return setter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530492 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530493 public static String getSetterForInterface(String attrName, String attrType, String className,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530494 boolean isList, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530495
496 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530497 return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530498 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530499 String listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530500 return getSetterInterfaceString(className, attrName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530501 }
502
503 /**
504 * Returns setter string for interface.
505 *
506 * @param className class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530507 * @param attrName attribute name
508 * @param attrType attribute type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530509 * @return setter string
510 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530511 private static String getSetterInterfaceString(String className, String attrName, String attrType,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530512 int generatedJavaFiles) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530513 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
514
janani b4a6711a2016-05-17 13:12:22 +0530515 return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(attrName)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530516 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
517 } else {
518 return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + attrName
519 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
520 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530521 }
522
523 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530524 * Returns list string.
525 *
526 * @return list string
527 */
528 private static String getListString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530529 return LIST + DIAMOND_OPEN_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530530 }
531
532 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530533 * Returns return type for attribute.
534 *
535 * @param attr attribute info
536 * @return return type
537 */
538 private static String getReturnType(JavaAttributeInfo attr) {
539
Bharat saraswale2d51d62016-03-23 19:40:35 +0530540 String returnType = EMPTY_STRING;
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530541 if (attr.isQualifiedName() && attr.getImportInfo().getPkgInfo() != null) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530542 returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
Vinod Kumar S38046502016-03-23 15:30:27 +0530543 }
544 returnType = returnType + attr.getImportInfo().getClassInfo();
545 return returnType;
546 }
547
548 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530549 * Returns the build method strings for interface file.
550 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530551 * @param yangName name of the interface
552 * @return build method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530553 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530554 public static String getBuildForInterface(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530555 return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
556 + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530557 }
558
559 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530560 * Returns constructor string for impl class.
561 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530562 * @param yangName class name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530563 * @param pluginConfig plugin configurations
Vinod Kumar S38046502016-03-23 15:30:27 +0530564 * @return constructor string
565 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530566 public static String getConstructorStart(String yangName, YangPluginConfig pluginConfig) {
Vinod Kumar S38046502016-03-23 15:30:27 +0530567
Bharat saraswal33dfa012016-05-17 19:59:16 +0530568 String javadoc = getConstructorString(yangName, pluginConfig);
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530569 String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + getCapitalCase(DEFAULT) + yangName +
570 OPEN_PARENTHESIS + yangName + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT
571 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
Vinod Kumar S38046502016-03-23 15:30:27 +0530572 return javadoc + constructor;
573 }
574
575 /**
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530576 * Returns constructor string for op param class.
577 *
578 * @param yangName class name
579 * @param pluginConfig plugin configurations
580 * @return constructor string
581 */
582 public static String getOpParamConstructorStart(String yangName, YangPluginConfig pluginConfig) {
583
584 String javadoc = getConstructorString(yangName, pluginConfig);
585 String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + OPERATION +
586 OPEN_PARENTHESIS + yangName + OPERATION + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT
587 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
588 return javadoc + constructor;
589 }
590 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530591 * Returns the constructor strings for class file.
592 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530593 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530594 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530595 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530596 * @return constructor for class
597 */
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530598 public static String getConstructor(JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530599 YangPluginConfig pluginConfig) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530600
janani b4a6711a2016-05-17 13:12:22 +0530601 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530602 String constructor;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530603
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530604 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530605 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD
606 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
607 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
608 + getCapitalCase(getCamelCase(attributeName, pluginConfig.getConflictResolver()))
609 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530610 } else {
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530611 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD
612 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
613 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD
614 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) +
615 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530616 }
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530617 return constructor;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530618 }
619
620 /**
Gaurav Agrawal56527662016-04-20 15:49:17 +0530621 * Returns the rpc strings for service interface.
622 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530623 * @param rpcName name of the rpc
624 * @param inputName name of input
625 * @param outputName name of output
Bharat saraswal33dfa012016-05-17 19:59:16 +0530626 * @param pluginConfig plugin configurations
Gaurav Agrawal56527662016-04-20 15:49:17 +0530627 * @return rpc method string
628 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530629 public static String getRpcServiceMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530630 YangPluginConfig pluginConfig) {
Gaurav Agrawal56527662016-04-20 15:49:17 +0530631
Bharat saraswal33dfa012016-05-17 19:59:16 +0530632 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswalcad0e652016-05-26 23:48:38 +0530633 if (!inputName.equals(EMPTY_STRING)) {
634 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530635 }
Bharat saraswalcad0e652016-05-26 23:48:38 +0530636 return FOUR_SPACE_INDENTATION + outputName + SPACE + rpcName + OPEN_PARENTHESIS + inputName
637 + CLOSE_PARENTHESIS + SEMI_COLAN;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530638 }
639
640 /**
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530641 * Returns the rpc strings for manager impl.
642 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530643 * @param rpcName name of the rpc
644 * @param inputName name of input
645 * @param outputName name of output
Bharat saraswal33dfa012016-05-17 19:59:16 +0530646 * @param pluginConfig plugin configurations
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530647 * @return rpc method string
648 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530649 public static String getRpcManagerMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530650 YangPluginConfig pluginConfig) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530651
Bharat saraswal33dfa012016-05-17 19:59:16 +0530652 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswalcad0e652016-05-26 23:48:38 +0530653 if (!inputName.equals(EMPTY_STRING)) {
654 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530655 }
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530656
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530657 String method = getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName
658 + OPEN_PARENTHESIS + inputName + CLOSE_PARENTHESIS + SPACE
659 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530660 if (!outputName.contentEquals(VOID)) {
Bharat saraswalcad0e652016-05-26 23:48:38 +0530661 method += EIGHT_SPACE_INDENTATION + RETURN + SPACE + parseTypeForReturnValue(outputName) + SEMI_COLAN
662 + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530663 }
664 method += FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
665
666 return method;
667 }
668
669 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530670 * Returns the build method strings for class file.
671 *
672 * @param yangName class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530673 * @return build method string for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530674 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530675 public static String getBuild(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530676 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530677 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE +
678 getCapitalCase(DEFAULT) + yangName + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN
679 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530680 }
681
682 /**
683 * Returns the Default constructor strings for class file.
684 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530685 * @param name name of the class
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530686 * @param modifierType modifier type for default constructor
Bharat saraswal870c56f2016-02-20 21:57:16 +0530687 * @return Default constructor for class
688 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530689 private static String getDefaultConstructor(String name, String modifierType) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530690 return FOUR_SPACE_INDENTATION + modifierType + SPACE + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
691 + OPEN_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530692 }
693
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530694 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530695 * Returns to string method's open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530696 *
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530697 * @return string method's open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530698 */
699 public static String getToStringMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530700 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STRING_DATA_TYPE + SPACE + TO
701 + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
702 + EIGHT_SPACE_INDENTATION + RETURN + GOOGLE_MORE_OBJECT_METHOD_STRING + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530703 }
704
705 /**
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530706 * Returns to string leaf for get method.
707 *
708 * @return string leaf for get method
709 */
710 public static String getToStringLeafgetter() {
711 return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BITSET + SPACE + GET_FILTER_LEAF
712 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
713 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + FILTER_LEAF + SEMI_COLAN + NEW_LINE
714 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
715 }
716
717 /**
718 * Returns to string select leaf for get method.
719 *
720 * @return select leaf string for get method
721 */
722 public static String getToStringSelectLeafgetter() {
723 return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BITSET + SPACE + GET_SELECT_LEAF
724 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
725 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + SELECT_LEAF + SEMI_COLAN + NEW_LINE
726 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
727 }
728
729 /**
730 * Returns to string leaf list for get method.
731 *
732 * @return string leaf list for get method
733 */
734 public static String getToStringLeafListgetter() {
735 return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BITSET + SPACE + GET_FILTER_LEAF_LIST
736 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
737 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + FILTER_LEAF_LIST + SEMI_COLAN + NEW_LINE
738 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
739 }
740
741 /**
742 * Returns to string select leaf list for get.
743 *
744 * @return select leaf list list for get
745 */
746 public static String getToStringSelectLeafListgetter() {
747 return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BITSET + SPACE + GET_SELECT_LEAF_LIST
748 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
749 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + SELECT_LEAF_LIST + SEMI_COLAN + NEW_LINE
750 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
751 }
752
753 /**
754 * Returns to string operation type for get method.
755 *
756 * @return operation type for get method
757 */
758 public static String getOperationTypegetter() {
759 return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + OPERATION_ENUM
760 + SPACE + GET_OPERATION_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
761 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE
762 + OP_PARAM_TYPE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
763 }
764
765 /**
766 * Returns to string operation type for set.
767 *
768 * @return operation type set method
769 */
770 public static String getOperationTypeSetter() {
771 return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_OPERATION_TYPE
772 + OPEN_PARENTHESIS + OPERATION_ENUM + SPACE + getSmallCase(OPERATION_ENUM) + CLOSE_PARENTHESIS
773 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
774 + OP_PARAM_TYPE + SPACE + EQUAL + SPACE + getSmallCase(OPERATION_ENUM) + SEMI_COLAN + NEW_LINE
775 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
776 }
777
778 /**
779 * Returns string for leaf set method.
780 *
781 * @param className class name
782 * @param curnode current YANG node
783 * @param pluginConfig plugin configurations
784 * @return string for leaf set method
785 */
786 public static String getSetterForLeaf(String className, YangNode curnode, YangPluginConfig pluginConfig) {
787
788 int numleaf = 1;
789 String filterMethod = "";
790 TempJavaBeanFragmentFiles tempFragmentFiles = ((JavaCodeGeneratorInfo) curnode)
791 .getTempJavaCodeFragmentFiles().getBeanTempFiles();
792 if (curnode instanceof YangLeavesHolder) {
793 YangLeavesHolder leavesHolder = (YangLeavesHolder) curnode;
794 List<YangLeaf> leaves = leavesHolder.getListOfLeaf();
795 if (leaves != null && !leaves.isEmpty()) {
796 for (YangLeaf leaf : leaves) {
797 JavaAttributeInfo javaAttributeInfo = getJavaAttributeOfLeaf(tempFragmentFiles, leaf, pluginConfig);
798 String attrQuaifiedType = getReturnType(javaAttributeInfo);
799 String attributeName = javaAttributeInfo.getAttributeName();
800
801 filterMethod = filterMethod + NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE
802 + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE
803 + attributeName + OPEN_PARENTHESIS + attrQuaifiedType
804 + SPACE + RECEIVED_OBJECT + attributeName + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
805 + NEW_LINE + EIGHT_SPACE_INDENTATION + attributeName + SPACE + EQUAL + SPACE
806 + RECEIVED_OBJECT + attributeName + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
807 + GET_FILTER_LEAF + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + SET_METHOD_PREFIX
808 + OPEN_PARENTHESIS + String.valueOf(numleaf) + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
809 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + THIS + SEMI_COLAN + NEW_LINE
810 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
811 numleaf++;
812 }
813 }
814 }
815 return filterMethod;
816 }
817
818 /**
819 * Returns string for leaf list set method.
820 *
821 * @param className class name
822 * @param curnode current YANG node
823 * @param pluginConfig plugin configurations
824 * @return string for leaf list set method
825 */
826 public static String getSetterForLeafList(String className, YangNode curnode, YangPluginConfig pluginConfig) {
827
828 int numleaf = 1;
829 String filterMethod = "";
830 TempJavaBeanFragmentFiles tempFragmentFiles = ((JavaCodeGeneratorInfo) curnode)
831 .getTempJavaCodeFragmentFiles().getBeanTempFiles();
832 if (curnode instanceof YangLeavesHolder) {
833 YangLeavesHolder leavesHolder = (YangLeavesHolder) curnode;
834 List<YangLeafList> listOfLeafList = leavesHolder.getListOfLeafList();
835
836 if (listOfLeafList != null && !listOfLeafList.isEmpty()) {
837 for (YangLeafList leafList : listOfLeafList) {
838 JavaAttributeInfo javaAttributeInfo = getJavaAttributeOfLeafList(tempFragmentFiles, leafList,
839 pluginConfig);
840 String attributeName = javaAttributeInfo.getAttributeName();
841 String attrQuaifiedType = getReturnType(javaAttributeInfo);
842 if (javaAttributeInfo.isListAttr()) {
843 attrQuaifiedType = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
844 }
845 filterMethod = filterMethod + NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE
846 + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE
847 + attributeName + OPEN_PARENTHESIS + attrQuaifiedType
848 + SPACE + RECEIVED_OBJECT + attributeName + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
849 + NEW_LINE + EIGHT_SPACE_INDENTATION + attributeName + SPACE + EQUAL + SPACE
850 + RECEIVED_OBJECT + attributeName + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
851 + GET_FILTER_LEAF_LIST + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + SET_METHOD_PREFIX
852 + OPEN_PARENTHESIS + String.valueOf(numleaf) + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
853 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + THIS + SEMI_COLAN + NEW_LINE
854 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
855 numleaf++;
856 }
857 }
858 }
859 return filterMethod;
860 }
861
862 /**
863 * Returns whether the data type is of primitive data type.
864 *
865 * @param dataType data type to be checked
866 * @return true, if data type can have primitive data type, false otherwise
867 */
868 public static boolean isPrimitiveDataType(YangDataTypes dataType) {
869 return dataType == INT8
870 || dataType == INT16
871 || dataType == INT32
872 || dataType == INT64
873 || dataType == UINT8
874 || dataType == UINT16
875 || dataType == UINT32
876 || dataType == UINT64
877 || dataType == DECIMAL64
878 || dataType == BOOLEAN;
879 }
880
881 /**
882 * Returns string for is filter content match method.
883 *
884 * @param className class name
885 * @param curnode current YANG node
886 * @param pluginConfig plugin configurations
887 * @return string for is filter content match method
888 */
889 public static String getisFilterContentMatch(String className, YangNode curnode, YangPluginConfig pluginConfig) {
890
891 int numleaf = 1;
892 String filterMethod = "";
893 TempJavaBeanFragmentFiles tempFragmentFiles = ((JavaCodeGeneratorInfo) curnode)
894 .getTempJavaCodeFragmentFiles().getBeanTempFiles();
895
896 if (curnode instanceof YangLeavesHolder) {
897 YangLeavesHolder leavesHolder = (YangLeavesHolder) curnode;
898 List<YangLeaf> leaves = leavesHolder.getListOfLeaf();
899 List<YangLeafList> listOfLeafList = leavesHolder.getListOfLeafList();
900 if (leaves != null || listOfLeafList != null) {
901 filterMethod = NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE
902 + SPACE + FILTER_CONTENT_MATCH + OPEN_PARENTHESIS + getCapitalCase(DEFAULT)
903 + getCapitalCase(className) + SPACE + APP_INSTANCE + CLOSE_PARENTHESIS + SPACE
904 + OPEN_CURLY_BRACKET + NEW_LINE;
905 }
906 if (leaves != null) {
907 for (YangLeaf leaf : leaves) {
908 JavaAttributeInfo javaAttributeInfo = getJavaAttributeOfLeaf(tempFragmentFiles, leaf,
909 pluginConfig);
910 String attributeName = javaAttributeInfo.getAttributeName();
911
912 String attrQuaifiedType = "";
913 if (isPrimitiveDataType(leaf.getDataType().getDataType())) {
914 attrQuaifiedType = APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
915 + SPACE + NOT + EQUAL + SPACE + attributeName + OPEN_PARENTHESIS
916 + CLOSE_PARENTHESIS;
917 } else {
918 attrQuaifiedType = APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
919 + SPACE + EQUAL + EQUAL + SPACE + NULL + SPACE + OR_OPERATION + SPACE + OPEN_PARENTHESIS
920 + NOT + OPEN_PARENTHESIS + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
921 + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD
922 + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
923 + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS;
924 }
925
926 filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS
927 + GET_FILTER_LEAF + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + GET_METHOD_PREFIX
928 + OPEN_PARENTHESIS + String.valueOf(numleaf) + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
929 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE
930 + OPEN_PARENTHESIS + attrQuaifiedType + CLOSE_PARENTHESIS + SPACE
931 + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE
932 + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE
933 + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
934 numleaf++;
935 }
936 }
937
938 if (listOfLeafList != null) {
939 numleaf = 1;
940 for (YangLeafList leafList : listOfLeafList) {
941 JavaAttributeInfo javaAttributeInfo = getJavaAttributeOfLeafList(tempFragmentFiles, leafList,
942 pluginConfig);
943 String attributeName = javaAttributeInfo.getAttributeName();
944 String attrQuaifiedType = "";
945 if (isPrimitiveDataType(leafList.getDataType().getDataType())) {
946 attrQuaifiedType = APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
947 + SPACE + NOT + EQUAL + SPACE + attributeName + OPEN_PARENTHESIS
948 + CLOSE_PARENTHESIS;
949 } else {
950 attrQuaifiedType = APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
951 + SPACE + EQUAL + EQUAL + SPACE + NULL + OR_OPERATION + OPEN_PARENTHESIS + NOT
952 + OPEN_PARENTHESIS + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
953 + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD
954 + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS;
955 }
956
957 filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS
958 + GET_FILTER_LEAF_LIST + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + GET_METHOD_PREFIX
959 + OPEN_PARENTHESIS + String.valueOf(numleaf) + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
960 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE
961 + OPEN_PARENTHESIS + attrQuaifiedType + CLOSE_PARENTHESIS + SPACE
962 + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE
963 + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE
964 + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
965 numleaf++;
966 }
967 }
968
969 if (leaves != null || listOfLeafList != null) {
970 filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + RETURN + SPACE + TRUE + SEMI_COLAN +
971 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
972 }
973 }
974 return filterMethod;
975 }
976
977 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530978 * Returns omit null value string.
979 *
980 * @return omit null value string
981 */
982 public static String getOmitNullValueString() {
983 return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING + NEW_LINE;
984 }
985
986 /**
987 * Returns to string method's close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530988 *
989 * @return to string method close string
990 */
991 public static String getToStringMethodClose() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530992 return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
993 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530994 }
995
996 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530997 * Returns to string method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530998 *
999 * @param attr attribute info
1000 * @return to string method
1001 */
Vinod Kumar S38046502016-03-23 15:30:27 +05301002 public static String getToStringMethod(JavaAttributeInfo attr) {
1003
janani b4a6711a2016-05-17 13:12:22 +05301004 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +05301005 return TWELVE_SPACE_INDENTATION + PERIOD + ADD_STRING + OPEN_PARENTHESIS + QUOTES + attributeName + QUOTES
1006 + COMMA + SPACE + attributeName + CLOSE_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301007 }
1008
1009 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301010 * Returns from string method's open string.
1011 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301012 * @param className name of the class
Bharat saraswal33dfa012016-05-17 19:59:16 +05301013 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301014 * @return from string method's open string
1015 */
Bharat saraswal33dfa012016-05-17 19:59:16 +05301016 public static String getFromStringMethodSignature(String className, YangPluginConfig pluginConfig) {
1017 return getJavaDoc(FROM_METHOD, className, false, pluginConfig) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
1018 + STATIC + SPACE + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS
1019 + STRING_DATA_TYPE + SPACE + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE
1020 + OPEN_CURLY_BRACKET + NEW_LINE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301021 }
1022
1023 /**
1024 * Return from string method's close string.
1025 *
1026 * @return from string method's close string
1027 */
1028 public static String getFromStringMethodClose() {
1029 return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1030 CLOSE_CURLY_BRACKET + NEW_LINE;
1031 }
1032
1033 /**
1034 * Return from string method's body string.
1035 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301036 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301037 * @param fromStringAttributeInfo attribute info for the from string
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301038 * wrapper type
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301039 * @return from string method's body string
1040 */
1041 public static String getFromStringMethod(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301042 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301043
1044 return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
1045 + getParsedSubString(attr, fromStringAttributeInfo) + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
1046 + getReturnOfSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION + getCatchSubString()
1047 + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1048 }
1049
1050 /**
1051 * Returns sub string with try statement for union's from string method.
1052 *
1053 * @return sub string with try statement for union's from string method
1054 */
1055 public static String getTrySubString() {
1056 return TRY + SPACE + OPEN_CURLY_BRACKET;
1057 }
1058
1059 /**
1060 * Returns sub string with return statement for union's from string method.
1061 *
1062 * @return sub string with return statement for union's from string method
1063 */
1064 public static String getReturnOfSubString() {
1065 return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL + CLOSE_PARENTHESIS + SEMI_COLAN;
1066 }
1067
1068 /**
1069 * Returns sub string with catch statement for union's from string method.
1070 *
1071 * @return sub string with catch statement for union's from string method
1072 */
1073 public static String getCatchSubString() {
1074 return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS + EXCEPTION + SPACE + EXCEPTION_VAR
1075 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
1076 }
1077
1078 /**
1079 * Returns sub string with parsed statement for union's from string method.
1080 *
1081 * @param attr attribute info
1082 * @return sub string with parsed statement for union's from string method
1083 */
1084 private static String getParsedSubString(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301085 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301086
1087 String targetDataType = getReturnType(attr);
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +05301088 if (fromStringAttributeInfo.getAttributeType().getDataType() == BINARY) {
1089 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
1090 + PERIOD + GET_BYTES + OPEN_PARENTHESIS + CLOSE_PARENTHESIS;
1091 } else {
1092 String parseFromStringMethod = getParseFromStringMethod(targetDataType,
1093 fromStringAttributeInfo.getAttributeType());
1094 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + parseFromStringMethod
1095 + OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS;
1096 }
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301097 }
1098
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301099 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301100 * Returns hash code method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301101 *
Bharat saraswald9822e92016-04-05 15:13:44 +05301102 * @return hash code method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301103 */
1104 public static String getHashCodeMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301105 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + INT + SPACE + HASH_CODE_STRING
1106 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
1107 + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301108 }
1109
1110 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301111 * Returns hash code methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301112 *
1113 * @param hashcodeString hash code string
1114 * @return to hash code method close string
1115 */
1116 public static String getHashCodeMethodClose(String hashcodeString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301117 hashcodeString = trimAtLast(hashcodeString, COMMA);
1118 hashcodeString = trimAtLast(hashcodeString, SPACE);
1119 return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1120 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301121 }
1122
1123 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301124 * Returns hash code method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301125 *
1126 * @param attr attribute info
1127 * @return hash code method
1128 */
Vinod Kumar S38046502016-03-23 15:30:27 +05301129 public static String getHashCodeMethod(JavaAttributeInfo attr) {
janani b4a6711a2016-05-17 13:12:22 +05301130 return attr.getAttributeName() + COMMA + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301131 }
1132
1133 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301134 * Returns equals method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301135 *
1136 * @param className class name
Bharat saraswald9822e92016-04-05 15:13:44 +05301137 * @return equals method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301138 */
1139 public static String getEqualsMethodOpen(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301140 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE + EQUALS_STRING
1141 + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + OBJ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
1142 + NEW_LINE + getEqualsMethodsCommonIfCondition() + getEqualsMethodsSpecificIfCondition(className);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301143 }
1144
1145 /**
1146 * Returns equal methods if condition string.
1147 *
1148 * @return if condition string
1149 */
1150 private static String getEqualsMethodsCommonIfCondition() {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301151 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + THIS + SPACE + EQUAL + EQUAL + SPACE + OBJ
1152 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + SPACE
1153 + TRUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301154 }
1155
1156 /**
1157 * Returns if condition for specific class object in equals method.
1158 *
1159 * @param className class name
1160 * @return if condition string
1161 */
1162 private static String getEqualsMethodsSpecificIfCondition(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301163 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + OBJ + INSTANCE_OF + className
1164 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + className
1165 + SPACE + OTHER + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS + className + CLOSE_PARENTHESIS + SPACE
1166 + OBJ + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301167 }
1168
1169 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301170 * Returns equals methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301171 *
1172 * @param equalMethodString equal method string
Bharat saraswald9822e92016-04-05 15:13:44 +05301173 * @return equals method close string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301174 */
1175 public static String getEqualsMethodClose(String equalMethodString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +05301176 equalMethodString = trimAtLast(equalMethodString, AND);
1177 equalMethodString = trimAtLast(equalMethodString, AND);
1178 equalMethodString = trimAtLast(equalMethodString, SPACE);
1179 equalMethodString = trimAtLast(equalMethodString, NEW_LINE) + SEMI_COLAN + NEW_LINE;
1180 return equalMethodString + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
1181 + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1182 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301183 }
1184
1185 /**
Bharat saraswald9822e92016-04-05 15:13:44 +05301186 * Returns equals method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301187 *
1188 * @param attr attribute info
1189 * @return equals method
1190 */
Vinod Kumar S38046502016-03-23 15:30:27 +05301191 public static String getEqualsMethod(JavaAttributeInfo attr) {
1192
janani b4a6711a2016-05-17 13:12:22 +05301193 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +05301194 return SIXTEEN_SPACE_INDENTATION + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS
1195 + attributeName + COMMA + SPACE + OTHER + PERIOD + attributeName + CLOSE_PARENTHESIS + SPACE + AND
1196 + AND;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301197 }
1198
1199 /**
1200 * Returns of method string for class.
1201 *
1202 * @param name class name
1203 * @param attr attribute info
1204 * @return of method string
1205 */
Vinod Kumar S38046502016-03-23 15:30:27 +05301206 public static String getOfMethod(String name, JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301207
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301208 String attrQualifiedType = getReturnType(attr);
1209
Bharat saraswale2d51d62016-03-23 19:40:35 +05301210 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name + SPACE + OF + OPEN_PARENTHESIS
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301211 + attrQualifiedType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Bharat saraswale2d51d62016-03-23 19:40:35 +05301212 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name + OPEN_PARENTHESIS + VALUE
1213 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +05301214 }
1215
Bharat saraswalcc1cdab2016-04-16 02:28:25 +05301216 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301217 * Returns of method's string and java doc for special type.
1218 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301219 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301220 * @param generatedJavaClassName class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301221 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301222 * @return of method's string and java doc for special type
1223 */
Bharat saraswal33dfa012016-05-17 19:59:16 +05301224 public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301225 YangPluginConfig pluginConfig) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301226
1227 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +05301228 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301229
Bharat saraswal33dfa012016-05-17 19:59:16 +05301230 return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301231 + getOfMethodString(attrType, generatedJavaClassName);
1232 }
1233
1234 /**
1235 * Returns of method's string.
1236 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301237 * @param type data type
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301238 * @param className class name
1239 * @return of method's string
1240 */
1241 private static String getOfMethodString(String type, String className) {
1242
1243 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + className + SPACE + OF + OPEN_PARENTHESIS
1244 + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1245 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + className + OPEN_PARENTHESIS + VALUE
1246 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1247 }
1248
1249 /**
1250 * Returns string and java doc for constructor of type class.
1251 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301252 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301253 * @param generatedJavaClassName class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301254 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301255 * @return string and java doc for constructor of type class
1256 */
Bharat saraswal33dfa012016-05-17 19:59:16 +05301257 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301258 String generatedJavaClassName,
1259 YangPluginConfig pluginConfig) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301260
1261 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +05301262 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301263
Bharat saraswal33dfa012016-05-17 19:59:16 +05301264 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301265 + getTypeConstructorString(attrType, attrName, generatedJavaClassName);
1266 }
1267
1268 /**
1269 * Returns type constructor string.
1270 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301271 * @param type data type
1272 * @param name attribute name
Gaurav Agrawal338735b2016-04-18 18:53:11 +05301273 * @param className class name
1274 * @return type constructor string
1275 */
1276 private static String getTypeConstructorString(String type, String name, String className) {
1277
1278 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
1279 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
1280 + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
1281 + CLOSE_CURLY_BRACKET;
1282 }
1283
1284 /**
Bharat saraswalb551aae2016-07-14 15:18:20 +05301285 * Returns implementation of add augmentation.
1286 *
1287 * @return implementation of add augmentation
1288 */
1289 public static String getAddAugmentInfoMethodImpl() {
1290 return NEW_LINE + generateForAddAugmentation() + FOUR_SPACE_INDENTATION +
1291 PUBLIC + SPACE + VOID + SPACE + ADD_STRING
1292 + AUGMENTATION + OPEN_PARENTHESIS + YANG_AUGMENTED_INFO + SPACE + VALUE + COMMA + SPACE + CLASS_STRING +
1293 SPACE + CLASS + OBJECT_STRING + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
1294 EIGHT_SPACE_INDENTATION + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + PUT + OPEN_PARENTHESIS +
1295 CLASS + OBJECT_STRING + COMMA + SPACE + VALUE +
1296 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1297 CLOSE_CURLY_BRACKET + NEW_LINE;
1298 }
1299
1300 /**
1301 * Returns implementation of get augment info.
1302 *
1303 * @return implementation of get augment info
1304 */
1305 public static String getAugmentInfoImpl() {
1306
1307 return generateForGetAugmentation() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
1308 YANG_AUGMENTED_INFO + SPACE + GET_METHOD_PREFIX +
1309 YANG_AUGMENTED_INFO + OPEN_PARENTHESIS + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
1310 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
1311 RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + GET + OPEN_PARENTHESIS + CLASS +
1312 OBJECT_STRING + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
1313 CLOSE_CURLY_BRACKET + NEW_LINE;
1314 }
1315
1316 /**
Bharat saraswald72411a2016-04-19 01:00:16 +05301317 * Returns enum's constructor.
1318 *
1319 * @param className enum's class name
1320 * @return enum's constructor
1321 */
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301322 public static String getEnumsConstructor(String className) {
Bharat saraswald72411a2016-04-19 01:00:16 +05301323 return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
1324 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
1325 + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1326 }
Bharat saraswalc0e04842016-05-12 13:16:57 +05301327
1328 /**
1329 * Returns of method for enum class.
1330 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301331 * @param className class name
1332 * @param attr java attribute
1333 * @param enumMap enum's sets map
1334 * @param enumList enum's sets list
Bharat saraswal33dfa012016-05-17 19:59:16 +05301335 * @param pluginConfig plugin configurations
Bharat saraswalc0e04842016-05-12 13:16:57 +05301336 * @return of method
1337 */
1338 public static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301339 Map<String, Integer> enumMap, List<String> enumList,
1340 YangPluginConfig pluginConfig) {
Bharat saraswalc0e04842016-05-12 13:16:57 +05301341 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +05301342 String attrName = attr.getAttributeName();
Bharat saraswalc0e04842016-05-12 13:16:57 +05301343
janani b4a6711a2016-05-17 13:12:22 +05301344 String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + getCapitalCase(className) + SPACE
1345 + OF + OPEN_PARENTHESIS
Bharat saraswalc0e04842016-05-12 13:16:57 +05301346 + attrType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1347 + EIGHT_SPACE_INDENTATION + SWITCH + SPACE + OPEN_PARENTHESIS + VALUE
1348 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1349 int value = 0;
1350 for (String str : enumList) {
1351
1352 value = enumMap.get(str);
1353 method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value + COLAN + NEW_LINE
janani b4a6711a2016-05-17 13:12:22 +05301354 + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + getCapitalCase(className) + PERIOD
Bharat saraswalc0e04842016-05-12 13:16:57 +05301355 + str + SEMI_COLAN + NEW_LINE;
1356 }
1357 method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLAN + NEW_LINE + SIXTEEN_SPACE_INDENTATION
1358 + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1359 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1360
Bharat saraswal33dfa012016-05-17 19:59:16 +05301361 return getJavaDoc(OF_METHOD, getCapitalCase(className) + " for type " + attrName, false, pluginConfig)
1362 + method;
Bharat saraswalc0e04842016-05-12 13:16:57 +05301363 }
Bharat saraswal33dfa012016-05-17 19:59:16 +05301364
1365 /**
1366 * Returns activate method string.
1367 *
1368 * @return activate method string
1369 */
1370 public static String addActivateMethod() {
1371 return FOUR_SPACE_INDENTATION + ACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
1372 + PUBLIC + SPACE + VOID + SPACE + ACTIVATE + OPEN_PARENTHESIS
1373 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
1374 + NEW_LINE + EIGHT_SPACE_INDENTATION
1375 + YANG_UTILS_TODO
1376 + NEW_LINE + EIGHT_SPACE_INDENTATION
1377 + STARTED_LOG_INFO + FOUR_SPACE_INDENTATION
1378 + CLOSE_CURLY_BRACKET + NEW_LINE;
1379 }
1380
1381 /**
1382 * Returns deactivate method string.
1383 *
1384 * @return deactivate method string
1385 */
1386 public static String addDeActivateMethod() {
1387 return NEW_LINE + FOUR_SPACE_INDENTATION + DEACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
1388 + PUBLIC + SPACE + VOID + SPACE + DEACTIVATE + OPEN_PARENTHESIS
1389 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
1390 + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION
1391 + STOPPED_LOG_INFO + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1392 }
1393
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301394 /**
1395 * Returns from string method parsed string.
1396 *
1397 * @param targetDataType target data type
1398 * @param yangType YANG type
1399 * @return parsed string
1400 */
1401 public static String getParseFromStringMethod(String targetDataType, YangType<?> yangType) {
1402
1403 YangDataTypes type = yangType.getDataType();
1404
1405 switch (type) {
1406 case INT8:
1407 return BYTE_WRAPPER + PERIOD + PARSE_BYTE;
1408 case INT16:
1409 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1410 case INT32:
1411 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1412 case INT64:
1413 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1414 case UINT8:
1415 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1416 case UINT16:
1417 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1418 case UINT32:
1419 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1420 case UINT64:
1421 return NEW + SPACE + BIG_INTEGER;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +05301422 case DECIMAL64:
1423 return NEW + SPACE + BIG_DECIMAL;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301424 case STRING:
1425 return EMPTY_STRING;
1426 case EMPTY:
1427 case BOOLEAN:
1428 return BOOLEAN_WRAPPER + PERIOD + PARSE_BOOLEAN;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301429 case BITS:
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301430 case UNION:
1431 case ENUMERATION:
1432 case DERIVED:
1433 return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
1434 default:
1435 throw new TranslatorException("given data type is not supported.");
1436 }
1437 }
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301438
1439 /**
1440 * Returns copy constructor for augmented class.
1441 *
1442 * @param yangName augmente class name
1443 * @param augmentName augmented class name
1444 * @return copy constructor for augmented class
1445 */
1446 public static String getAugmentedNodesConstructorStart(String yangName,
1447 String augmentName) {
1448
1449 String javadoc = generateForTypeConstructor(yangName);
1450 String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + BUILDER + OPEN_PARENTHESIS
1451 + augmentName + PERIOD + augmentName + BUILDER + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
1452 + OPEN_CURLY_BRACKET + NEW_LINE;
1453 return javadoc + constructor;
1454
1455 }
1456
1457 /**
1458 * Returns the constructor strings for class file.
1459 *
1460 * @param attr attribute info
1461 * @param pluginConfig plugin configurations
1462 * @return constructor for class
1463 */
1464 public static String getAugmentedConstructor(JavaAttributeInfo attr, YangPluginConfig pluginConfig) {
1465
1466 String attributeName = getCamelCase(attr.getAttributeName(), pluginConfig.getConflictResolver());
1467
1468 return EIGHT_SPACE_INDENTATION + THIS + PERIOD + attributeName + OPEN_PARENTHESIS
1469 + VALUE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
1470 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1471 }
Bharat saraswalb551aae2016-07-14 15:18:20 +05301472
1473 /**
1474 * Returns augmented data getter and setter methods for service class.
1475 *
1476 * @param parent parent node
1477 * @return augmented data getter and setter methods for service class
1478 */
1479 public static String getAugmentsDataMethodForService(YangNode parent) {
1480 Map<YangAtomicPath, YangAugment> resolvedAugmentsForManager = getResolvedAugmentsForManager(parent);
1481 List<YangAtomicPath> targets = getSetOfNodeIdentifiers(parent);
1482 YangNode augmentedNode;
1483 String curNodeName;
1484 String method;
1485 StringBuilder methods = new StringBuilder();
1486 String parentName;
1487 String returnType;
1488 YangPluginConfig pluginConfig = ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig();
1489 for (YangAtomicPath nodeId : targets) {
1490 augmentedNode = resolvedAugmentsForManager.get(nodeId).getResolveNodeInPath().get(nodeId);
1491 if (((JavaFileInfoContainer) augmentedNode).getJavaFileInfo().getJavaName() != null) {
1492 curNodeName = ((JavaFileInfoContainer) augmentedNode).getJavaFileInfo().getJavaName();
1493 } else {
1494 curNodeName = getCapitalCase(getCamelCase(augmentedNode.getName(), pluginConfig
1495 .getConflictResolver()));
1496 }
1497 returnType = getAugmentedClassNameForDataMethods(augmentedNode, parent);
1498 parentName = getParentNodeNameForDataMethods(augmentedNode.getParent(), pluginConfig);
1499 method = getJavaDoc(GETTER_METHOD, getSmallCase(AUGMENTED + parentName + curNodeName), false,
1500 pluginConfig) + getGetterForInterface(AUGMENTED + parentName
1501 + getCapitalCase(curNodeName),
1502 returnType, false, GENERATE_SERVICE_AND_MANAGER)
1503 + NEW_LINE;
1504 methods.append(method);
1505
1506 method = getJavaDoc(MANAGER_SETTER_METHOD, AUGMENTED +
1507 getCapitalCase(parentName) + curNodeName, false, pluginConfig) +
1508 getSetterForInterface(getSmallCase(AUGMENTED) + parentName +
1509 getCapitalCase(curNodeName), returnType, parentName,
1510 false,
1511 GENERATE_SERVICE_AND_MANAGER) + NEW_LINE;
1512 methods.append(method);
1513 }
1514 return methods.toString();
1515 }
1516
1517 /**
1518 * Returns augmented data getter and setter methods for manager class.
1519 *
1520 * @param parent parent node
1521 * @return augmented data getter and setter methods for manager class
1522 */
1523 public static String getAugmentsDataMethodForManager(YangNode parent) {
1524 Map<YangAtomicPath, YangAugment> resolvedAugmentsForManager = getResolvedAugmentsForManager(parent);
1525 List<YangAtomicPath> targets = getSetOfNodeIdentifiers(parent);
1526 YangNode augmentedNode;
1527 String curNodeName;
1528 String returnType;
1529 String method;
1530 StringBuilder methods = new StringBuilder();
1531 String parentName;
1532 YangPluginConfig pluginConfig = ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig();
1533 for (YangAtomicPath nodeId : targets) {
1534 augmentedNode = resolvedAugmentsForManager.get(nodeId).getResolveNodeInPath().get(nodeId);
1535 if (((JavaFileInfoContainer) augmentedNode).getJavaFileInfo().getJavaName() != null) {
1536 curNodeName = ((JavaFileInfoContainer) augmentedNode).getJavaFileInfo().getJavaName();
1537 } else {
1538 curNodeName = getCapitalCase(getCamelCase(augmentedNode.getName(), pluginConfig
1539 .getConflictResolver()));
1540 }
1541 returnType = getAugmentedClassNameForDataMethods(augmentedNode, parent);
1542 parentName = getParentNodeNameForDataMethods(augmentedNode.getParent(), pluginConfig);
1543 method = getOverRideString() + getGetter(returnType, AUGMENTED
1544 + parentName + getCapitalCase(curNodeName),
1545 GENERATE_SERVICE_AND_MANAGER) + NEW_LINE;
1546 methods.append(method);
1547
1548 method = getOverRideString() + getSetter(parentName, getSmallCase(AUGMENTED) +
1549 getCapitalCase(parentName) + getCapitalCase(curNodeName),
1550 returnType,
1551 GENERATE_SERVICE_AND_MANAGER)
1552 + NEW_LINE;
1553 methods.append(method);
1554 }
1555 return methods.toString();
1556 }
1557
Bharat saraswal870c56f2016-02-20 21:57:16 +05301558}