blob: a5fc104e33ad22bcaaff9625663a991eab8c048d [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
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053022import org.onosproject.yangutils.datamodel.YangType;
janani be18b5342016-07-13 21:06:41 +053023import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053024import org.onosproject.yangutils.translator.exception.TranslatorException;
Vinod Kumar S38046502016-03-23 15:30:27 +053025import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053026import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053027import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
Bharat saraswale2d51d62016-03-23 19:40:35 +053028
Bharat saraswal33dfa012016-05-17 19:59:16 +053029import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053030import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
Bharat saraswal33dfa012016-05-17 19:59:16 +053031import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE;
32import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE_ANNOTATION;
Bharat saraswale2d51d62016-03-23 19:40:35 +053033import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
34import static org.onosproject.yangutils.utils.UtilConstants.AND;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053035import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTATION;
36import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053037import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +053038import static org.onosproject.yangutils.utils.UtilConstants.BIG_DECIMAL;
Bharat saraswale2d51d62016-03-23 19:40:35 +053039import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053040import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053041import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
42import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053043import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053044import static org.onosproject.yangutils.utils.UtilConstants.BYTE_WRAPPER;
Bharat saraswalc0e04842016-05-12 13:16:57 +053045import static org.onosproject.yangutils.utils.UtilConstants.CASE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053046import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +053047import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053048import static org.onosproject.yangutils.utils.UtilConstants.CLEAR;
Bharat saraswale2d51d62016-03-23 19:40:35 +053049import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
50import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
Bharat saraswalc0e04842016-05-12 13:16:57 +053051import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
Bharat saraswale2d51d62016-03-23 19:40:35 +053052import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
Bharat saraswal33dfa012016-05-17 19:59:16 +053053import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE;
54import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE_ANNOTATION;
Bharat saraswalc0e04842016-05-12 13:16:57 +053055import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
Bharat saraswale2d51d62016-03-23 19:40:35 +053056import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
57import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +053058import static org.onosproject.yangutils.utils.UtilConstants.DOUBLE;
Bharat saraswale2d51d62016-03-23 19:40:35 +053059import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
60import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
61import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
62import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053063import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
64import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
Bharat saraswale2d51d62016-03-23 19:40:35 +053065import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
66import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053067import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
68import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +053069import static org.onosproject.yangutils.utils.UtilConstants.GET_BYTES;
Bharat saraswale2d51d62016-03-23 19:40:35 +053070import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
71import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
72import static org.onosproject.yangutils.utils.UtilConstants.HASH;
73import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
74import static org.onosproject.yangutils.utils.UtilConstants.IF;
75import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
76import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
77import static org.onosproject.yangutils.utils.UtilConstants.INT;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053078import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053079import static org.onosproject.yangutils.utils.UtilConstants.LIST;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053080import static org.onosproject.yangutils.utils.UtilConstants.LONG;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053081import static org.onosproject.yangutils.utils.UtilConstants.LONG_WRAPPER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053082import static org.onosproject.yangutils.utils.UtilConstants.NEW;
83import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053084import static org.onosproject.yangutils.utils.UtilConstants.NULL;
Bharat saraswale2d51d62016-03-23 19:40:35 +053085import static org.onosproject.yangutils.utils.UtilConstants.OBJ;
86import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
87import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
88import static org.onosproject.yangutils.utils.UtilConstants.OF;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053089import static org.onosproject.yangutils.utils.UtilConstants.OMIT_NULL_VALUE_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +053090import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
91import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
92import static org.onosproject.yangutils.utils.UtilConstants.OTHER;
93import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053094import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BOOLEAN;
95import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BYTE;
96import static org.onosproject.yangutils.utils.UtilConstants.PARSE_INT;
97import static org.onosproject.yangutils.utils.UtilConstants.PARSE_LONG;
98import static org.onosproject.yangutils.utils.UtilConstants.PARSE_SHORT;
Bharat saraswale2d51d62016-03-23 19:40:35 +053099import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
100import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
101import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
102import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530103import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530104import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
105import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530106import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530107import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530108import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
109import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530110import static org.onosproject.yangutils.utils.UtilConstants.STARTED_LOG_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530111import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530112import static org.onosproject.yangutils.utils.UtilConstants.STOPPED_LOG_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530113import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
114import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530115import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530116import static org.onosproject.yangutils.utils.UtilConstants.THIS;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530117import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530118import static org.onosproject.yangutils.utils.UtilConstants.TO;
119import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530120import static org.onosproject.yangutils.utils.UtilConstants.TRY;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530121import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
122import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
123import static org.onosproject.yangutils.utils.UtilConstants.VOID;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530124import static org.onosproject.yangutils.utils.UtilConstants.YANG_UTILS_TODO;
janani be18b5342016-07-13 21:06:41 +0530125import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530126import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
127import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
128import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530129import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.FROM_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530130import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530131import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.MANAGER_SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530132import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530133import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530134import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530135import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
136import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
137import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530138import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +0530139import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BINARY;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530140
141/**
Bharat saraswald9822e92016-04-05 15:13:44 +0530142 * Represents generator for methods of generated files based on the file type.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530143 */
144public final class MethodsGenerator {
145
Bharat saraswal870c56f2016-02-20 21:57:16 +0530146 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530147 * Creates an instance of method generator.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530148 */
149 private MethodsGenerator() {
150 }
151
152 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530153 * Returns the methods strings for builder interface.
154 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530155 * @param name attribute name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530156 * @param pluginConfig plugin configurations
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530157 * @return method string for builder interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530158 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530159 public static String parseBuilderInterfaceBuildMethodString(String name, YangPluginConfig pluginConfig) {
160 return getJavaDoc(BUILD_METHOD, name, false, pluginConfig) + getBuildForInterface(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530161 }
162
163 /**
164 * Returns getter string.
165 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530166 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530167 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530168 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530169 * @return getter string
170 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530171 public static String getGetterString(JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530172 YangPluginConfig pluginConfig) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530173
Vinod Kumar S38046502016-03-23 15:30:27 +0530174 String returnType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530175 String attributeName = attr.getAttributeName();
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530176
Bharat saraswal33dfa012016-05-17 19:59:16 +0530177 return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr(), pluginConfig)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530178 + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530179 }
180
181 /**
182 * Returns setter string.
183 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530184 * @param attr attribute info
185 * @param className java class name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530186 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530187 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530188 * @return setter string
189 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530190 public static String getSetterString(JavaAttributeInfo attr, String className, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530191 YangPluginConfig pluginConfig) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530192
Vinod Kumar S38046502016-03-23 15:30:27 +0530193 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530194 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530195 JavaDocGen.JavaDocType type;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530196 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530197 type = MANAGER_SETTER_METHOD;
198 } else {
199 type = SETTER_METHOD;
200 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530201
Bharat saraswal33dfa012016-05-17 19:59:16 +0530202 return getJavaDoc(type, attributeName, attr.isListAttr(), pluginConfig)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530203 + getSetterForInterface(attributeName, attrType, className, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530204 }
205
206 /**
207 * Returns constructor method string.
208 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530209 * @param name class name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530210 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530211 * @return constructor string
212 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530213 public static String getConstructorString(String name, YangPluginConfig pluginConfig) {
214 return getJavaDoc(CONSTRUCTOR, name, false, pluginConfig);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530215 }
216
217 /**
218 * Returns default constructor method string.
219 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530220 * @param name class name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530221 * @param modifierType modifier type
Bharat saraswal33dfa012016-05-17 19:59:16 +0530222 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530223 * @return default constructor string
224 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530225 public static String getDefaultConstructorString(String name, String modifierType,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530226 YangPluginConfig pluginConfig) {
Bharat saraswal33dfa012016-05-17 19:59:16 +0530227 return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false, pluginConfig)
228 + getDefaultConstructor(name, modifierType)
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530229 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530230 }
231
232 /**
233 * Returns check not null string.
234 *
235 * @param name attribute name
236 * @return check not null string
237 */
238 public static String getCheckNotNull(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530239 return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING + OPEN_PARENTHESIS + name + COMMA + SPACE + name
240 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530241 }
242
243 /**
244 * Returns build method string.
245 *
246 * @param name class name
247 * @return build string
248 */
249 public static String getBuildString(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530250 return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530251 }
252
253 /**
254 * Returns the getter method strings for class file.
255 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530256 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530257 * @param generatedJavaFiles for the type of java file being generated
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530258 * @return getter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530259 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530260 public static String getGetterForClass(JavaAttributeInfo attr, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530261
Vinod Kumar S38046502016-03-23 15:30:27 +0530262 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530263 String attributeName = attr.getAttributeName();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530264
265 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530266 return getGetter(attrQuaifiedType, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530267 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530268 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530269 return getGetter(listAttr, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530270 }
271
272 /**
273 * Returns getter for attribute.
274 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530275 * @param type return type
276 * @param name attribute name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530277 * @param generatedJavaFiles generated java files
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530278 * @return getter for attribute
279 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530280 public static String getGetter(String type, String name, int generatedJavaFiles) {
Bharat saraswalcad0e652016-05-26 23:48:38 +0530281 String ret = parseTypeForReturnValue(type);
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530282 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
janani b4a6711a2016-05-17 13:12:22 +0530283 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCapitalCase(name)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530284 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
285 EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION +
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530286 RETURN + SPACE + ret + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530287 } else {
288 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + name
289 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
290 EIGHT_SPACE_INDENTATION + RETURN + SPACE + name + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
291 + CLOSE_CURLY_BRACKET;
292 }
293
Bharat saraswal870c56f2016-02-20 21:57:16 +0530294 }
295
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530296 /*Provides string to return for type.*/
Bharat saraswalcad0e652016-05-26 23:48:38 +0530297 private static String parseTypeForReturnValue(String type) {
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530298 switch (type) {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530299 case BYTE:
300 case INT:
301 case SHORT:
302 case LONG:
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +0530303 case DOUBLE:
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530304 return "0";
305 case BOOLEAN_DATA_TYPE:
306 return FALSE;
307 default:
308 return null;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530309 }
310 }
311
Bharat saraswal870c56f2016-02-20 21:57:16 +0530312 /**
313 * Returns the setter method strings for class file.
314 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530315 * @param attr attribute info
316 * @param className name of the class
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530317 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530318 * @return setter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530319 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530320 public static String getSetterForClass(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530321
Vinod Kumar S38046502016-03-23 15:30:27 +0530322 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530323 String attributeName = attr.getAttributeName();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530324 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530325 return getSetter(className, attributeName, attrQuaifiedType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530326 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530327 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530328 return getSetter(className, attributeName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530329 }
330
331 /**
332 * Returns setter for attribute.
333 *
334 * @param className class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530335 * @param name attribute name
336 * @param type return type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530337 * @return setter for attribute
338 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530339 private static String getSetter(String className, String name, String type, int generatedJavaFiles) {
340 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
341 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX
janani b4a6711a2016-05-17 13:12:22 +0530342 + getCapitalCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530343 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO +
344 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530345 } else if (generatedJavaFiles == GENERATE_EVENT_SUBJECT_CLASS) {
346 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + name + OPEN_PARENTHESIS + type + SPACE
347 + name + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
348 + THIS + PERIOD + name + SPACE + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE
349 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530350 } else {
351 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE +
352 name + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
Bharat saraswal33dfa012016-05-17 19:59:16 +0530353 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE
354 + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE
355 + THIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530356 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530357 }
358
359 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530360 * Returns the setter method strings for class file.
361 *
362 * @param attr attribute info
363 * @return setter method for class
364 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530365 public static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530366
Vinod Kumar S38046502016-03-23 15:30:27 +0530367 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530368 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530369 return getTypeDefSetter(attrQuaifiedType, attributeName);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530370 }
371
372 /**
373 * Returns type def's setter for attribute.
374 *
375 * @param type data type
376 * @param name attribute name
377 * @return setter for type def's attribute
378 */
379 private static String getTypeDefSetter(String type, String name) {
janani b4a6711a2016-05-17 13:12:22 +0530380 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(name)
Bharat saraswale2d51d62016-03-23 19:40:35 +0530381 + OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
382 + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE
383 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530384 }
385
386 /**
387 * Returns override string.
388 *
389 * @return override string
390 */
391 public static String getOverRideString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530392 return NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530393 }
394
395 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530396 * Returns the getter method strings for interface file.
397 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530398 * @param yangName name of the attribute
399 * @param returnType return type of attribute
400 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530401 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530402 * @return getter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530403 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530404 public static String getGetterForInterface(String yangName, String returnType, boolean isList,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530405 int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530406
407 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530408 return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530409 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530410 String listAttr = getListString() + returnType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530411 return getGetterInterfaceString(listAttr, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530412 }
413
414 /**
415 * Returns getter for attribute in interface.
416 *
417 * @param returnType return type
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530418 * @param yangName attribute name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530419 * @return getter for interface
420 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530421 private static String getGetterInterfaceString(String returnType, String yangName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530422 int generatedJavaFiles) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530423 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
janani b4a6711a2016-05-17 13:12:22 +0530424 return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCapitalCase(yangName)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530425 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
426 } else {
427 return FOUR_SPACE_INDENTATION + returnType + SPACE + yangName
428 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
429 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530430 }
431
432 /**
433 * Returns the setter method strings for interface file.
434 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530435 * @param attrName name of the attribute
436 * @param attrType return type of attribute
437 * @param className name of the java class being generated
438 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530439 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530440 * @return setter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530441 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530442 public static String getSetterForInterface(String attrName, String attrType, String className,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530443 boolean isList, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530444
445 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530446 return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530447 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530448 String listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530449 return getSetterInterfaceString(className, attrName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530450 }
451
452 /**
453 * Returns setter string for interface.
454 *
455 * @param className class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530456 * @param attrName attribute name
457 * @param attrType attribute type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530458 * @return setter string
459 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530460 private static String getSetterInterfaceString(String className, String attrName, String attrType,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530461 int generatedJavaFiles) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530462 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
463
janani b4a6711a2016-05-17 13:12:22 +0530464 return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(attrName)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530465 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
466 } else {
467 return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + attrName
468 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
469 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530470 }
471
472 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530473 * Returns list string.
474 *
475 * @return list string
476 */
477 private static String getListString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530478 return LIST + DIAMOND_OPEN_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530479 }
480
481 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530482 * Returns return type for attribute.
483 *
484 * @param attr attribute info
485 * @return return type
486 */
487 private static String getReturnType(JavaAttributeInfo attr) {
488
Bharat saraswale2d51d62016-03-23 19:40:35 +0530489 String returnType = EMPTY_STRING;
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530490 if (attr.isQualifiedName() && attr.getImportInfo().getPkgInfo() != null) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530491 returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
Vinod Kumar S38046502016-03-23 15:30:27 +0530492 }
493 returnType = returnType + attr.getImportInfo().getClassInfo();
494 return returnType;
495 }
496
497 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530498 * Returns the build method strings for interface file.
499 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530500 * @param yangName name of the interface
501 * @return build method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530502 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530503 public static String getBuildForInterface(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530504 return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
505 + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530506 }
507
508 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530509 * Returns constructor string for impl class.
510 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530511 * @param yangName class name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530512 * @param pluginConfig plugin configurations
Vinod Kumar S38046502016-03-23 15:30:27 +0530513 * @return constructor string
514 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530515 public static String getConstructorStart(String yangName, YangPluginConfig pluginConfig) {
Vinod Kumar S38046502016-03-23 15:30:27 +0530516
Bharat saraswal33dfa012016-05-17 19:59:16 +0530517 String javadoc = getConstructorString(yangName, pluginConfig);
518 String constructor =
519 FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + IMPL + OPEN_PARENTHESIS + yangName
520 + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT + CLOSE_PARENTHESIS + SPACE
521 + OPEN_CURLY_BRACKET
522 + NEW_LINE;
Vinod Kumar S38046502016-03-23 15:30:27 +0530523 return javadoc + constructor;
524 }
525
526 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530527 * Returns the constructor strings for class file.
528 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530529 * @param yangName name of the class
530 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530531 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530532 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530533 * @return constructor for class
534 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530535 public static String getConstructor(String yangName, JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530536 YangPluginConfig pluginConfig) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530537
janani b4a6711a2016-05-17 13:12:22 +0530538 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530539 String constructor;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530540
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530541 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
Bharat saraswal33dfa012016-05-17 19:59:16 +0530542 constructor =
543 EIGHT_SPACE_INDENTATION + THIS + PERIOD
544 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
545 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
546 + getCapitalCase(getCamelCase(attributeName, pluginConfig.getConflictResolver()))
547 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530548 } else {
Bharat saraswal33dfa012016-05-17 19:59:16 +0530549 constructor =
550 EIGHT_SPACE_INDENTATION + THIS + PERIOD
551 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
552 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD
553 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) +
554 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530555 }
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530556 return constructor;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530557 }
558
559 /**
Gaurav Agrawal56527662016-04-20 15:49:17 +0530560 * Returns the rpc strings for service interface.
561 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530562 * @param rpcName name of the rpc
563 * @param inputName name of input
564 * @param outputName name of output
Bharat saraswal33dfa012016-05-17 19:59:16 +0530565 * @param pluginConfig plugin configurations
Gaurav Agrawal56527662016-04-20 15:49:17 +0530566 * @return rpc method string
567 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530568 public static String getRpcServiceMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530569 YangPluginConfig pluginConfig) {
Gaurav Agrawal56527662016-04-20 15:49:17 +0530570
Bharat saraswal33dfa012016-05-17 19:59:16 +0530571 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswalcad0e652016-05-26 23:48:38 +0530572 if (!inputName.equals(EMPTY_STRING)) {
573 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530574 }
Bharat saraswalcad0e652016-05-26 23:48:38 +0530575 return FOUR_SPACE_INDENTATION + outputName + SPACE + rpcName + OPEN_PARENTHESIS + inputName
576 + CLOSE_PARENTHESIS + SEMI_COLAN;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530577 }
578
579 /**
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530580 * Returns the rpc strings for manager impl.
581 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530582 * @param rpcName name of the rpc
583 * @param inputName name of input
584 * @param outputName name of output
Bharat saraswal33dfa012016-05-17 19:59:16 +0530585 * @param pluginConfig plugin configurations
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530586 * @return rpc method string
587 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530588 public static String getRpcManagerMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530589 YangPluginConfig pluginConfig) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530590
Bharat saraswal33dfa012016-05-17 19:59:16 +0530591 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswalcad0e652016-05-26 23:48:38 +0530592 if (!inputName.equals(EMPTY_STRING)) {
593 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530594 }
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530595
Bharat saraswalcad0e652016-05-26 23:48:38 +0530596 String method =
597 getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName
598 + OPEN_PARENTHESIS + inputName + CLOSE_PARENTHESIS + SPACE
599 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530600 if (!outputName.contentEquals(VOID)) {
Bharat saraswalcad0e652016-05-26 23:48:38 +0530601 method += EIGHT_SPACE_INDENTATION + RETURN + SPACE + parseTypeForReturnValue(outputName) + SEMI_COLAN
602 + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530603 }
604 method += FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
605
606 return method;
607 }
608
609 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530610 * Returns the build method strings for class file.
611 *
612 * @param yangName class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530613 * @return build method string for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530614 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530615 public static String getBuild(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530616 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
617 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE
618 + yangName + IMPL + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
619 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530620 }
621
622 /**
623 * Returns the Default constructor strings for class file.
624 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530625 * @param name name of the class
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530626 * @param modifierType modifier type for default constructor
Bharat saraswal870c56f2016-02-20 21:57:16 +0530627 * @return Default constructor for class
628 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530629 private static String getDefaultConstructor(String name, String modifierType) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530630 return FOUR_SPACE_INDENTATION + modifierType + SPACE + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
631 + OPEN_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530632 }
633
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530634 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530635 * Returns to string method's open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530636 *
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530637 * @return string method's open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530638 */
639 public static String getToStringMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530640 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STRING_DATA_TYPE + SPACE + TO
641 + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
642 + EIGHT_SPACE_INDENTATION + RETURN + GOOGLE_MORE_OBJECT_METHOD_STRING + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530643 }
644
645 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530646 * Returns omit null value string.
647 *
648 * @return omit null value string
649 */
650 public static String getOmitNullValueString() {
651 return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING + NEW_LINE;
652 }
653
654 /**
655 * Returns to string method's close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530656 *
657 * @return to string method close string
658 */
659 public static String getToStringMethodClose() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530660 return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
661 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530662 }
663
664 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530665 * Returns to string method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530666 *
667 * @param attr attribute info
668 * @return to string method
669 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530670 public static String getToStringMethod(JavaAttributeInfo attr) {
671
janani b4a6711a2016-05-17 13:12:22 +0530672 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530673 return TWELVE_SPACE_INDENTATION + PERIOD + ADD_STRING + OPEN_PARENTHESIS + QUOTES + attributeName + QUOTES
674 + COMMA + SPACE + attributeName + CLOSE_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530675 }
676
677 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530678 * Returns from string method's open string.
679 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530680 * @param className name of the class
Bharat saraswal33dfa012016-05-17 19:59:16 +0530681 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530682 * @return from string method's open string
683 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530684 public static String getFromStringMethodSignature(String className, YangPluginConfig pluginConfig) {
685 return getJavaDoc(FROM_METHOD, className, false, pluginConfig) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
686 + STATIC + SPACE + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS
687 + STRING_DATA_TYPE + SPACE + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE
688 + OPEN_CURLY_BRACKET + NEW_LINE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530689 }
690
691 /**
692 * Return from string method's close string.
693 *
694 * @return from string method's close string
695 */
696 public static String getFromStringMethodClose() {
697 return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
698 CLOSE_CURLY_BRACKET + NEW_LINE;
699 }
700
701 /**
702 * Return from string method's body string.
703 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530704 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530705 * @param fromStringAttributeInfo attribute info for the from string
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530706 * wrapper type
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530707 * @return from string method's body string
708 */
709 public static String getFromStringMethod(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530710 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530711
712 return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
713 + getParsedSubString(attr, fromStringAttributeInfo) + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
714 + getReturnOfSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION + getCatchSubString()
715 + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
716 }
717
718 /**
719 * Returns sub string with try statement for union's from string method.
720 *
721 * @return sub string with try statement for union's from string method
722 */
723 public static String getTrySubString() {
724 return TRY + SPACE + OPEN_CURLY_BRACKET;
725 }
726
727 /**
728 * Returns sub string with return statement for union's from string method.
729 *
730 * @return sub string with return statement for union's from string method
731 */
732 public static String getReturnOfSubString() {
733 return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL + CLOSE_PARENTHESIS + SEMI_COLAN;
734 }
735
736 /**
737 * Returns sub string with catch statement for union's from string method.
738 *
739 * @return sub string with catch statement for union's from string method
740 */
741 public static String getCatchSubString() {
742 return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS + EXCEPTION + SPACE + EXCEPTION_VAR
743 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
744 }
745
746 /**
747 * Returns sub string with parsed statement for union's from string method.
748 *
749 * @param attr attribute info
750 * @return sub string with parsed statement for union's from string method
751 */
752 private static String getParsedSubString(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530753 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530754
755 String targetDataType = getReturnType(attr);
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +0530756 if (fromStringAttributeInfo.getAttributeType().getDataType() == BINARY) {
757 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
758 + PERIOD + GET_BYTES + OPEN_PARENTHESIS + CLOSE_PARENTHESIS;
759 } else {
760 String parseFromStringMethod = getParseFromStringMethod(targetDataType,
761 fromStringAttributeInfo.getAttributeType());
762 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + parseFromStringMethod
763 + OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS;
764 }
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530765 }
766
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530767 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530768 * Returns hash code method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530769 *
Bharat saraswald9822e92016-04-05 15:13:44 +0530770 * @return hash code method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530771 */
772 public static String getHashCodeMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530773 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + INT + SPACE + HASH_CODE_STRING
774 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
775 + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530776 }
777
778 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530779 * Returns hash code methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530780 *
781 * @param hashcodeString hash code string
782 * @return to hash code method close string
783 */
784 public static String getHashCodeMethodClose(String hashcodeString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530785 hashcodeString = trimAtLast(hashcodeString, COMMA);
786 hashcodeString = trimAtLast(hashcodeString, SPACE);
787 return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
788 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530789 }
790
791 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530792 * Returns hash code method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530793 *
794 * @param attr attribute info
795 * @return hash code method
796 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530797 public static String getHashCodeMethod(JavaAttributeInfo attr) {
janani b4a6711a2016-05-17 13:12:22 +0530798 return attr.getAttributeName() + COMMA + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530799 }
800
801 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530802 * Returns equals method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530803 *
804 * @param className class name
Bharat saraswald9822e92016-04-05 15:13:44 +0530805 * @return equals method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530806 */
807 public static String getEqualsMethodOpen(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530808 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE + EQUALS_STRING
809 + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + OBJ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
810 + NEW_LINE + getEqualsMethodsCommonIfCondition() + getEqualsMethodsSpecificIfCondition(className);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530811 }
812
813 /**
814 * Returns equal methods if condition string.
815 *
816 * @return if condition string
817 */
818 private static String getEqualsMethodsCommonIfCondition() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530819 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + THIS + SPACE + EQUAL + EQUAL + SPACE + OBJ
820 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + SPACE
821 + TRUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530822 }
823
824 /**
825 * Returns if condition for specific class object in equals method.
826 *
827 * @param className class name
828 * @return if condition string
829 */
830 private static String getEqualsMethodsSpecificIfCondition(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530831 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + OBJ + INSTANCE_OF + className
832 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + className
833 + SPACE + OTHER + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS + className + CLOSE_PARENTHESIS + SPACE
834 + OBJ + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530835 }
836
837 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530838 * Returns equals methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530839 *
840 * @param equalMethodString equal method string
Bharat saraswald9822e92016-04-05 15:13:44 +0530841 * @return equals method close string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530842 */
843 public static String getEqualsMethodClose(String equalMethodString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530844 equalMethodString = trimAtLast(equalMethodString, AND);
845 equalMethodString = trimAtLast(equalMethodString, AND);
846 equalMethodString = trimAtLast(equalMethodString, SPACE);
847 equalMethodString = trimAtLast(equalMethodString, NEW_LINE) + SEMI_COLAN + NEW_LINE;
848 return equalMethodString + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
849 + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
850 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530851 }
852
853 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530854 * Returns equals method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530855 *
856 * @param attr attribute info
857 * @return equals method
858 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530859 public static String getEqualsMethod(JavaAttributeInfo attr) {
860
janani b4a6711a2016-05-17 13:12:22 +0530861 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530862 return SIXTEEN_SPACE_INDENTATION + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS
863 + attributeName + COMMA + SPACE + OTHER + PERIOD + attributeName + CLOSE_PARENTHESIS + SPACE + AND
864 + AND;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530865 }
866
867 /**
868 * Returns of method string for class.
869 *
870 * @param name class name
871 * @param attr attribute info
872 * @return of method string
873 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530874 public static String getOfMethod(String name, JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530875
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530876 String attrQualifiedType = getReturnType(attr);
877
Bharat saraswale2d51d62016-03-23 19:40:35 +0530878 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name + SPACE + OF + OPEN_PARENTHESIS
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530879 + attrQualifiedType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Bharat saraswale2d51d62016-03-23 19:40:35 +0530880 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name + OPEN_PARENTHESIS + VALUE
881 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530882 }
883
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530884 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530885 * Returns of method's string and java doc for special type.
886 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530887 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530888 * @param generatedJavaClassName class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530889 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530890 * @return of method's string and java doc for special type
891 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530892 public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530893 YangPluginConfig pluginConfig) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530894
895 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530896 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530897
Bharat saraswal33dfa012016-05-17 19:59:16 +0530898 return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530899 + getOfMethodString(attrType, generatedJavaClassName);
900 }
901
902 /**
903 * Returns of method's string.
904 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530905 * @param type data type
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530906 * @param className class name
907 * @return of method's string
908 */
909 private static String getOfMethodString(String type, String className) {
910
911 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + className + SPACE + OF + OPEN_PARENTHESIS
912 + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
913 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + className + OPEN_PARENTHESIS + VALUE
914 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
915 }
916
917 /**
918 * Returns string and java doc for constructor of type class.
919 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530920 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530921 * @param generatedJavaClassName class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530922 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530923 * @return string and java doc for constructor of type class
924 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530925 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530926 String generatedJavaClassName,
927 YangPluginConfig pluginConfig) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530928
929 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530930 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530931
Bharat saraswal33dfa012016-05-17 19:59:16 +0530932 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530933 + getTypeConstructorString(attrType, attrName, generatedJavaClassName);
934 }
935
936 /**
937 * Returns type constructor string.
938 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530939 * @param type data type
940 * @param name attribute name
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530941 * @param className class name
942 * @return type constructor string
943 */
944 private static String getTypeConstructorString(String type, String name, String className) {
945
946 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
947 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
948 + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
949 + CLOSE_CURLY_BRACKET;
950 }
951
952 /**
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530953 * Returns implementation of add augmentation method of AugmentationHolder class.
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530954 *
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530955 * @return implementation of add augmentation method of AugmentationHolder class
956 */
957 public static String getAddAugmentInfoMethodImpl() {
958 String method = FOUR_SPACE_INDENTATION;
959 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + ADD_STRING
960 + AUGMENTATION + OPEN_PARENTHESIS + AUGMENTED_INFO + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
961 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST
962 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + ADD_STRING + OPEN_PARENTHESIS + VALUE
963 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
964
965 return method;
966 }
967
968 /**
969 * Returns implementation of get augment info list method of AugmentationHolder class.
970 *
971 * @return implementation of get augment info list method of AugmentationHolder class
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530972 */
973 public static String getAugmentInfoListImpl() {
974
975 String method = FOUR_SPACE_INDENTATION;
976 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + LIST + DIAMOND_OPEN_BRACKET
977 + AUGMENTED_INFO + DIAMOND_CLOSE_BRACKET + SPACE + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST
978 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
979 + RETURN + SPACE + getSmallCase(AUGMENTED_INFO) + LIST + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
980 + CLOSE_CURLY_BRACKET;
981 return method;
982 }
983
984 /**
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530985 * Returns implementation of remove augmentation method of AugmentationHolder class.
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530986 *
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530987 * @return implementation of remove augmentation method of AugmentationHolder class
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530988 */
989 public static String getRemoveAugmentationImpl() {
990 String method = FOUR_SPACE_INDENTATION;
991 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + "remove"
992 + AUGMENTATION + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
993 + EIGHT_SPACE_INDENTATION + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST + OPEN_PARENTHESIS
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530994 + CLOSE_PARENTHESIS + PERIOD + CLEAR + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530995 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
996 return method;
997 }
998
Bharat saraswald72411a2016-04-19 01:00:16 +0530999 /**
1000 * Returns enum's constructor.
1001 *
1002 * @param className enum's class name
1003 * @return enum's constructor
1004 */
1005 public static String getEnumsConstrcutor(String className) {
1006 return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
1007 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
1008 + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1009 }
Bharat saraswalc0e04842016-05-12 13:16:57 +05301010
1011 /**
1012 * Returns of method for enum class.
1013 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301014 * @param className class name
1015 * @param attr java attribute
1016 * @param enumMap enum's sets map
1017 * @param enumList enum's sets list
Bharat saraswal33dfa012016-05-17 19:59:16 +05301018 * @param pluginConfig plugin configurations
Bharat saraswalc0e04842016-05-12 13:16:57 +05301019 * @return of method
1020 */
1021 public static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301022 Map<String, Integer> enumMap, List<String> enumList,
1023 YangPluginConfig pluginConfig) {
Bharat saraswalc0e04842016-05-12 13:16:57 +05301024 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +05301025 String attrName = attr.getAttributeName();
Bharat saraswalc0e04842016-05-12 13:16:57 +05301026
janani b4a6711a2016-05-17 13:12:22 +05301027 String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + getCapitalCase(className) + SPACE
1028 + OF + OPEN_PARENTHESIS
Bharat saraswalc0e04842016-05-12 13:16:57 +05301029 + attrType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1030 + EIGHT_SPACE_INDENTATION + SWITCH + SPACE + OPEN_PARENTHESIS + VALUE
1031 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1032 int value = 0;
1033 for (String str : enumList) {
1034
1035 value = enumMap.get(str);
1036 method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value + COLAN + NEW_LINE
janani b4a6711a2016-05-17 13:12:22 +05301037 + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + getCapitalCase(className) + PERIOD
Bharat saraswalc0e04842016-05-12 13:16:57 +05301038 + str + SEMI_COLAN + NEW_LINE;
1039 }
1040 method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLAN + NEW_LINE + SIXTEEN_SPACE_INDENTATION
1041 + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1042 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1043
Bharat saraswal33dfa012016-05-17 19:59:16 +05301044 return getJavaDoc(OF_METHOD, getCapitalCase(className) + " for type " + attrName, false, pluginConfig)
1045 + method;
Bharat saraswalc0e04842016-05-12 13:16:57 +05301046 }
Bharat saraswal33dfa012016-05-17 19:59:16 +05301047
1048 /**
1049 * Returns activate method string.
1050 *
1051 * @return activate method string
1052 */
1053 public static String addActivateMethod() {
1054 return FOUR_SPACE_INDENTATION + ACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
1055 + PUBLIC + SPACE + VOID + SPACE + ACTIVATE + OPEN_PARENTHESIS
1056 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
1057 + NEW_LINE + EIGHT_SPACE_INDENTATION
1058 + YANG_UTILS_TODO
1059 + NEW_LINE + EIGHT_SPACE_INDENTATION
1060 + STARTED_LOG_INFO + FOUR_SPACE_INDENTATION
1061 + CLOSE_CURLY_BRACKET + NEW_LINE;
1062 }
1063
1064 /**
1065 * Returns deactivate method string.
1066 *
1067 * @return deactivate method string
1068 */
1069 public static String addDeActivateMethod() {
1070 return NEW_LINE + FOUR_SPACE_INDENTATION + DEACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
1071 + PUBLIC + SPACE + VOID + SPACE + DEACTIVATE + OPEN_PARENTHESIS
1072 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
1073 + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION
1074 + STOPPED_LOG_INFO + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1075 }
1076
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301077 /**
1078 * Returns from string method parsed string.
1079 *
1080 * @param targetDataType target data type
1081 * @param yangType YANG type
1082 * @return parsed string
1083 */
1084 public static String getParseFromStringMethod(String targetDataType, YangType<?> yangType) {
1085
1086 YangDataTypes type = yangType.getDataType();
1087
1088 switch (type) {
1089 case INT8:
1090 return BYTE_WRAPPER + PERIOD + PARSE_BYTE;
1091 case INT16:
1092 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1093 case INT32:
1094 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1095 case INT64:
1096 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1097 case UINT8:
1098 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1099 case UINT16:
1100 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1101 case UINT32:
1102 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1103 case UINT64:
1104 return NEW + SPACE + BIG_INTEGER;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +05301105 case DECIMAL64:
1106 return NEW + SPACE + BIG_DECIMAL;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301107 case STRING:
1108 return EMPTY_STRING;
1109 case EMPTY:
1110 case BOOLEAN:
1111 return BOOLEAN_WRAPPER + PERIOD + PARSE_BOOLEAN;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301112 case BITS:
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301113 case UNION:
1114 case ENUMERATION:
1115 case DERIVED:
1116 return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
1117 default:
1118 throw new TranslatorException("given data type is not supported.");
1119 }
1120 }
Bharat saraswal870c56f2016-02-20 21:57:16 +05301121}