blob: cde88ed557515d5617e2380fd4d8dea34478f98a [file] [log] [blame]
Bharat saraswal97459962016-02-20 21:57:16 +05301/*
Brian O'Connor0f7908b2016-04-09 01:19:45 -07002 * Copyright 2016-present Open Networking Laboratory
Bharat saraswal97459962016-02-20 21:57:16 +05303 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.onosproject.yangutils.translator.tojava.utils;
18
Bharat saraswal250a7472016-05-12 13:16:57 +053019import java.util.List;
20import java.util.Map;
janani b0e4e8ae2016-07-13 21:06:41 +053021
Gaurav Agrawalbfce9342016-06-15 13:58:01 +053022import org.onosproject.yangutils.datamodel.YangType;
janani b0e4e8ae2016-07-13 21:06:41 +053023import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +053024import org.onosproject.yangutils.translator.exception.TranslatorException;
Vinod Kumar S9f26ae52016-03-23 15:30:27 +053025import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +053026import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +053027import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
Bharat saraswal84366c52016-03-23 19:40:35 +053028
Bharat saraswal715d3fc2016-05-17 19:59:16 +053029import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +053030import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
Bharat saraswal715d3fc2016-05-17 19:59:16 +053031import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE;
32import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE_ANNOTATION;
Bharat saraswal84366c52016-03-23 19:40:35 +053033import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
34import static org.onosproject.yangutils.utils.UtilConstants.AND;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +053035import static org.onosproject.yangutils.utils.UtilConstants.BIG_DECIMAL;
Bharat saraswald14cbe82016-07-14 13:26:18 +053036import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
Bharat saraswal84366c52016-03-23 19:40:35 +053037import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +053038import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
Bharat saraswal84366c52016-03-23 19:40:35 +053039import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
40import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +053041import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +053042import static org.onosproject.yangutils.utils.UtilConstants.BYTE_WRAPPER;
Bharat saraswal250a7472016-05-12 13:16:57 +053043import static org.onosproject.yangutils.utils.UtilConstants.CASE;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +053044import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
Bharat saraswal84366c52016-03-23 19:40:35 +053045import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
46import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
47import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
Bharat saraswal250a7472016-05-12 13:16:57 +053048import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
Bharat saraswal84366c52016-03-23 19:40:35 +053049import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
Bharat saraswal715d3fc2016-05-17 19:59:16 +053050import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE;
51import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE_ANNOTATION;
Bharat saraswal250a7472016-05-12 13:16:57 +053052import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
Bharat saraswal84366c52016-03-23 19:40:35 +053053import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
54import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +053055import static org.onosproject.yangutils.utils.UtilConstants.DOUBLE;
Bharat saraswal84366c52016-03-23 19:40:35 +053056import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
57import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
58import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
59import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +053060import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
61import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
Bharat saraswal84366c52016-03-23 19:40:35 +053062import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
63import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +053064import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
65import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +053066import static org.onosproject.yangutils.utils.UtilConstants.GET_BYTES;
Bharat saraswal84366c52016-03-23 19:40:35 +053067import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
68import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
69import static org.onosproject.yangutils.utils.UtilConstants.HASH;
70import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
71import static org.onosproject.yangutils.utils.UtilConstants.IF;
Bharat saraswal84366c52016-03-23 19:40:35 +053072import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
73import static org.onosproject.yangutils.utils.UtilConstants.INT;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +053074import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
Bharat saraswal84366c52016-03-23 19:40:35 +053075import static org.onosproject.yangutils.utils.UtilConstants.LIST;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +053076import static org.onosproject.yangutils.utils.UtilConstants.LONG;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +053077import static org.onosproject.yangutils.utils.UtilConstants.LONG_WRAPPER;
Bharat saraswal84366c52016-03-23 19:40:35 +053078import static org.onosproject.yangutils.utils.UtilConstants.NEW;
79import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +053080import static org.onosproject.yangutils.utils.UtilConstants.NULL;
Bharat saraswal84366c52016-03-23 19:40:35 +053081import static org.onosproject.yangutils.utils.UtilConstants.OBJ;
82import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
83import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
84import static org.onosproject.yangutils.utils.UtilConstants.OF;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +053085import static org.onosproject.yangutils.utils.UtilConstants.OMIT_NULL_VALUE_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +053086import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
87import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
88import static org.onosproject.yangutils.utils.UtilConstants.OTHER;
89import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +053090import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BOOLEAN;
91import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BYTE;
92import static org.onosproject.yangutils.utils.UtilConstants.PARSE_INT;
93import static org.onosproject.yangutils.utils.UtilConstants.PARSE_LONG;
94import static org.onosproject.yangutils.utils.UtilConstants.PARSE_SHORT;
Bharat saraswal84366c52016-03-23 19:40:35 +053095import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
96import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
97import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
98import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +053099import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
Bharat saraswal84366c52016-03-23 19:40:35 +0530100import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
101import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530102import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530103import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
Bharat saraswal84366c52016-03-23 19:40:35 +0530104import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
105import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530106import static org.onosproject.yangutils.utils.UtilConstants.STARTED_LOG_INFO;
Bharat saraswal84366c52016-03-23 19:40:35 +0530107import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530108import static org.onosproject.yangutils.utils.UtilConstants.STOPPED_LOG_INFO;
Bharat saraswal84366c52016-03-23 19:40:35 +0530109import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
110import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
Bharat saraswal250a7472016-05-12 13:16:57 +0530111import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
Bharat saraswal84366c52016-03-23 19:40:35 +0530112import static org.onosproject.yangutils.utils.UtilConstants.THIS;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530113import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
Bharat saraswal84366c52016-03-23 19:40:35 +0530114import static org.onosproject.yangutils.utils.UtilConstants.TO;
115import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530116import static org.onosproject.yangutils.utils.UtilConstants.TRY;
Bharat saraswal84366c52016-03-23 19:40:35 +0530117import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
118import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
119import static org.onosproject.yangutils.utils.UtilConstants.VOID;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530120import static org.onosproject.yangutils.utils.UtilConstants.YANG_UTILS_TODO;
Bharat saraswal84366c52016-03-23 19:40:35 +0530121import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
122import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
123import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530124import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.FROM_METHOD;
Bharat saraswal84366c52016-03-23 19:40:35 +0530125import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530126import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.MANAGER_SETTER_METHOD;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530127import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
Bharat saraswal84366c52016-03-23 19:40:35 +0530128import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530129import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
Bharat saraswald14cbe82016-07-14 13:26:18 +0530130import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForTypeConstructor;
131import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530132import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
133import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
134import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
Bharat saraswal84366c52016-03-23 19:40:35 +0530135import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +0530136import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BINARY;
Bharat saraswal97459962016-02-20 21:57:16 +0530137
138/**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530139 * Represents generator for methods of generated files based on the file type.
Bharat saraswal97459962016-02-20 21:57:16 +0530140 */
141public final class MethodsGenerator {
142
Bharat saraswal97459962016-02-20 21:57:16 +0530143 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530144 * Creates an instance of method generator.
Bharat saraswal97459962016-02-20 21:57:16 +0530145 */
146 private MethodsGenerator() {
147 }
148
149 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530150 * Returns the methods strings for builder interface.
151 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530152 * @param name attribute name
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530153 * @param pluginConfig plugin configurations
Vinod Kumar S08710982016-03-03 19:55:30 +0530154 * @return method string for builder interface
Bharat saraswal97459962016-02-20 21:57:16 +0530155 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530156 public static String parseBuilderInterfaceBuildMethodString(String name, YangPluginConfig pluginConfig) {
157 return getJavaDoc(BUILD_METHOD, name, false, pluginConfig) + getBuildForInterface(name);
Bharat saraswal97459962016-02-20 21:57:16 +0530158 }
159
160 /**
161 * Returns getter string.
162 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530163 * @param attr attribute info
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530164 * @param generatedJavaFiles generated java files
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530165 * @param pluginConfig plugin configurations
Bharat saraswal97459962016-02-20 21:57:16 +0530166 * @return getter string
167 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530168 public static String getGetterString(JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530169 YangPluginConfig pluginConfig) {
Bharat saraswal97459962016-02-20 21:57:16 +0530170
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530171 String returnType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530172 String attributeName = attr.getAttributeName();
Vinod Kumar S08710982016-03-03 19:55:30 +0530173
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530174 return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr(), pluginConfig)
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530175 + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal97459962016-02-20 21:57:16 +0530176 }
177
178 /**
179 * Returns setter string.
180 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530181 * @param attr attribute info
182 * @param className java class name
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530183 * @param generatedJavaFiles generated java files
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530184 * @param pluginConfig plugin configurations
Bharat saraswal97459962016-02-20 21:57:16 +0530185 * @return setter string
186 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530187 public static String getSetterString(JavaAttributeInfo attr, String className, int generatedJavaFiles,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530188 YangPluginConfig pluginConfig) {
Vinod Kumar S08710982016-03-03 19:55:30 +0530189
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530190 String attrType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530191 String attributeName = attr.getAttributeName();
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530192 JavaDocGen.JavaDocType type;
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530193 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530194 type = MANAGER_SETTER_METHOD;
195 } else {
196 type = SETTER_METHOD;
197 }
Bharat saraswal97459962016-02-20 21:57:16 +0530198
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530199 return getJavaDoc(type, attributeName, attr.isListAttr(), pluginConfig)
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530200 + getSetterForInterface(attributeName, attrType, className, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal97459962016-02-20 21:57:16 +0530201 }
202
203 /**
204 * Returns constructor method string.
205 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530206 * @param name class name
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530207 * @param pluginConfig plugin configurations
Bharat saraswal97459962016-02-20 21:57:16 +0530208 * @return constructor string
209 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530210 public static String getConstructorString(String name, YangPluginConfig pluginConfig) {
211 return getJavaDoc(CONSTRUCTOR, name, false, pluginConfig);
Bharat saraswal97459962016-02-20 21:57:16 +0530212 }
213
214 /**
215 * Returns default constructor method string.
216 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530217 * @param name class name
Bharat saraswal022dae92016-03-04 20:08:09 +0530218 * @param modifierType modifier type
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530219 * @param pluginConfig plugin configurations
Bharat saraswal97459962016-02-20 21:57:16 +0530220 * @return default constructor string
221 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530222 public static String getDefaultConstructorString(String name, String modifierType,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530223 YangPluginConfig pluginConfig) {
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530224 return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false, pluginConfig)
225 + getDefaultConstructor(name, modifierType)
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530226 + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530227 }
228
229 /**
230 * Returns check not null string.
231 *
232 * @param name attribute name
233 * @return check not null string
234 */
235 public static String getCheckNotNull(String name) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530236 return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING + OPEN_PARENTHESIS + name + COMMA + SPACE + name
237 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal97459962016-02-20 21:57:16 +0530238 }
239
240 /**
241 * Returns build method string.
242 *
243 * @param name class name
244 * @return build string
245 */
246 public static String getBuildString(String name) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530247 return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name);
Bharat saraswal97459962016-02-20 21:57:16 +0530248 }
249
250 /**
251 * Returns the getter method strings for class file.
252 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530253 * @param attr attribute info
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530254 * @param generatedJavaFiles for the type of java file being generated
Vinod Kumar S08710982016-03-03 19:55:30 +0530255 * @return getter method for class
Bharat saraswal97459962016-02-20 21:57:16 +0530256 */
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530257 public static String getGetterForClass(JavaAttributeInfo attr, int generatedJavaFiles) {
Bharat saraswal022dae92016-03-04 20:08:09 +0530258
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530259 String attrQuaifiedType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530260 String attributeName = attr.getAttributeName();
Bharat saraswal022dae92016-03-04 20:08:09 +0530261
262 if (!attr.isListAttr()) {
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530263 return getGetter(attrQuaifiedType, attributeName, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530264 }
Bharat saraswal84366c52016-03-23 19:40:35 +0530265 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530266 return getGetter(listAttr, attributeName, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530267 }
268
269 /**
270 * Returns getter for attribute.
271 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530272 * @param type return type
273 * @param name attribute name
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530274 * @param generatedJavaFiles generated java files
Bharat saraswal022dae92016-03-04 20:08:09 +0530275 * @return getter for attribute
276 */
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530277 public static String getGetter(String type, String name, int generatedJavaFiles) {
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530278 String ret = parseTypeForReturnValue(type);
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530279 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
janani b703cfe42016-05-17 13:12:22 +0530280 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCapitalCase(name)
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530281 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
282 EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION +
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530283 RETURN + SPACE + ret + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530284 } else {
285 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + name
286 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
287 EIGHT_SPACE_INDENTATION + RETURN + SPACE + name + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
288 + CLOSE_CURLY_BRACKET;
289 }
290
Bharat saraswal97459962016-02-20 21:57:16 +0530291 }
292
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530293 /*Provides string to return for type.*/
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530294 private static String parseTypeForReturnValue(String type) {
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530295 switch (type) {
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530296 case BYTE:
297 case INT:
298 case SHORT:
299 case LONG:
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +0530300 case DOUBLE:
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530301 return "0";
302 case BOOLEAN_DATA_TYPE:
303 return FALSE;
304 default:
305 return null;
Bharat saraswal4aaab4d2016-05-17 14:19:38 +0530306 }
307 }
308
Bharat saraswal97459962016-02-20 21:57:16 +0530309 /**
310 * Returns the setter method strings for class file.
311 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530312 * @param attr attribute info
313 * @param className name of the class
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530314 * @param generatedJavaFiles generated java files
Vinod Kumar S08710982016-03-03 19:55:30 +0530315 * @return setter method for class
Bharat saraswal97459962016-02-20 21:57:16 +0530316 */
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530317 public static String getSetterForClass(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
Bharat saraswal022dae92016-03-04 20:08:09 +0530318
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530319 String attrQuaifiedType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530320 String attributeName = attr.getAttributeName();
Bharat saraswal022dae92016-03-04 20:08:09 +0530321 if (!attr.isListAttr()) {
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530322 return getSetter(className, attributeName, attrQuaifiedType, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530323 }
Bharat saraswal84366c52016-03-23 19:40:35 +0530324 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530325 return getSetter(className, attributeName, listAttr, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530326 }
327
328 /**
329 * Returns setter for attribute.
330 *
331 * @param className class name
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530332 * @param name attribute name
333 * @param type return type
Bharat saraswal022dae92016-03-04 20:08:09 +0530334 * @return setter for attribute
335 */
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530336 private static String getSetter(String className, String name, String type, int generatedJavaFiles) {
337 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
338 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX
janani b703cfe42016-05-17 13:12:22 +0530339 + getCapitalCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530340 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO +
341 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530342 } else if (generatedJavaFiles == GENERATE_EVENT_SUBJECT_CLASS) {
343 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + name + OPEN_PARENTHESIS + type + SPACE
344 + name + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
345 + THIS + PERIOD + name + SPACE + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE
346 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530347 } else {
348 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE +
349 name + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530350 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE
351 + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE
352 + THIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530353 }
Bharat saraswal97459962016-02-20 21:57:16 +0530354 }
355
356 /**
Bharat saraswal022dae92016-03-04 20:08:09 +0530357 * Returns the setter method strings for class file.
358 *
359 * @param attr attribute info
360 * @return setter method for class
361 */
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530362 public static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
Bharat saraswal022dae92016-03-04 20:08:09 +0530363
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530364 String attrQuaifiedType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530365 String attributeName = attr.getAttributeName();
Bharat saraswal84366c52016-03-23 19:40:35 +0530366 return getTypeDefSetter(attrQuaifiedType, attributeName);
Bharat saraswal022dae92016-03-04 20:08:09 +0530367 }
368
369 /**
370 * Returns type def's setter for attribute.
371 *
372 * @param type data type
373 * @param name attribute name
374 * @return setter for type def's attribute
375 */
376 private static String getTypeDefSetter(String type, String name) {
janani b703cfe42016-05-17 13:12:22 +0530377 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(name)
Bharat saraswal84366c52016-03-23 19:40:35 +0530378 + OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
379 + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE
380 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal022dae92016-03-04 20:08:09 +0530381 }
382
383 /**
384 * Returns override string.
385 *
386 * @return override string
387 */
388 public static String getOverRideString() {
Bharat saraswal84366c52016-03-23 19:40:35 +0530389 return NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530390 }
391
392 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530393 * Returns the getter method strings for interface file.
394 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530395 * @param yangName name of the attribute
396 * @param returnType return type of attribute
397 * @param isList is list attribute
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530398 * @param generatedJavaFiles generated java files
Vinod Kumar S08710982016-03-03 19:55:30 +0530399 * @return getter method for interface
Bharat saraswal97459962016-02-20 21:57:16 +0530400 */
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530401 public static String getGetterForInterface(String yangName, String returnType, boolean isList,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530402 int generatedJavaFiles) {
Bharat saraswal022dae92016-03-04 20:08:09 +0530403
404 if (!isList) {
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530405 return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530406 }
Bharat saraswal84366c52016-03-23 19:40:35 +0530407 String listAttr = getListString() + returnType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530408 return getGetterInterfaceString(listAttr, yangName, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530409 }
410
411 /**
412 * Returns getter for attribute in interface.
413 *
414 * @param returnType return type
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530415 * @param yangName attribute name
Bharat saraswal022dae92016-03-04 20:08:09 +0530416 * @return getter for interface
417 */
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530418 private static String getGetterInterfaceString(String returnType, String yangName,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530419 int generatedJavaFiles) {
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530420 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
janani b703cfe42016-05-17 13:12:22 +0530421 return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCapitalCase(yangName)
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530422 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
423 } else {
424 return FOUR_SPACE_INDENTATION + returnType + SPACE + yangName
425 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
426 }
Bharat saraswal97459962016-02-20 21:57:16 +0530427 }
428
429 /**
430 * Returns the setter method strings for interface file.
431 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530432 * @param attrName name of the attribute
433 * @param attrType return type of attribute
434 * @param className name of the java class being generated
435 * @param isList is list attribute
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530436 * @param generatedJavaFiles generated java files
Vinod Kumar S08710982016-03-03 19:55:30 +0530437 * @return setter method for interface
Bharat saraswal97459962016-02-20 21:57:16 +0530438 */
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530439 public static String getSetterForInterface(String attrName, String attrType, String className,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530440 boolean isList, int generatedJavaFiles) {
Bharat saraswal022dae92016-03-04 20:08:09 +0530441
442 if (!isList) {
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530443 return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530444 }
Bharat saraswal84366c52016-03-23 19:40:35 +0530445 String listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530446 return getSetterInterfaceString(className, attrName, listAttr, generatedJavaFiles);
Bharat saraswal022dae92016-03-04 20:08:09 +0530447 }
448
449 /**
450 * Returns setter string for interface.
451 *
452 * @param className class name
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530453 * @param attrName attribute name
454 * @param attrType attribute type
Bharat saraswal022dae92016-03-04 20:08:09 +0530455 * @return setter string
456 */
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530457 private static String getSetterInterfaceString(String className, String attrName, String attrType,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530458 int generatedJavaFiles) {
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530459 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
460
janani b703cfe42016-05-17 13:12:22 +0530461 return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(attrName)
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530462 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
463 } else {
464 return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + attrName
465 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
466 }
Bharat saraswal97459962016-02-20 21:57:16 +0530467 }
468
469 /**
Bharat saraswal022dae92016-03-04 20:08:09 +0530470 * Returns list string.
471 *
472 * @return list string
473 */
474 private static String getListString() {
Bharat saraswal84366c52016-03-23 19:40:35 +0530475 return LIST + DIAMOND_OPEN_BRACKET;
Bharat saraswal022dae92016-03-04 20:08:09 +0530476 }
477
478 /**
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530479 * Returns return type for attribute.
480 *
481 * @param attr attribute info
482 * @return return type
483 */
484 private static String getReturnType(JavaAttributeInfo attr) {
485
Bharat saraswal84366c52016-03-23 19:40:35 +0530486 String returnType = EMPTY_STRING;
Vidyashree Rama13960652016-04-26 15:06:06 +0530487 if (attr.isQualifiedName() && attr.getImportInfo().getPkgInfo() != null) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530488 returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530489 }
490 returnType = returnType + attr.getImportInfo().getClassInfo();
491 return returnType;
492 }
493
494 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530495 * Returns the build method strings for interface file.
496 *
Vinod Kumar S08710982016-03-03 19:55:30 +0530497 * @param yangName name of the interface
498 * @return build method for interface
Bharat saraswal97459962016-02-20 21:57:16 +0530499 */
Bharat saraswal022dae92016-03-04 20:08:09 +0530500 public static String getBuildForInterface(String yangName) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530501 return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
502 + NEW_LINE;
Bharat saraswal97459962016-02-20 21:57:16 +0530503 }
504
505 /**
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530506 * Returns constructor string for impl class.
507 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530508 * @param yangName class name
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530509 * @param pluginConfig plugin configurations
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530510 * @return constructor string
511 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530512 public static String getConstructorStart(String yangName, YangPluginConfig pluginConfig) {
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530513
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530514 String javadoc = getConstructorString(yangName, pluginConfig);
Bharat saraswald14cbe82016-07-14 13:26:18 +0530515 String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + getCapitalCase(DEFAULT) + yangName +
516 OPEN_PARENTHESIS + yangName + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT
517 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530518 return javadoc + constructor;
519 }
520
521 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530522 * Returns the constructor strings for class file.
523 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530524 * @param attr attribute info
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530525 * @param generatedJavaFiles generated java files
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530526 * @param pluginConfig plugin configurations
Bharat saraswal97459962016-02-20 21:57:16 +0530527 * @return constructor for class
528 */
Bharat saraswald14cbe82016-07-14 13:26:18 +0530529 public static String getConstructor(JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530530 YangPluginConfig pluginConfig) {
Bharat saraswal97459962016-02-20 21:57:16 +0530531
janani b703cfe42016-05-17 13:12:22 +0530532 String attributeName = attr.getAttributeName();
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530533 String constructor;
Bharat saraswal84366c52016-03-23 19:40:35 +0530534
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530535 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
Bharat saraswald14cbe82016-07-14 13:26:18 +0530536 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD
537 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
538 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
539 + getCapitalCase(getCamelCase(attributeName, pluginConfig.getConflictResolver()))
540 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530541 } else {
Bharat saraswald14cbe82016-07-14 13:26:18 +0530542 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD
543 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
544 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD
545 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) +
546 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530547 }
Bharat saraswal022dae92016-03-04 20:08:09 +0530548 return constructor;
Bharat saraswal97459962016-02-20 21:57:16 +0530549 }
550
551 /**
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530552 * Returns the rpc strings for service interface.
553 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530554 * @param rpcName name of the rpc
555 * @param inputName name of input
556 * @param outputName name of output
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530557 * @param pluginConfig plugin configurations
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530558 * @return rpc method string
559 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530560 public static String getRpcServiceMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530561 YangPluginConfig pluginConfig) {
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530562
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530563 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530564 if (!inputName.equals(EMPTY_STRING)) {
565 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswal250a7472016-05-12 13:16:57 +0530566 }
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530567 return FOUR_SPACE_INDENTATION + outputName + SPACE + rpcName + OPEN_PARENTHESIS + inputName
568 + CLOSE_PARENTHESIS + SEMI_COLAN;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530569 }
570
571 /**
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530572 * Returns the rpc strings for manager impl.
573 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530574 * @param rpcName name of the rpc
575 * @param inputName name of input
576 * @param outputName name of output
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530577 * @param pluginConfig plugin configurations
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530578 * @return rpc method string
579 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530580 public static String getRpcManagerMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530581 YangPluginConfig pluginConfig) {
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530582
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530583 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530584 if (!inputName.equals(EMPTY_STRING)) {
585 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswal250a7472016-05-12 13:16:57 +0530586 }
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530587
Bharat saraswald14cbe82016-07-14 13:26:18 +0530588 String method = getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName
589 + OPEN_PARENTHESIS + inputName + CLOSE_PARENTHESIS + SPACE
590 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530591 if (!outputName.contentEquals(VOID)) {
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530592 method += EIGHT_SPACE_INDENTATION + RETURN + SPACE + parseTypeForReturnValue(outputName) + SEMI_COLAN
593 + NEW_LINE;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530594 }
595 method += FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
596
597 return method;
598 }
599
600 /**
Bharat saraswal97459962016-02-20 21:57:16 +0530601 * Returns the build method strings for class file.
602 *
603 * @param yangName class name
Vinod Kumar S08710982016-03-03 19:55:30 +0530604 * @return build method string for class
Bharat saraswal97459962016-02-20 21:57:16 +0530605 */
Bharat saraswal022dae92016-03-04 20:08:09 +0530606 public static String getBuild(String yangName) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530607 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
Bharat saraswald14cbe82016-07-14 13:26:18 +0530608 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE +
609 getCapitalCase(DEFAULT) + yangName + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN
610 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal97459962016-02-20 21:57:16 +0530611 }
612
613 /**
614 * Returns the Default constructor strings for class file.
615 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530616 * @param name name of the class
Bharat saraswal022dae92016-03-04 20:08:09 +0530617 * @param modifierType modifier type for default constructor
Bharat saraswal97459962016-02-20 21:57:16 +0530618 * @return Default constructor for class
619 */
Bharat saraswal022dae92016-03-04 20:08:09 +0530620 private static String getDefaultConstructor(String name, String modifierType) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530621 return FOUR_SPACE_INDENTATION + modifierType + SPACE + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
622 + OPEN_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal97459962016-02-20 21:57:16 +0530623 }
624
Bharat saraswal022dae92016-03-04 20:08:09 +0530625 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530626 * Returns to string method's open strings.
Bharat saraswal022dae92016-03-04 20:08:09 +0530627 *
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530628 * @return string method's open string
Bharat saraswal022dae92016-03-04 20:08:09 +0530629 */
630 public static String getToStringMethodOpen() {
Bharat saraswal84366c52016-03-23 19:40:35 +0530631 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STRING_DATA_TYPE + SPACE + TO
632 + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
633 + EIGHT_SPACE_INDENTATION + RETURN + GOOGLE_MORE_OBJECT_METHOD_STRING + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530634 }
635
636 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530637 * Returns omit null value string.
638 *
639 * @return omit null value string
640 */
641 public static String getOmitNullValueString() {
642 return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING + NEW_LINE;
643 }
644
645 /**
646 * Returns to string method's close string.
Bharat saraswal022dae92016-03-04 20:08:09 +0530647 *
648 * @return to string method close string
649 */
650 public static String getToStringMethodClose() {
Bharat saraswal84366c52016-03-23 19:40:35 +0530651 return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
652 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530653 }
654
655 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530656 * Returns to string method for class.
Bharat saraswal022dae92016-03-04 20:08:09 +0530657 *
658 * @param attr attribute info
659 * @return to string method
660 */
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530661 public static String getToStringMethod(JavaAttributeInfo attr) {
662
janani b703cfe42016-05-17 13:12:22 +0530663 String attributeName = attr.getAttributeName();
Bharat saraswal84366c52016-03-23 19:40:35 +0530664 return TWELVE_SPACE_INDENTATION + PERIOD + ADD_STRING + OPEN_PARENTHESIS + QUOTES + attributeName + QUOTES
665 + COMMA + SPACE + attributeName + CLOSE_PARENTHESIS;
Bharat saraswal022dae92016-03-04 20:08:09 +0530666 }
667
668 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530669 * Returns from string method's open string.
670 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530671 * @param className name of the class
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530672 * @param pluginConfig plugin configurations
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530673 * @return from string method's open string
674 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530675 public static String getFromStringMethodSignature(String className, YangPluginConfig pluginConfig) {
676 return getJavaDoc(FROM_METHOD, className, false, pluginConfig) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
677 + STATIC + SPACE + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS
678 + STRING_DATA_TYPE + SPACE + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE
679 + OPEN_CURLY_BRACKET + NEW_LINE;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530680 }
681
682 /**
683 * Return from string method's close string.
684 *
685 * @return from string method's close string
686 */
687 public static String getFromStringMethodClose() {
688 return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
689 CLOSE_CURLY_BRACKET + NEW_LINE;
690 }
691
692 /**
693 * Return from string method's body string.
694 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530695 * @param attr attribute info
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530696 * @param fromStringAttributeInfo attribute info for the from string
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530697 * wrapper type
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530698 * @return from string method's body string
699 */
700 public static String getFromStringMethod(JavaAttributeInfo attr,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530701 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530702
703 return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
704 + getParsedSubString(attr, fromStringAttributeInfo) + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
705 + getReturnOfSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION + getCatchSubString()
706 + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
707 }
708
709 /**
710 * Returns sub string with try statement for union's from string method.
711 *
712 * @return sub string with try statement for union's from string method
713 */
714 public static String getTrySubString() {
715 return TRY + SPACE + OPEN_CURLY_BRACKET;
716 }
717
718 /**
719 * Returns sub string with return statement for union's from string method.
720 *
721 * @return sub string with return statement for union's from string method
722 */
723 public static String getReturnOfSubString() {
724 return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL + CLOSE_PARENTHESIS + SEMI_COLAN;
725 }
726
727 /**
728 * Returns sub string with catch statement for union's from string method.
729 *
730 * @return sub string with catch statement for union's from string method
731 */
732 public static String getCatchSubString() {
733 return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS + EXCEPTION + SPACE + EXCEPTION_VAR
734 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
735 }
736
737 /**
738 * Returns sub string with parsed statement for union's from string method.
739 *
740 * @param attr attribute info
741 * @return sub string with parsed statement for union's from string method
742 */
743 private static String getParsedSubString(JavaAttributeInfo attr,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530744 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530745
746 String targetDataType = getReturnType(attr);
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +0530747 if (fromStringAttributeInfo.getAttributeType().getDataType() == BINARY) {
748 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
749 + PERIOD + GET_BYTES + OPEN_PARENTHESIS + CLOSE_PARENTHESIS;
750 } else {
751 String parseFromStringMethod = getParseFromStringMethod(targetDataType,
752 fromStringAttributeInfo.getAttributeType());
753 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + parseFromStringMethod
754 + OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS;
755 }
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530756 }
757
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530758 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530759 * Returns hash code method open strings.
Bharat saraswal022dae92016-03-04 20:08:09 +0530760 *
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530761 * @return hash code method open string
Bharat saraswal022dae92016-03-04 20:08:09 +0530762 */
763 public static String getHashCodeMethodOpen() {
Bharat saraswal84366c52016-03-23 19:40:35 +0530764 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + INT + SPACE + HASH_CODE_STRING
765 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
766 + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS;
Bharat saraswal022dae92016-03-04 20:08:09 +0530767 }
768
769 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530770 * Returns hash code methods close string.
Bharat saraswal022dae92016-03-04 20:08:09 +0530771 *
772 * @param hashcodeString hash code string
773 * @return to hash code method close string
774 */
775 public static String getHashCodeMethodClose(String hashcodeString) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530776 hashcodeString = trimAtLast(hashcodeString, COMMA);
777 hashcodeString = trimAtLast(hashcodeString, SPACE);
778 return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
779 + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530780 }
781
782 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530783 * Returns hash code method for class.
Bharat saraswal022dae92016-03-04 20:08:09 +0530784 *
785 * @param attr attribute info
786 * @return hash code method
787 */
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530788 public static String getHashCodeMethod(JavaAttributeInfo attr) {
janani b703cfe42016-05-17 13:12:22 +0530789 return attr.getAttributeName() + COMMA + SPACE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530790 }
791
792 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530793 * Returns equals method open strings.
Bharat saraswal022dae92016-03-04 20:08:09 +0530794 *
795 * @param className class name
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530796 * @return equals method open string
Bharat saraswal022dae92016-03-04 20:08:09 +0530797 */
798 public static String getEqualsMethodOpen(String className) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530799 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE + EQUALS_STRING
800 + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + OBJ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
801 + NEW_LINE + getEqualsMethodsCommonIfCondition() + getEqualsMethodsSpecificIfCondition(className);
Bharat saraswal022dae92016-03-04 20:08:09 +0530802 }
803
804 /**
805 * Returns equal methods if condition string.
806 *
807 * @return if condition string
808 */
809 private static String getEqualsMethodsCommonIfCondition() {
Bharat saraswal84366c52016-03-23 19:40:35 +0530810 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + THIS + SPACE + EQUAL + EQUAL + SPACE + OBJ
811 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + SPACE
812 + TRUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530813 }
814
815 /**
816 * Returns if condition for specific class object in equals method.
817 *
818 * @param className class name
819 * @return if condition string
820 */
821 private static String getEqualsMethodsSpecificIfCondition(String className) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530822 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + OBJ + INSTANCE_OF + className
823 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + className
824 + SPACE + OTHER + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS + className + CLOSE_PARENTHESIS + SPACE
825 + OBJ + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530826 }
827
828 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530829 * Returns equals methods close string.
Bharat saraswal022dae92016-03-04 20:08:09 +0530830 *
831 * @param equalMethodString equal method string
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530832 * @return equals method close string
Bharat saraswal022dae92016-03-04 20:08:09 +0530833 */
834 public static String getEqualsMethodClose(String equalMethodString) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530835 equalMethodString = trimAtLast(equalMethodString, AND);
836 equalMethodString = trimAtLast(equalMethodString, AND);
837 equalMethodString = trimAtLast(equalMethodString, SPACE);
838 equalMethodString = trimAtLast(equalMethodString, NEW_LINE) + SEMI_COLAN + NEW_LINE;
839 return equalMethodString + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
840 + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
841 + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530842 }
843
844 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530845 * Returns equals method for class.
Bharat saraswal022dae92016-03-04 20:08:09 +0530846 *
847 * @param attr attribute info
848 * @return equals method
849 */
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530850 public static String getEqualsMethod(JavaAttributeInfo attr) {
851
janani b703cfe42016-05-17 13:12:22 +0530852 String attributeName = attr.getAttributeName();
Bharat saraswal84366c52016-03-23 19:40:35 +0530853 return SIXTEEN_SPACE_INDENTATION + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS
854 + attributeName + COMMA + SPACE + OTHER + PERIOD + attributeName + CLOSE_PARENTHESIS + SPACE + AND
855 + AND;
Bharat saraswal022dae92016-03-04 20:08:09 +0530856 }
857
858 /**
859 * Returns of method string for class.
860 *
861 * @param name class name
862 * @param attr attribute info
863 * @return of method string
864 */
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530865 public static String getOfMethod(String name, JavaAttributeInfo attr) {
Bharat saraswal022dae92016-03-04 20:08:09 +0530866
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530867 String attrQualifiedType = getReturnType(attr);
868
Bharat saraswal84366c52016-03-23 19:40:35 +0530869 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name + SPACE + OF + OPEN_PARENTHESIS
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530870 + attrQualifiedType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Bharat saraswal84366c52016-03-23 19:40:35 +0530871 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name + OPEN_PARENTHESIS + VALUE
872 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530873 }
874
Bharat saraswale2bc60d2016-04-16 02:28:25 +0530875 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530876 * Returns of method's string and java doc for special type.
877 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530878 * @param attr attribute info
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530879 * @param generatedJavaClassName class name
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530880 * @param pluginConfig plugin configurations
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530881 * @return of method's string and java doc for special type
882 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530883 public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530884 YangPluginConfig pluginConfig) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530885
886 String attrType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530887 String attrName = attr.getAttributeName();
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530888
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530889 return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530890 + getOfMethodString(attrType, generatedJavaClassName);
891 }
892
893 /**
894 * Returns of method's string.
895 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530896 * @param type data type
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530897 * @param className class name
898 * @return of method's string
899 */
900 private static String getOfMethodString(String type, String className) {
901
902 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + className + SPACE + OF + OPEN_PARENTHESIS
903 + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
904 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + className + OPEN_PARENTHESIS + VALUE
905 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
906 }
907
908 /**
909 * Returns string and java doc for constructor of type class.
910 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530911 * @param attr attribute info
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530912 * @param generatedJavaClassName class name
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530913 * @param pluginConfig plugin configurations
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530914 * @return string and java doc for constructor of type class
915 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530916 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530917 String generatedJavaClassName,
918 YangPluginConfig pluginConfig) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530919
920 String attrType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530921 String attrName = attr.getAttributeName();
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530922
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530923 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530924 + getTypeConstructorString(attrType, attrName, generatedJavaClassName);
925 }
926
927 /**
928 * Returns type constructor string.
929 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530930 * @param type data type
931 * @param name attribute name
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530932 * @param className class name
933 * @return type constructor string
934 */
935 private static String getTypeConstructorString(String type, String name, String className) {
936
937 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
938 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
939 + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
940 + CLOSE_CURLY_BRACKET;
941 }
942
943 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530944 * Returns enum's constructor.
945 *
946 * @param className enum's class name
947 * @return enum's constructor
948 */
Bharat saraswald14cbe82016-07-14 13:26:18 +0530949 public static String getEnumsConstructor(String className) {
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530950 return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
951 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
952 + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
953 }
Bharat saraswal250a7472016-05-12 13:16:57 +0530954
955 /**
956 * Returns of method for enum class.
957 *
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530958 * @param className class name
959 * @param attr java attribute
960 * @param enumMap enum's sets map
961 * @param enumList enum's sets list
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530962 * @param pluginConfig plugin configurations
Bharat saraswal250a7472016-05-12 13:16:57 +0530963 * @return of method
964 */
965 public static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530966 Map<String, Integer> enumMap, List<String> enumList,
967 YangPluginConfig pluginConfig) {
Bharat saraswal250a7472016-05-12 13:16:57 +0530968 String attrType = getReturnType(attr);
janani b703cfe42016-05-17 13:12:22 +0530969 String attrName = attr.getAttributeName();
Bharat saraswal250a7472016-05-12 13:16:57 +0530970
janani b703cfe42016-05-17 13:12:22 +0530971 String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + getCapitalCase(className) + SPACE
972 + OF + OPEN_PARENTHESIS
Bharat saraswal250a7472016-05-12 13:16:57 +0530973 + attrType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
974 + EIGHT_SPACE_INDENTATION + SWITCH + SPACE + OPEN_PARENTHESIS + VALUE
975 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
976 int value = 0;
977 for (String str : enumList) {
978
979 value = enumMap.get(str);
980 method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value + COLAN + NEW_LINE
janani b703cfe42016-05-17 13:12:22 +0530981 + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + getCapitalCase(className) + PERIOD
Bharat saraswal250a7472016-05-12 13:16:57 +0530982 + str + SEMI_COLAN + NEW_LINE;
983 }
984 method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLAN + NEW_LINE + SIXTEEN_SPACE_INDENTATION
985 + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
986 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
987
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530988 return getJavaDoc(OF_METHOD, getCapitalCase(className) + " for type " + attrName, false, pluginConfig)
989 + method;
Bharat saraswal250a7472016-05-12 13:16:57 +0530990 }
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530991
992 /**
993 * Returns activate method string.
994 *
995 * @return activate method string
996 */
997 public static String addActivateMethod() {
998 return FOUR_SPACE_INDENTATION + ACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
999 + PUBLIC + SPACE + VOID + SPACE + ACTIVATE + OPEN_PARENTHESIS
1000 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
1001 + NEW_LINE + EIGHT_SPACE_INDENTATION
1002 + YANG_UTILS_TODO
1003 + NEW_LINE + EIGHT_SPACE_INDENTATION
1004 + STARTED_LOG_INFO + FOUR_SPACE_INDENTATION
1005 + CLOSE_CURLY_BRACKET + NEW_LINE;
1006 }
1007
1008 /**
1009 * Returns deactivate method string.
1010 *
1011 * @return deactivate method string
1012 */
1013 public static String addDeActivateMethod() {
1014 return NEW_LINE + FOUR_SPACE_INDENTATION + DEACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
1015 + PUBLIC + SPACE + VOID + SPACE + DEACTIVATE + OPEN_PARENTHESIS
1016 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
1017 + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION
1018 + STOPPED_LOG_INFO + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1019 }
1020
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301021 /**
1022 * Returns from string method parsed string.
1023 *
1024 * @param targetDataType target data type
1025 * @param yangType YANG type
1026 * @return parsed string
1027 */
1028 public static String getParseFromStringMethod(String targetDataType, YangType<?> yangType) {
1029
1030 YangDataTypes type = yangType.getDataType();
1031
1032 switch (type) {
1033 case INT8:
1034 return BYTE_WRAPPER + PERIOD + PARSE_BYTE;
1035 case INT16:
1036 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1037 case INT32:
1038 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1039 case INT64:
1040 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1041 case UINT8:
1042 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1043 case UINT16:
1044 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1045 case UINT32:
1046 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1047 case UINT64:
1048 return NEW + SPACE + BIG_INTEGER;
Mahesh Poojary Huawei2cd44332016-07-14 12:38:17 +05301049 case DECIMAL64:
1050 return NEW + SPACE + BIG_DECIMAL;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301051 case STRING:
1052 return EMPTY_STRING;
1053 case EMPTY:
1054 case BOOLEAN:
1055 return BOOLEAN_WRAPPER + PERIOD + PARSE_BOOLEAN;
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301056 case BITS:
Gaurav Agrawalbfce9342016-06-15 13:58:01 +05301057 case UNION:
1058 case ENUMERATION:
1059 case DERIVED:
1060 return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
1061 default:
1062 throw new TranslatorException("given data type is not supported.");
1063 }
1064 }
Bharat saraswald14cbe82016-07-14 13:26:18 +05301065
1066 /**
1067 * Returns copy constructor for augmented class.
1068 *
1069 * @param yangName augmente class name
1070 * @param augmentName augmented class name
1071 * @return copy constructor for augmented class
1072 */
1073 public static String getAugmentedNodesConstructorStart(String yangName,
1074 String augmentName) {
1075
1076 String javadoc = generateForTypeConstructor(yangName);
1077 String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + BUILDER + OPEN_PARENTHESIS
1078 + augmentName + PERIOD + augmentName + BUILDER + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
1079 + OPEN_CURLY_BRACKET + NEW_LINE;
1080 return javadoc + constructor;
1081
1082 }
1083
1084 /**
1085 * Returns the constructor strings for class file.
1086 *
1087 * @param attr attribute info
1088 * @param pluginConfig plugin configurations
1089 * @return constructor for class
1090 */
1091 public static String getAugmentedConstructor(JavaAttributeInfo attr, YangPluginConfig pluginConfig) {
1092
1093 String attributeName = getCamelCase(attr.getAttributeName(), pluginConfig.getConflictResolver());
1094
1095 return EIGHT_SPACE_INDENTATION + THIS + PERIOD + attributeName + OPEN_PARENTHESIS
1096 + VALUE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
1097 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1098 }
Bharat saraswal97459962016-02-20 21:57:16 +05301099}