blob: 2f8c8d1fc2e35ba2d238b088c40cd384979223b9 [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;
Bharat saraswale2d51d62016-03-23 19:40:35 +053038import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053039import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053040import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
41import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053042import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053043import static org.onosproject.yangutils.utils.UtilConstants.BYTE_WRAPPER;
Bharat saraswalc0e04842016-05-12 13:16:57 +053044import static org.onosproject.yangutils.utils.UtilConstants.CASE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053045import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +053046import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053047import static org.onosproject.yangutils.utils.UtilConstants.CLEAR;
Bharat saraswale2d51d62016-03-23 19:40:35 +053048import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
49import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
Bharat saraswalc0e04842016-05-12 13:16:57 +053050import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
Bharat saraswale2d51d62016-03-23 19:40:35 +053051import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
Bharat saraswal33dfa012016-05-17 19:59:16 +053052import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE;
53import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE_ANNOTATION;
Bharat saraswalc0e04842016-05-12 13:16:57 +053054import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
Bharat saraswale2d51d62016-03-23 19:40:35 +053055import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
56import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
57import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
58import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
59import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
60import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053061import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
62import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
Bharat saraswale2d51d62016-03-23 19:40:35 +053063import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
64import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053065import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
66import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
Bharat saraswale2d51d62016-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;
72import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
73import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
74import static org.onosproject.yangutils.utils.UtilConstants.INT;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053075import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053076import static org.onosproject.yangutils.utils.UtilConstants.LIST;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053077import static org.onosproject.yangutils.utils.UtilConstants.LONG;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053078import static org.onosproject.yangutils.utils.UtilConstants.LONG_WRAPPER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053079import static org.onosproject.yangutils.utils.UtilConstants.NEW;
80import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053081import static org.onosproject.yangutils.utils.UtilConstants.NULL;
Bharat saraswale2d51d62016-03-23 19:40:35 +053082import static org.onosproject.yangutils.utils.UtilConstants.OBJ;
83import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
84import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
85import static org.onosproject.yangutils.utils.UtilConstants.OF;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053086import static org.onosproject.yangutils.utils.UtilConstants.OMIT_NULL_VALUE_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +053087import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
88import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
89import static org.onosproject.yangutils.utils.UtilConstants.OTHER;
90import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053091import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BOOLEAN;
92import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BYTE;
93import static org.onosproject.yangutils.utils.UtilConstants.PARSE_INT;
94import static org.onosproject.yangutils.utils.UtilConstants.PARSE_LONG;
95import static org.onosproject.yangutils.utils.UtilConstants.PARSE_SHORT;
Bharat saraswale2d51d62016-03-23 19:40:35 +053096import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
97import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
98import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
99import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530100import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530101import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
102import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530103import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530104import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530105import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
106import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530107import static org.onosproject.yangutils.utils.UtilConstants.STARTED_LOG_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530108import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530109import static org.onosproject.yangutils.utils.UtilConstants.STOPPED_LOG_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530110import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
111import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530112import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530113import static org.onosproject.yangutils.utils.UtilConstants.THIS;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530114import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530115import static org.onosproject.yangutils.utils.UtilConstants.TO;
116import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530117import static org.onosproject.yangutils.utils.UtilConstants.TRY;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530118import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
119import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
120import static org.onosproject.yangutils.utils.UtilConstants.VOID;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530121import static org.onosproject.yangutils.utils.UtilConstants.YANG_UTILS_TODO;
janani be18b5342016-07-13 21:06:41 +0530122import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530123import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
124import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
125import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530126import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.FROM_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530127import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530128import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.MANAGER_SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530129import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530130import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530131import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
Gaurav Agrawal8a5af142016-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 saraswale2d51d62016-03-23 19:40:35 +0530135import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530136
137/**
Bharat saraswald9822e92016-04-05 15:13:44 +0530138 * Represents generator for methods of generated files based on the file type.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530139 */
140public final class MethodsGenerator {
141
Bharat saraswal870c56f2016-02-20 21:57:16 +0530142 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530143 * Creates an instance of method generator.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530144 */
145 private MethodsGenerator() {
146 }
147
148 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530149 * Returns the methods strings for builder interface.
150 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530151 * @param name attribute name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530152 * @param pluginConfig plugin configurations
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530153 * @return method string for builder interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530154 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530155 public static String parseBuilderInterfaceBuildMethodString(String name, YangPluginConfig pluginConfig) {
156 return getJavaDoc(BUILD_METHOD, name, false, pluginConfig) + getBuildForInterface(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530157 }
158
159 /**
160 * Returns getter string.
161 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530162 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530163 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530164 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530165 * @return getter string
166 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530167 public static String getGetterString(JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530168 YangPluginConfig pluginConfig) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530169
Vinod Kumar S38046502016-03-23 15:30:27 +0530170 String returnType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530171 String attributeName = attr.getAttributeName();
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530172
Bharat saraswal33dfa012016-05-17 19:59:16 +0530173 return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr(), pluginConfig)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530174 + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530175 }
176
177 /**
178 * Returns setter string.
179 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530180 * @param attr attribute info
181 * @param className java class name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530182 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530183 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530184 * @return setter string
185 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530186 public static String getSetterString(JavaAttributeInfo attr, String className, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530187 YangPluginConfig pluginConfig) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530188
Vinod Kumar S38046502016-03-23 15:30:27 +0530189 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530190 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530191 JavaDocGen.JavaDocType type;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530192 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530193 type = MANAGER_SETTER_METHOD;
194 } else {
195 type = SETTER_METHOD;
196 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530197
Bharat saraswal33dfa012016-05-17 19:59:16 +0530198 return getJavaDoc(type, attributeName, attr.isListAttr(), pluginConfig)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530199 + getSetterForInterface(attributeName, attrType, className, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530200 }
201
202 /**
203 * Returns constructor method string.
204 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530205 * @param name class name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530206 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530207 * @return constructor string
208 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530209 public static String getConstructorString(String name, YangPluginConfig pluginConfig) {
210 return getJavaDoc(CONSTRUCTOR, name, false, pluginConfig);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530211 }
212
213 /**
214 * Returns default constructor method string.
215 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530216 * @param name class name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530217 * @param modifierType modifier type
Bharat saraswal33dfa012016-05-17 19:59:16 +0530218 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530219 * @return default constructor string
220 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530221 public static String getDefaultConstructorString(String name, String modifierType,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530222 YangPluginConfig pluginConfig) {
Bharat saraswal33dfa012016-05-17 19:59:16 +0530223 return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false, pluginConfig)
224 + getDefaultConstructor(name, modifierType)
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530225 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530226 }
227
228 /**
229 * Returns check not null string.
230 *
231 * @param name attribute name
232 * @return check not null string
233 */
234 public static String getCheckNotNull(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530235 return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING + OPEN_PARENTHESIS + name + COMMA + SPACE + name
236 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530237 }
238
239 /**
240 * Returns build method string.
241 *
242 * @param name class name
243 * @return build string
244 */
245 public static String getBuildString(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530246 return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530247 }
248
249 /**
250 * Returns the getter method strings for class file.
251 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530252 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530253 * @param generatedJavaFiles for the type of java file being generated
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530254 * @return getter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530255 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530256 public static String getGetterForClass(JavaAttributeInfo attr, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530257
Vinod Kumar S38046502016-03-23 15:30:27 +0530258 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530259 String attributeName = attr.getAttributeName();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530260
261 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530262 return getGetter(attrQuaifiedType, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530263 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530264 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530265 return getGetter(listAttr, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530266 }
267
268 /**
269 * Returns getter for attribute.
270 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530271 * @param type return type
272 * @param name attribute name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530273 * @param generatedJavaFiles generated java files
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530274 * @return getter for attribute
275 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530276 public static String getGetter(String type, String name, int generatedJavaFiles) {
Bharat saraswalcad0e652016-05-26 23:48:38 +0530277 String ret = parseTypeForReturnValue(type);
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530278 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
janani b4a6711a2016-05-17 13:12:22 +0530279 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCapitalCase(name)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530280 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
281 EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION +
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530282 RETURN + SPACE + ret + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530283 } else {
284 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + name
285 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
286 EIGHT_SPACE_INDENTATION + RETURN + SPACE + name + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
287 + CLOSE_CURLY_BRACKET;
288 }
289
Bharat saraswal870c56f2016-02-20 21:57:16 +0530290 }
291
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530292 /*Provides string to return for type.*/
Bharat saraswalcad0e652016-05-26 23:48:38 +0530293 private static String parseTypeForReturnValue(String type) {
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530294 switch (type) {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530295 case BYTE:
296 case INT:
297 case SHORT:
298 case LONG:
299 return "0";
300 case BOOLEAN_DATA_TYPE:
301 return FALSE;
302 default:
303 return null;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530304 }
305 }
306
Bharat saraswal870c56f2016-02-20 21:57:16 +0530307 /**
308 * Returns the setter method strings for class file.
309 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530310 * @param attr attribute info
311 * @param className name of the class
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530312 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530313 * @return setter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530314 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530315 public static String getSetterForClass(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530316
Vinod Kumar S38046502016-03-23 15:30:27 +0530317 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530318 String attributeName = attr.getAttributeName();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530319 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530320 return getSetter(className, attributeName, attrQuaifiedType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530321 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530322 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530323 return getSetter(className, attributeName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530324 }
325
326 /**
327 * Returns setter for attribute.
328 *
329 * @param className class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530330 * @param name attribute name
331 * @param type return type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530332 * @return setter for attribute
333 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530334 private static String getSetter(String className, String name, String type, int generatedJavaFiles) {
335 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
336 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX
janani b4a6711a2016-05-17 13:12:22 +0530337 + getCapitalCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530338 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO +
339 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530340 } else if (generatedJavaFiles == GENERATE_EVENT_SUBJECT_CLASS) {
341 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + name + OPEN_PARENTHESIS + type + SPACE
342 + name + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
343 + THIS + PERIOD + name + SPACE + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE
344 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530345 } else {
346 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE +
347 name + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
Bharat saraswal33dfa012016-05-17 19:59:16 +0530348 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE
349 + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE
350 + THIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530351 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530352 }
353
354 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530355 * Returns the setter method strings for class file.
356 *
357 * @param attr attribute info
358 * @return setter method for class
359 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530360 public static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530361
Vinod Kumar S38046502016-03-23 15:30:27 +0530362 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530363 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530364 return getTypeDefSetter(attrQuaifiedType, attributeName);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530365 }
366
367 /**
368 * Returns type def's setter for attribute.
369 *
370 * @param type data type
371 * @param name attribute name
372 * @return setter for type def's attribute
373 */
374 private static String getTypeDefSetter(String type, String name) {
janani b4a6711a2016-05-17 13:12:22 +0530375 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(name)
Bharat saraswale2d51d62016-03-23 19:40:35 +0530376 + OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
377 + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE
378 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530379 }
380
381 /**
382 * Returns override string.
383 *
384 * @return override string
385 */
386 public static String getOverRideString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530387 return NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530388 }
389
390 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530391 * Returns the getter method strings for interface file.
392 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530393 * @param yangName name of the attribute
394 * @param returnType return type of attribute
395 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530396 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530397 * @return getter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530398 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530399 public static String getGetterForInterface(String yangName, String returnType, boolean isList,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530400 int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530401
402 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530403 return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530404 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530405 String listAttr = getListString() + returnType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530406 return getGetterInterfaceString(listAttr, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530407 }
408
409 /**
410 * Returns getter for attribute in interface.
411 *
412 * @param returnType return type
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530413 * @param yangName attribute name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530414 * @return getter for interface
415 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530416 private static String getGetterInterfaceString(String returnType, String yangName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530417 int generatedJavaFiles) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530418 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
janani b4a6711a2016-05-17 13:12:22 +0530419 return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCapitalCase(yangName)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530420 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
421 } else {
422 return FOUR_SPACE_INDENTATION + returnType + SPACE + yangName
423 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
424 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530425 }
426
427 /**
428 * Returns the setter method strings for interface file.
429 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530430 * @param attrName name of the attribute
431 * @param attrType return type of attribute
432 * @param className name of the java class being generated
433 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530434 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530435 * @return setter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530436 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530437 public static String getSetterForInterface(String attrName, String attrType, String className,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530438 boolean isList, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530439
440 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530441 return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530442 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530443 String listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530444 return getSetterInterfaceString(className, attrName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530445 }
446
447 /**
448 * Returns setter string for interface.
449 *
450 * @param className class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530451 * @param attrName attribute name
452 * @param attrType attribute type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530453 * @return setter string
454 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530455 private static String getSetterInterfaceString(String className, String attrName, String attrType,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530456 int generatedJavaFiles) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530457 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
458
janani b4a6711a2016-05-17 13:12:22 +0530459 return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(attrName)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530460 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
461 } else {
462 return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + attrName
463 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
464 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530465 }
466
467 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530468 * Returns list string.
469 *
470 * @return list string
471 */
472 private static String getListString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530473 return LIST + DIAMOND_OPEN_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530474 }
475
476 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530477 * Returns return type for attribute.
478 *
479 * @param attr attribute info
480 * @return return type
481 */
482 private static String getReturnType(JavaAttributeInfo attr) {
483
Bharat saraswale2d51d62016-03-23 19:40:35 +0530484 String returnType = EMPTY_STRING;
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530485 if (attr.isQualifiedName() && attr.getImportInfo().getPkgInfo() != null) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530486 returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
Vinod Kumar S38046502016-03-23 15:30:27 +0530487 }
488 returnType = returnType + attr.getImportInfo().getClassInfo();
489 return returnType;
490 }
491
492 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530493 * Returns the build method strings for interface file.
494 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530495 * @param yangName name of the interface
496 * @return build method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530497 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530498 public static String getBuildForInterface(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530499 return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
500 + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530501 }
502
503 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530504 * Returns constructor string for impl class.
505 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530506 * @param yangName class name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530507 * @param pluginConfig plugin configurations
Vinod Kumar S38046502016-03-23 15:30:27 +0530508 * @return constructor string
509 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530510 public static String getConstructorStart(String yangName, YangPluginConfig pluginConfig) {
Vinod Kumar S38046502016-03-23 15:30:27 +0530511
Bharat saraswal33dfa012016-05-17 19:59:16 +0530512 String javadoc = getConstructorString(yangName, pluginConfig);
513 String constructor =
514 FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + IMPL + OPEN_PARENTHESIS + yangName
515 + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT + CLOSE_PARENTHESIS + SPACE
516 + OPEN_CURLY_BRACKET
517 + NEW_LINE;
Vinod Kumar S38046502016-03-23 15:30:27 +0530518 return javadoc + constructor;
519 }
520
521 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530522 * Returns the constructor strings for class file.
523 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530524 * @param yangName name of the class
525 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530526 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530527 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530528 * @return constructor for class
529 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530530 public static String getConstructor(String yangName, JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530531 YangPluginConfig pluginConfig) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530532
janani b4a6711a2016-05-17 13:12:22 +0530533 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530534 String constructor;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530535
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530536 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
Bharat saraswal33dfa012016-05-17 19:59:16 +0530537 constructor =
538 EIGHT_SPACE_INDENTATION + THIS + PERIOD
539 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
540 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
541 + getCapitalCase(getCamelCase(attributeName, pluginConfig.getConflictResolver()))
542 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530543 } else {
Bharat saraswal33dfa012016-05-17 19:59:16 +0530544 constructor =
545 EIGHT_SPACE_INDENTATION + THIS + PERIOD
546 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
547 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD
548 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) +
549 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530550 }
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530551 return constructor;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530552 }
553
554 /**
Gaurav Agrawal56527662016-04-20 15:49:17 +0530555 * Returns the rpc strings for service interface.
556 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530557 * @param rpcName name of the rpc
558 * @param inputName name of input
559 * @param outputName name of output
Bharat saraswal33dfa012016-05-17 19:59:16 +0530560 * @param pluginConfig plugin configurations
Gaurav Agrawal56527662016-04-20 15:49:17 +0530561 * @return rpc method string
562 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530563 public static String getRpcServiceMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530564 YangPluginConfig pluginConfig) {
Gaurav Agrawal56527662016-04-20 15:49:17 +0530565
Bharat saraswal33dfa012016-05-17 19:59:16 +0530566 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswalcad0e652016-05-26 23:48:38 +0530567 if (!inputName.equals(EMPTY_STRING)) {
568 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530569 }
Bharat saraswalcad0e652016-05-26 23:48:38 +0530570 return FOUR_SPACE_INDENTATION + outputName + SPACE + rpcName + OPEN_PARENTHESIS + inputName
571 + CLOSE_PARENTHESIS + SEMI_COLAN;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530572 }
573
574 /**
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530575 * Returns the rpc strings for manager impl.
576 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530577 * @param rpcName name of the rpc
578 * @param inputName name of input
579 * @param outputName name of output
Bharat saraswal33dfa012016-05-17 19:59:16 +0530580 * @param pluginConfig plugin configurations
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530581 * @return rpc method string
582 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530583 public static String getRpcManagerMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530584 YangPluginConfig pluginConfig) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530585
Bharat saraswal33dfa012016-05-17 19:59:16 +0530586 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswalcad0e652016-05-26 23:48:38 +0530587 if (!inputName.equals(EMPTY_STRING)) {
588 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530589 }
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530590
Bharat saraswalcad0e652016-05-26 23:48:38 +0530591 String method =
592 getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName
593 + OPEN_PARENTHESIS + inputName + CLOSE_PARENTHESIS + SPACE
594 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530595 if (!outputName.contentEquals(VOID)) {
Bharat saraswalcad0e652016-05-26 23:48:38 +0530596 method += EIGHT_SPACE_INDENTATION + RETURN + SPACE + parseTypeForReturnValue(outputName) + SEMI_COLAN
597 + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530598 }
599 method += FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
600
601 return method;
602 }
603
604 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530605 * Returns the build method strings for class file.
606 *
607 * @param yangName class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530608 * @return build method string for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530609 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530610 public static String getBuild(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530611 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
612 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE
613 + yangName + IMPL + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
614 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530615 }
616
617 /**
618 * Returns the Default constructor strings for class file.
619 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530620 * @param name name of the class
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530621 * @param modifierType modifier type for default constructor
Bharat saraswal870c56f2016-02-20 21:57:16 +0530622 * @return Default constructor for class
623 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530624 private static String getDefaultConstructor(String name, String modifierType) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530625 return FOUR_SPACE_INDENTATION + modifierType + SPACE + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
626 + OPEN_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530627 }
628
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530629 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530630 * Returns to string method's open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530631 *
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530632 * @return string method's open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530633 */
634 public static String getToStringMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530635 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STRING_DATA_TYPE + SPACE + TO
636 + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
637 + EIGHT_SPACE_INDENTATION + RETURN + GOOGLE_MORE_OBJECT_METHOD_STRING + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530638 }
639
640 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530641 * Returns omit null value string.
642 *
643 * @return omit null value string
644 */
645 public static String getOmitNullValueString() {
646 return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING + NEW_LINE;
647 }
648
649 /**
650 * Returns to string method's close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530651 *
652 * @return to string method close string
653 */
654 public static String getToStringMethodClose() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530655 return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
656 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530657 }
658
659 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530660 * Returns to string method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530661 *
662 * @param attr attribute info
663 * @return to string method
664 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530665 public static String getToStringMethod(JavaAttributeInfo attr) {
666
janani b4a6711a2016-05-17 13:12:22 +0530667 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530668 return TWELVE_SPACE_INDENTATION + PERIOD + ADD_STRING + OPEN_PARENTHESIS + QUOTES + attributeName + QUOTES
669 + COMMA + SPACE + attributeName + CLOSE_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530670 }
671
672 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530673 * Returns from string method's open string.
674 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530675 * @param className name of the class
Bharat saraswal33dfa012016-05-17 19:59:16 +0530676 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530677 * @return from string method's open string
678 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530679 public static String getFromStringMethodSignature(String className, YangPluginConfig pluginConfig) {
680 return getJavaDoc(FROM_METHOD, className, false, pluginConfig) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
681 + STATIC + SPACE + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS
682 + STRING_DATA_TYPE + SPACE + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE
683 + OPEN_CURLY_BRACKET + NEW_LINE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530684 }
685
686 /**
687 * Return from string method's close string.
688 *
689 * @return from string method's close string
690 */
691 public static String getFromStringMethodClose() {
692 return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
693 CLOSE_CURLY_BRACKET + NEW_LINE;
694 }
695
696 /**
697 * Return from string method's body string.
698 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530699 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530700 * @param fromStringAttributeInfo attribute info for the from string
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530701 * wrapper type
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530702 * @return from string method's body string
703 */
704 public static String getFromStringMethod(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530705 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530706
707 return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
708 + getParsedSubString(attr, fromStringAttributeInfo) + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
709 + getReturnOfSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION + getCatchSubString()
710 + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
711 }
712
713 /**
714 * Returns sub string with try statement for union's from string method.
715 *
716 * @return sub string with try statement for union's from string method
717 */
718 public static String getTrySubString() {
719 return TRY + SPACE + OPEN_CURLY_BRACKET;
720 }
721
722 /**
723 * Returns sub string with return statement for union's from string method.
724 *
725 * @return sub string with return statement for union's from string method
726 */
727 public static String getReturnOfSubString() {
728 return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL + CLOSE_PARENTHESIS + SEMI_COLAN;
729 }
730
731 /**
732 * Returns sub string with catch statement for union's from string method.
733 *
734 * @return sub string with catch statement for union's from string method
735 */
736 public static String getCatchSubString() {
737 return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS + EXCEPTION + SPACE + EXCEPTION_VAR
738 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
739 }
740
741 /**
742 * Returns sub string with parsed statement for union's from string method.
743 *
744 * @param attr attribute info
745 * @return sub string with parsed statement for union's from string method
746 */
747 private static String getParsedSubString(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530748 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530749
750 String targetDataType = getReturnType(attr);
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 }
756
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530757 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530758 * Returns hash code method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530759 *
Bharat saraswald9822e92016-04-05 15:13:44 +0530760 * @return hash code method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530761 */
762 public static String getHashCodeMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530763 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + INT + SPACE + HASH_CODE_STRING
764 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
765 + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530766 }
767
768 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530769 * Returns hash code methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530770 *
771 * @param hashcodeString hash code string
772 * @return to hash code method close string
773 */
774 public static String getHashCodeMethodClose(String hashcodeString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530775 hashcodeString = trimAtLast(hashcodeString, COMMA);
776 hashcodeString = trimAtLast(hashcodeString, SPACE);
777 return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
778 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530779 }
780
781 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530782 * Returns hash code method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530783 *
784 * @param attr attribute info
785 * @return hash code method
786 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530787 public static String getHashCodeMethod(JavaAttributeInfo attr) {
janani b4a6711a2016-05-17 13:12:22 +0530788 return attr.getAttributeName() + COMMA + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530789 }
790
791 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530792 * Returns equals method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530793 *
794 * @param className class name
Bharat saraswald9822e92016-04-05 15:13:44 +0530795 * @return equals method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530796 */
797 public static String getEqualsMethodOpen(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530798 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE + EQUALS_STRING
799 + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + OBJ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
800 + NEW_LINE + getEqualsMethodsCommonIfCondition() + getEqualsMethodsSpecificIfCondition(className);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530801 }
802
803 /**
804 * Returns equal methods if condition string.
805 *
806 * @return if condition string
807 */
808 private static String getEqualsMethodsCommonIfCondition() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530809 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + THIS + SPACE + EQUAL + EQUAL + SPACE + OBJ
810 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + SPACE
811 + TRUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530812 }
813
814 /**
815 * Returns if condition for specific class object in equals method.
816 *
817 * @param className class name
818 * @return if condition string
819 */
820 private static String getEqualsMethodsSpecificIfCondition(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530821 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + OBJ + INSTANCE_OF + className
822 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + className
823 + SPACE + OTHER + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS + className + CLOSE_PARENTHESIS + SPACE
824 + OBJ + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530825 }
826
827 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530828 * Returns equals methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530829 *
830 * @param equalMethodString equal method string
Bharat saraswald9822e92016-04-05 15:13:44 +0530831 * @return equals method close string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530832 */
833 public static String getEqualsMethodClose(String equalMethodString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530834 equalMethodString = trimAtLast(equalMethodString, AND);
835 equalMethodString = trimAtLast(equalMethodString, AND);
836 equalMethodString = trimAtLast(equalMethodString, SPACE);
837 equalMethodString = trimAtLast(equalMethodString, NEW_LINE) + SEMI_COLAN + NEW_LINE;
838 return equalMethodString + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
839 + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
840 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530841 }
842
843 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530844 * Returns equals method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530845 *
846 * @param attr attribute info
847 * @return equals method
848 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530849 public static String getEqualsMethod(JavaAttributeInfo attr) {
850
janani b4a6711a2016-05-17 13:12:22 +0530851 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530852 return SIXTEEN_SPACE_INDENTATION + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS
853 + attributeName + COMMA + SPACE + OTHER + PERIOD + attributeName + CLOSE_PARENTHESIS + SPACE + AND
854 + AND;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530855 }
856
857 /**
858 * Returns of method string for class.
859 *
860 * @param name class name
861 * @param attr attribute info
862 * @return of method string
863 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530864 public static String getOfMethod(String name, JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530865
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530866 String attrQualifiedType = getReturnType(attr);
867
Bharat saraswale2d51d62016-03-23 19:40:35 +0530868 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name + SPACE + OF + OPEN_PARENTHESIS
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530869 + attrQualifiedType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Bharat saraswale2d51d62016-03-23 19:40:35 +0530870 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name + OPEN_PARENTHESIS + VALUE
871 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530872 }
873
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530874 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530875 * Returns of method's string and java doc for special type.
876 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530877 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530878 * @param generatedJavaClassName class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530879 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530880 * @return of method's string and java doc for special type
881 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530882 public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530883 YangPluginConfig pluginConfig) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530884
885 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530886 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530887
Bharat saraswal33dfa012016-05-17 19:59:16 +0530888 return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530889 + getOfMethodString(attrType, generatedJavaClassName);
890 }
891
892 /**
893 * Returns of method's string.
894 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530895 * @param type data type
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530896 * @param className class name
897 * @return of method's string
898 */
899 private static String getOfMethodString(String type, String className) {
900
901 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + className + SPACE + OF + OPEN_PARENTHESIS
902 + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
903 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + className + OPEN_PARENTHESIS + VALUE
904 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
905 }
906
907 /**
908 * Returns string and java doc for constructor of type class.
909 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530910 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530911 * @param generatedJavaClassName class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530912 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530913 * @return string and java doc for constructor of type class
914 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530915 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530916 String generatedJavaClassName,
917 YangPluginConfig pluginConfig) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530918
919 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530920 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530921
Bharat saraswal33dfa012016-05-17 19:59:16 +0530922 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530923 + getTypeConstructorString(attrType, attrName, generatedJavaClassName);
924 }
925
926 /**
927 * Returns type constructor string.
928 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530929 * @param type data type
930 * @param name attribute name
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530931 * @param className class name
932 * @return type constructor string
933 */
934 private static String getTypeConstructorString(String type, String name, String className) {
935
936 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
937 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
938 + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
939 + CLOSE_CURLY_BRACKET;
940 }
941
942 /**
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530943 * Returns implementation of add augmentation method of AugmentationHolder class.
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530944 *
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530945 * @return implementation of add augmentation method of AugmentationHolder class
946 */
947 public static String getAddAugmentInfoMethodImpl() {
948 String method = FOUR_SPACE_INDENTATION;
949 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + ADD_STRING
950 + AUGMENTATION + OPEN_PARENTHESIS + AUGMENTED_INFO + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
951 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST
952 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + ADD_STRING + OPEN_PARENTHESIS + VALUE
953 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
954
955 return method;
956 }
957
958 /**
959 * Returns implementation of get augment info list method of AugmentationHolder class.
960 *
961 * @return implementation of get augment info list method of AugmentationHolder class
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530962 */
963 public static String getAugmentInfoListImpl() {
964
965 String method = FOUR_SPACE_INDENTATION;
966 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + LIST + DIAMOND_OPEN_BRACKET
967 + AUGMENTED_INFO + DIAMOND_CLOSE_BRACKET + SPACE + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST
968 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
969 + RETURN + SPACE + getSmallCase(AUGMENTED_INFO) + LIST + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
970 + CLOSE_CURLY_BRACKET;
971 return method;
972 }
973
974 /**
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530975 * Returns implementation of remove augmentation method of AugmentationHolder class.
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530976 *
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530977 * @return implementation of remove augmentation method of AugmentationHolder class
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530978 */
979 public static String getRemoveAugmentationImpl() {
980 String method = FOUR_SPACE_INDENTATION;
981 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + "remove"
982 + AUGMENTATION + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
983 + EIGHT_SPACE_INDENTATION + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST + OPEN_PARENTHESIS
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530984 + CLOSE_PARENTHESIS + PERIOD + CLEAR + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530985 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
986 return method;
987 }
988
Bharat saraswald72411a2016-04-19 01:00:16 +0530989 /**
990 * Returns enum's constructor.
991 *
992 * @param className enum's class name
993 * @return enum's constructor
994 */
995 public static String getEnumsConstrcutor(String className) {
996 return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
997 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
998 + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
999 }
Bharat saraswalc0e04842016-05-12 13:16:57 +05301000
1001 /**
1002 * Returns of method for enum class.
1003 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301004 * @param className class name
1005 * @param attr java attribute
1006 * @param enumMap enum's sets map
1007 * @param enumList enum's sets list
Bharat saraswal33dfa012016-05-17 19:59:16 +05301008 * @param pluginConfig plugin configurations
Bharat saraswalc0e04842016-05-12 13:16:57 +05301009 * @return of method
1010 */
1011 public static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301012 Map<String, Integer> enumMap, List<String> enumList,
1013 YangPluginConfig pluginConfig) {
Bharat saraswalc0e04842016-05-12 13:16:57 +05301014 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +05301015 String attrName = attr.getAttributeName();
Bharat saraswalc0e04842016-05-12 13:16:57 +05301016
janani b4a6711a2016-05-17 13:12:22 +05301017 String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + getCapitalCase(className) + SPACE
1018 + OF + OPEN_PARENTHESIS
Bharat saraswalc0e04842016-05-12 13:16:57 +05301019 + attrType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1020 + EIGHT_SPACE_INDENTATION + SWITCH + SPACE + OPEN_PARENTHESIS + VALUE
1021 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1022 int value = 0;
1023 for (String str : enumList) {
1024
1025 value = enumMap.get(str);
1026 method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value + COLAN + NEW_LINE
janani b4a6711a2016-05-17 13:12:22 +05301027 + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + getCapitalCase(className) + PERIOD
Bharat saraswalc0e04842016-05-12 13:16:57 +05301028 + str + SEMI_COLAN + NEW_LINE;
1029 }
1030 method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLAN + NEW_LINE + SIXTEEN_SPACE_INDENTATION
1031 + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1032 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1033
Bharat saraswal33dfa012016-05-17 19:59:16 +05301034 return getJavaDoc(OF_METHOD, getCapitalCase(className) + " for type " + attrName, false, pluginConfig)
1035 + method;
Bharat saraswalc0e04842016-05-12 13:16:57 +05301036 }
Bharat saraswal33dfa012016-05-17 19:59:16 +05301037
1038 /**
1039 * Returns activate method string.
1040 *
1041 * @return activate method string
1042 */
1043 public static String addActivateMethod() {
1044 return FOUR_SPACE_INDENTATION + ACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
1045 + PUBLIC + SPACE + VOID + SPACE + ACTIVATE + OPEN_PARENTHESIS
1046 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
1047 + NEW_LINE + EIGHT_SPACE_INDENTATION
1048 + YANG_UTILS_TODO
1049 + NEW_LINE + EIGHT_SPACE_INDENTATION
1050 + STARTED_LOG_INFO + FOUR_SPACE_INDENTATION
1051 + CLOSE_CURLY_BRACKET + NEW_LINE;
1052 }
1053
1054 /**
1055 * Returns deactivate method string.
1056 *
1057 * @return deactivate method string
1058 */
1059 public static String addDeActivateMethod() {
1060 return NEW_LINE + FOUR_SPACE_INDENTATION + DEACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
1061 + PUBLIC + SPACE + VOID + SPACE + DEACTIVATE + OPEN_PARENTHESIS
1062 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
1063 + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION
1064 + STOPPED_LOG_INFO + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1065 }
1066
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301067 /**
1068 * Returns from string method parsed string.
1069 *
1070 * @param targetDataType target data type
1071 * @param yangType YANG type
1072 * @return parsed string
1073 */
1074 public static String getParseFromStringMethod(String targetDataType, YangType<?> yangType) {
1075
1076 YangDataTypes type = yangType.getDataType();
1077
1078 switch (type) {
1079 case INT8:
1080 return BYTE_WRAPPER + PERIOD + PARSE_BYTE;
1081 case INT16:
1082 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1083 case INT32:
1084 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1085 case INT64:
1086 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1087 case UINT8:
1088 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1089 case UINT16:
1090 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1091 case UINT32:
1092 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1093 case UINT64:
1094 return NEW + SPACE + BIG_INTEGER;
1095 case STRING:
1096 return EMPTY_STRING;
1097 case EMPTY:
1098 case BOOLEAN:
1099 return BOOLEAN_WRAPPER + PERIOD + PARSE_BOOLEAN;
1100 case DECIMAL64:
1101 case BITS:
1102 case BINARY:
1103 case UNION:
1104 case ENUMERATION:
1105 case DERIVED:
1106 return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
1107 default:
1108 throw new TranslatorException("given data type is not supported.");
1109 }
1110 }
Bharat saraswal870c56f2016-02-20 21:57:16 +05301111}