blob: 85aa78429d7adc3e2548f27a3c1a3c2ccf7b5d2e [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;
Gaurav Agrawal72cd1b72016-06-30 13:28:14 +053021import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053022import org.onosproject.yangutils.datamodel.YangType;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053023import org.onosproject.yangutils.translator.exception.TranslatorException;
Vinod Kumar S38046502016-03-23 15:30:27 +053024import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053025import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053026import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
Bharat saraswale2d51d62016-03-23 19:40:35 +053027
Bharat saraswal33dfa012016-05-17 19:59:16 +053028import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053029import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
Bharat saraswal33dfa012016-05-17 19:59:16 +053030import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE;
31import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE_ANNOTATION;
Bharat saraswale2d51d62016-03-23 19:40:35 +053032import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
33import static org.onosproject.yangutils.utils.UtilConstants.AND;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053034import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTATION;
35import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053036import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053037import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053038import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053039import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
40import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053041import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053042import static org.onosproject.yangutils.utils.UtilConstants.BYTE_WRAPPER;
Bharat saraswalc0e04842016-05-12 13:16:57 +053043import static org.onosproject.yangutils.utils.UtilConstants.CASE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053044import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +053045import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053046import static org.onosproject.yangutils.utils.UtilConstants.CLEAR;
Bharat saraswale2d51d62016-03-23 19:40:35 +053047import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
48import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
Bharat saraswalc0e04842016-05-12 13:16:57 +053049import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
Bharat saraswale2d51d62016-03-23 19:40:35 +053050import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
Bharat saraswal33dfa012016-05-17 19:59:16 +053051import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE;
52import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE_ANNOTATION;
Bharat saraswalc0e04842016-05-12 13:16:57 +053053import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
Bharat saraswale2d51d62016-03-23 19:40:35 +053054import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
55import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
56import 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 Agrawal338735b2016-04-18 18:53:11 +053060import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
61import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
Bharat saraswale2d51d62016-03-23 19:40:35 +053062import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
63import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Gaurav Agrawal338735b2016-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;
Bharat saraswale2d51d62016-03-23 19:40:35 +053066import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
67import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
68import static org.onosproject.yangutils.utils.UtilConstants.HASH;
69import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
70import static org.onosproject.yangutils.utils.UtilConstants.IF;
71import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
72import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
73import static org.onosproject.yangutils.utils.UtilConstants.INT;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053074import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053075import static org.onosproject.yangutils.utils.UtilConstants.LIST;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053076import static org.onosproject.yangutils.utils.UtilConstants.LONG;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053077import static org.onosproject.yangutils.utils.UtilConstants.LONG_WRAPPER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053078import static org.onosproject.yangutils.utils.UtilConstants.NEW;
79import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053080import static org.onosproject.yangutils.utils.UtilConstants.NULL;
Bharat saraswale2d51d62016-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 Agrawal338735b2016-04-18 18:53:11 +053085import static org.onosproject.yangutils.utils.UtilConstants.OMIT_NULL_VALUE_STRING;
Bharat saraswale2d51d62016-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 Agrawal8a5af142016-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 saraswale2d51d62016-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 Agrawal56527662016-04-20 15:49:17 +053099import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
Bharat saraswale2d51d62016-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 saraswalab4c6ba2016-05-17 14:19:38 +0530102import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530103import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530104import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
105import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530106import static org.onosproject.yangutils.utils.UtilConstants.STARTED_LOG_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530107import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530108import static org.onosproject.yangutils.utils.UtilConstants.STOPPED_LOG_INFO;
Bharat saraswale2d51d62016-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 saraswalc0e04842016-05-12 13:16:57 +0530111import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530112import static org.onosproject.yangutils.utils.UtilConstants.THIS;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530113import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530114import static org.onosproject.yangutils.utils.UtilConstants.TO;
115import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530116import static org.onosproject.yangutils.utils.UtilConstants.TRY;
Bharat saraswale2d51d62016-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-Huaweicb3a1f52016-05-10 17:58:57 +0530120import static org.onosproject.yangutils.utils.UtilConstants.YANG_UTILS_TODO;
Bharat saraswale2d51d62016-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 Agrawal56527662016-04-20 15:49:17 +0530124import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.FROM_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530125import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530126import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.MANAGER_SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530127import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530128import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530129import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530130import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
131import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
132import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
133import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530134import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530135
136/**
Bharat saraswald9822e92016-04-05 15:13:44 +0530137 * Represents generator for methods of generated files based on the file type.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530138 */
139public final class MethodsGenerator {
140
Bharat saraswal870c56f2016-02-20 21:57:16 +0530141 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530142 * Creates an instance of method generator.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530143 */
144 private MethodsGenerator() {
145 }
146
147 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530148 * Returns the methods strings for builder interface.
149 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530150 * @param name attribute name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530151 * @param pluginConfig plugin configurations
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530152 * @return method string for builder interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530153 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530154 public static String parseBuilderInterfaceBuildMethodString(String name, YangPluginConfig pluginConfig) {
155 return getJavaDoc(BUILD_METHOD, name, false, pluginConfig) + getBuildForInterface(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530156 }
157
158 /**
159 * Returns getter string.
160 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530161 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530162 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530163 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530164 * @return getter string
165 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530166 public static String getGetterString(JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530167 YangPluginConfig pluginConfig) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530168
Vinod Kumar S38046502016-03-23 15:30:27 +0530169 String returnType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530170 String attributeName = attr.getAttributeName();
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530171
Bharat saraswal33dfa012016-05-17 19:59:16 +0530172 return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr(), pluginConfig)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530173 + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530174 }
175
176 /**
177 * Returns setter string.
178 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530179 * @param attr attribute info
180 * @param className java class name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530181 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530182 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530183 * @return setter string
184 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530185 public static String getSetterString(JavaAttributeInfo attr, String className, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530186 YangPluginConfig pluginConfig) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530187
Vinod Kumar S38046502016-03-23 15:30:27 +0530188 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530189 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530190 JavaDocGen.JavaDocType type;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530191 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530192 type = MANAGER_SETTER_METHOD;
193 } else {
194 type = SETTER_METHOD;
195 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530196
Bharat saraswal33dfa012016-05-17 19:59:16 +0530197 return getJavaDoc(type, attributeName, attr.isListAttr(), pluginConfig)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530198 + getSetterForInterface(attributeName, attrType, className, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530199 }
200
201 /**
202 * Returns constructor method string.
203 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530204 * @param name class name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530205 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530206 * @return constructor string
207 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530208 public static String getConstructorString(String name, YangPluginConfig pluginConfig) {
209 return getJavaDoc(CONSTRUCTOR, name, false, pluginConfig);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530210 }
211
212 /**
213 * Returns default constructor method string.
214 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530215 * @param name class name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530216 * @param modifierType modifier type
Bharat saraswal33dfa012016-05-17 19:59:16 +0530217 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530218 * @return default constructor string
219 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530220 public static String getDefaultConstructorString(String name, String modifierType,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530221 YangPluginConfig pluginConfig) {
Bharat saraswal33dfa012016-05-17 19:59:16 +0530222 return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false, pluginConfig)
223 + getDefaultConstructor(name, modifierType)
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530224 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530225 }
226
227 /**
228 * Returns check not null string.
229 *
230 * @param name attribute name
231 * @return check not null string
232 */
233 public static String getCheckNotNull(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530234 return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING + OPEN_PARENTHESIS + name + COMMA + SPACE + name
235 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530236 }
237
238 /**
239 * Returns build method string.
240 *
241 * @param name class name
242 * @return build string
243 */
244 public static String getBuildString(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530245 return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530246 }
247
248 /**
249 * Returns the getter method strings for class file.
250 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530251 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530252 * @param generatedJavaFiles for the type of java file being generated
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530253 * @return getter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530254 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530255 public static String getGetterForClass(JavaAttributeInfo attr, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530256
Vinod Kumar S38046502016-03-23 15:30:27 +0530257 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530258 String attributeName = attr.getAttributeName();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530259
260 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530261 return getGetter(attrQuaifiedType, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530262 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530263 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530264 return getGetter(listAttr, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530265 }
266
267 /**
268 * Returns getter for attribute.
269 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530270 * @param type return type
271 * @param name attribute name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530272 * @param generatedJavaFiles generated java files
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530273 * @return getter for attribute
274 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530275 public static String getGetter(String type, String name, int generatedJavaFiles) {
Bharat saraswalcad0e652016-05-26 23:48:38 +0530276 String ret = parseTypeForReturnValue(type);
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530277 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
janani b4a6711a2016-05-17 13:12:22 +0530278 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCapitalCase(name)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530279 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
280 EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION +
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530281 RETURN + SPACE + ret + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530282 } else {
283 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + name
284 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
285 EIGHT_SPACE_INDENTATION + RETURN + SPACE + name + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
286 + CLOSE_CURLY_BRACKET;
287 }
288
Bharat saraswal870c56f2016-02-20 21:57:16 +0530289 }
290
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530291 /*Provides string to return for type.*/
Bharat saraswalcad0e652016-05-26 23:48:38 +0530292 private static String parseTypeForReturnValue(String type) {
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530293 switch (type) {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530294 case BYTE:
295 case INT:
296 case SHORT:
297 case LONG:
298 return "0";
299 case BOOLEAN_DATA_TYPE:
300 return FALSE;
301 default:
302 return null;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530303 }
304 }
305
Bharat saraswal870c56f2016-02-20 21:57:16 +0530306 /**
307 * Returns the setter method strings for class file.
308 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530309 * @param attr attribute info
310 * @param className name of the class
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530311 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530312 * @return setter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530313 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530314 public static String getSetterForClass(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530315
Vinod Kumar S38046502016-03-23 15:30:27 +0530316 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530317 String attributeName = attr.getAttributeName();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530318 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530319 return getSetter(className, attributeName, attrQuaifiedType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530320 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530321 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530322 return getSetter(className, attributeName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530323 }
324
325 /**
326 * Returns setter for attribute.
327 *
328 * @param className class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530329 * @param name attribute name
330 * @param type return type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530331 * @return setter for attribute
332 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530333 private static String getSetter(String className, String name, String type, int generatedJavaFiles) {
334 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
335 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX
janani b4a6711a2016-05-17 13:12:22 +0530336 + getCapitalCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530337 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO +
338 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530339 } else if (generatedJavaFiles == GENERATE_EVENT_SUBJECT_CLASS) {
340 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + name + OPEN_PARENTHESIS + type + SPACE
341 + name + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
342 + THIS + PERIOD + name + SPACE + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE
343 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530344 } else {
345 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE +
346 name + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
Bharat saraswal33dfa012016-05-17 19:59:16 +0530347 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE
348 + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE
349 + THIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530350 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530351 }
352
353 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530354 * Returns the setter method strings for class file.
355 *
356 * @param attr attribute info
357 * @return setter method for class
358 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530359 public static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530360
Vinod Kumar S38046502016-03-23 15:30:27 +0530361 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530362 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530363 return getTypeDefSetter(attrQuaifiedType, attributeName);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530364 }
365
366 /**
367 * Returns type def's setter for attribute.
368 *
369 * @param type data type
370 * @param name attribute name
371 * @return setter for type def's attribute
372 */
373 private static String getTypeDefSetter(String type, String name) {
janani b4a6711a2016-05-17 13:12:22 +0530374 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(name)
Bharat saraswale2d51d62016-03-23 19:40:35 +0530375 + OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
376 + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE
377 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530378 }
379
380 /**
381 * Returns override string.
382 *
383 * @return override string
384 */
385 public static String getOverRideString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530386 return NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530387 }
388
389 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530390 * Returns the getter method strings for interface file.
391 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530392 * @param yangName name of the attribute
393 * @param returnType return type of attribute
394 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530395 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530396 * @return getter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530397 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530398 public static String getGetterForInterface(String yangName, String returnType, boolean isList,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530399 int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530400
401 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530402 return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530403 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530404 String listAttr = getListString() + returnType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530405 return getGetterInterfaceString(listAttr, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530406 }
407
408 /**
409 * Returns getter for attribute in interface.
410 *
411 * @param returnType return type
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530412 * @param yangName attribute name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530413 * @return getter for interface
414 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530415 private static String getGetterInterfaceString(String returnType, String yangName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530416 int generatedJavaFiles) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530417 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
janani b4a6711a2016-05-17 13:12:22 +0530418 return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCapitalCase(yangName)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530419 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
420 } else {
421 return FOUR_SPACE_INDENTATION + returnType + SPACE + yangName
422 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
423 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530424 }
425
426 /**
427 * Returns the setter method strings for interface file.
428 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530429 * @param attrName name of the attribute
430 * @param attrType return type of attribute
431 * @param className name of the java class being generated
432 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530433 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530434 * @return setter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530435 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530436 public static String getSetterForInterface(String attrName, String attrType, String className,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530437 boolean isList, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530438
439 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530440 return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530441 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530442 String listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530443 return getSetterInterfaceString(className, attrName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530444 }
445
446 /**
447 * Returns setter string for interface.
448 *
449 * @param className class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530450 * @param attrName attribute name
451 * @param attrType attribute type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530452 * @return setter string
453 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530454 private static String getSetterInterfaceString(String className, String attrName, String attrType,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530455 int generatedJavaFiles) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530456 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
457
janani b4a6711a2016-05-17 13:12:22 +0530458 return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(attrName)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530459 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
460 } else {
461 return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + attrName
462 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
463 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530464 }
465
466 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530467 * Returns list string.
468 *
469 * @return list string
470 */
471 private static String getListString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530472 return LIST + DIAMOND_OPEN_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530473 }
474
475 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530476 * Returns return type for attribute.
477 *
478 * @param attr attribute info
479 * @return return type
480 */
481 private static String getReturnType(JavaAttributeInfo attr) {
482
Bharat saraswale2d51d62016-03-23 19:40:35 +0530483 String returnType = EMPTY_STRING;
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530484 if (attr.isQualifiedName() && attr.getImportInfo().getPkgInfo() != null) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530485 returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
Vinod Kumar S38046502016-03-23 15:30:27 +0530486 }
487 returnType = returnType + attr.getImportInfo().getClassInfo();
488 return returnType;
489 }
490
491 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530492 * Returns the build method strings for interface file.
493 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530494 * @param yangName name of the interface
495 * @return build method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530496 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530497 public static String getBuildForInterface(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530498 return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
499 + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530500 }
501
502 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530503 * Returns constructor string for impl class.
504 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530505 * @param yangName class name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530506 * @param pluginConfig plugin configurations
Vinod Kumar S38046502016-03-23 15:30:27 +0530507 * @return constructor string
508 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530509 public static String getConstructorStart(String yangName, YangPluginConfig pluginConfig) {
Vinod Kumar S38046502016-03-23 15:30:27 +0530510
Bharat saraswal33dfa012016-05-17 19:59:16 +0530511 String javadoc = getConstructorString(yangName, pluginConfig);
512 String constructor =
513 FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + IMPL + OPEN_PARENTHESIS + yangName
514 + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT + CLOSE_PARENTHESIS + SPACE
515 + OPEN_CURLY_BRACKET
516 + NEW_LINE;
Vinod Kumar S38046502016-03-23 15:30:27 +0530517 return javadoc + constructor;
518 }
519
520 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530521 * Returns the constructor strings for class file.
522 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530523 * @param yangName name of the class
524 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530525 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530526 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530527 * @return constructor for class
528 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530529 public static String getConstructor(String yangName, JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530530 YangPluginConfig pluginConfig) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530531
janani b4a6711a2016-05-17 13:12:22 +0530532 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530533 String constructor;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530534
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530535 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
Bharat saraswal33dfa012016-05-17 19:59:16 +0530536 constructor =
537 EIGHT_SPACE_INDENTATION + THIS + PERIOD
538 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
539 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
540 + getCapitalCase(getCamelCase(attributeName, pluginConfig.getConflictResolver()))
541 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530542 } else {
Bharat saraswal33dfa012016-05-17 19:59:16 +0530543 constructor =
544 EIGHT_SPACE_INDENTATION + THIS + PERIOD
545 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
546 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD
547 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) +
548 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530549 }
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530550 return constructor;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530551 }
552
553 /**
Gaurav Agrawal56527662016-04-20 15:49:17 +0530554 * Returns the rpc strings for service interface.
555 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530556 * @param rpcName name of the rpc
557 * @param inputName name of input
558 * @param outputName name of output
Bharat saraswal33dfa012016-05-17 19:59:16 +0530559 * @param pluginConfig plugin configurations
Gaurav Agrawal56527662016-04-20 15:49:17 +0530560 * @return rpc method string
561 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530562 public static String getRpcServiceMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530563 YangPluginConfig pluginConfig) {
Gaurav Agrawal56527662016-04-20 15:49:17 +0530564
Bharat saraswal33dfa012016-05-17 19:59:16 +0530565 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswalcad0e652016-05-26 23:48:38 +0530566 if (!inputName.equals(EMPTY_STRING)) {
567 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530568 }
Bharat saraswalcad0e652016-05-26 23:48:38 +0530569 return FOUR_SPACE_INDENTATION + outputName + SPACE + rpcName + OPEN_PARENTHESIS + inputName
570 + CLOSE_PARENTHESIS + SEMI_COLAN;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530571 }
572
573 /**
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530574 * Returns the rpc strings for manager impl.
575 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530576 * @param rpcName name of the rpc
577 * @param inputName name of input
578 * @param outputName name of output
Bharat saraswal33dfa012016-05-17 19:59:16 +0530579 * @param pluginConfig plugin configurations
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530580 * @return rpc method string
581 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530582 public static String getRpcManagerMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530583 YangPluginConfig pluginConfig) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530584
Bharat saraswal33dfa012016-05-17 19:59:16 +0530585 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswalcad0e652016-05-26 23:48:38 +0530586 if (!inputName.equals(EMPTY_STRING)) {
587 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530588 }
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530589
Bharat saraswalcad0e652016-05-26 23:48:38 +0530590 String method =
591 getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName
592 + OPEN_PARENTHESIS + inputName + CLOSE_PARENTHESIS + SPACE
593 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530594 if (!outputName.contentEquals(VOID)) {
Bharat saraswalcad0e652016-05-26 23:48:38 +0530595 method += EIGHT_SPACE_INDENTATION + RETURN + SPACE + parseTypeForReturnValue(outputName) + SEMI_COLAN
596 + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530597 }
598 method += FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
599
600 return method;
601 }
602
603 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530604 * Returns the build method strings for class file.
605 *
606 * @param yangName class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530607 * @return build method string for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530608 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530609 public static String getBuild(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530610 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
611 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE
612 + yangName + IMPL + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
613 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530614 }
615
616 /**
617 * Returns the Default constructor strings for class file.
618 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530619 * @param name name of the class
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530620 * @param modifierType modifier type for default constructor
Bharat saraswal870c56f2016-02-20 21:57:16 +0530621 * @return Default constructor for class
622 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530623 private static String getDefaultConstructor(String name, String modifierType) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530624 return FOUR_SPACE_INDENTATION + modifierType + SPACE + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
625 + OPEN_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530626 }
627
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530628 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530629 * Returns to string method's open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530630 *
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530631 * @return string method's open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530632 */
633 public static String getToStringMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530634 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STRING_DATA_TYPE + SPACE + TO
635 + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
636 + EIGHT_SPACE_INDENTATION + RETURN + GOOGLE_MORE_OBJECT_METHOD_STRING + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530637 }
638
639 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530640 * Returns omit null value string.
641 *
642 * @return omit null value string
643 */
644 public static String getOmitNullValueString() {
645 return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING + NEW_LINE;
646 }
647
648 /**
649 * Returns to string method's close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530650 *
651 * @return to string method close string
652 */
653 public static String getToStringMethodClose() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530654 return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
655 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530656 }
657
658 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530659 * Returns to string method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530660 *
661 * @param attr attribute info
662 * @return to string method
663 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530664 public static String getToStringMethod(JavaAttributeInfo attr) {
665
janani b4a6711a2016-05-17 13:12:22 +0530666 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530667 return TWELVE_SPACE_INDENTATION + PERIOD + ADD_STRING + OPEN_PARENTHESIS + QUOTES + attributeName + QUOTES
668 + COMMA + SPACE + attributeName + CLOSE_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530669 }
670
671 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530672 * Returns from string method's open string.
673 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530674 * @param className name of the class
Bharat saraswal33dfa012016-05-17 19:59:16 +0530675 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530676 * @return from string method's open string
677 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530678 public static String getFromStringMethodSignature(String className, YangPluginConfig pluginConfig) {
679 return getJavaDoc(FROM_METHOD, className, false, pluginConfig) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
680 + STATIC + SPACE + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS
681 + STRING_DATA_TYPE + SPACE + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE
682 + OPEN_CURLY_BRACKET + NEW_LINE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530683 }
684
685 /**
686 * Return from string method's close string.
687 *
688 * @return from string method's close string
689 */
690 public static String getFromStringMethodClose() {
691 return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
692 CLOSE_CURLY_BRACKET + NEW_LINE;
693 }
694
695 /**
696 * Return from string method's body string.
697 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530698 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530699 * @param fromStringAttributeInfo attribute info for the from string
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530700 * wrapper type
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530701 * @return from string method's body string
702 */
703 public static String getFromStringMethod(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530704 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530705
706 return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
707 + getParsedSubString(attr, fromStringAttributeInfo) + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
708 + getReturnOfSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION + getCatchSubString()
709 + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
710 }
711
712 /**
713 * Returns sub string with try statement for union's from string method.
714 *
715 * @return sub string with try statement for union's from string method
716 */
717 public static String getTrySubString() {
718 return TRY + SPACE + OPEN_CURLY_BRACKET;
719 }
720
721 /**
722 * Returns sub string with return statement for union's from string method.
723 *
724 * @return sub string with return statement for union's from string method
725 */
726 public static String getReturnOfSubString() {
727 return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL + CLOSE_PARENTHESIS + SEMI_COLAN;
728 }
729
730 /**
731 * Returns sub string with catch statement for union's from string method.
732 *
733 * @return sub string with catch statement for union's from string method
734 */
735 public static String getCatchSubString() {
736 return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS + EXCEPTION + SPACE + EXCEPTION_VAR
737 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
738 }
739
740 /**
741 * Returns sub string with parsed statement for union's from string method.
742 *
743 * @param attr attribute info
744 * @return sub string with parsed statement for union's from string method
745 */
746 private static String getParsedSubString(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530747 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530748
749 String targetDataType = getReturnType(attr);
750 String parseFromStringMethod = getParseFromStringMethod(targetDataType,
751 fromStringAttributeInfo.getAttributeType());
752 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + parseFromStringMethod
753 + OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS;
754 }
755
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530756 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530757 * Returns hash code method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530758 *
Bharat saraswald9822e92016-04-05 15:13:44 +0530759 * @return hash code method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530760 */
761 public static String getHashCodeMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530762 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + INT + SPACE + HASH_CODE_STRING
763 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
764 + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530765 }
766
767 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530768 * Returns hash code methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530769 *
770 * @param hashcodeString hash code string
771 * @return to hash code method close string
772 */
773 public static String getHashCodeMethodClose(String hashcodeString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530774 hashcodeString = trimAtLast(hashcodeString, COMMA);
775 hashcodeString = trimAtLast(hashcodeString, SPACE);
776 return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
777 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530778 }
779
780 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530781 * Returns hash code method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530782 *
783 * @param attr attribute info
784 * @return hash code method
785 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530786 public static String getHashCodeMethod(JavaAttributeInfo attr) {
janani b4a6711a2016-05-17 13:12:22 +0530787 return attr.getAttributeName() + COMMA + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530788 }
789
790 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530791 * Returns equals method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530792 *
793 * @param className class name
Bharat saraswald9822e92016-04-05 15:13:44 +0530794 * @return equals method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530795 */
796 public static String getEqualsMethodOpen(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530797 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE + EQUALS_STRING
798 + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + OBJ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
799 + NEW_LINE + getEqualsMethodsCommonIfCondition() + getEqualsMethodsSpecificIfCondition(className);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530800 }
801
802 /**
803 * Returns equal methods if condition string.
804 *
805 * @return if condition string
806 */
807 private static String getEqualsMethodsCommonIfCondition() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530808 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + THIS + SPACE + EQUAL + EQUAL + SPACE + OBJ
809 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + SPACE
810 + TRUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530811 }
812
813 /**
814 * Returns if condition for specific class object in equals method.
815 *
816 * @param className class name
817 * @return if condition string
818 */
819 private static String getEqualsMethodsSpecificIfCondition(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530820 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + OBJ + INSTANCE_OF + className
821 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + className
822 + SPACE + OTHER + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS + className + CLOSE_PARENTHESIS + SPACE
823 + OBJ + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530824 }
825
826 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530827 * Returns equals methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530828 *
829 * @param equalMethodString equal method string
Bharat saraswald9822e92016-04-05 15:13:44 +0530830 * @return equals method close string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530831 */
832 public static String getEqualsMethodClose(String equalMethodString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530833 equalMethodString = trimAtLast(equalMethodString, AND);
834 equalMethodString = trimAtLast(equalMethodString, AND);
835 equalMethodString = trimAtLast(equalMethodString, SPACE);
836 equalMethodString = trimAtLast(equalMethodString, NEW_LINE) + SEMI_COLAN + NEW_LINE;
837 return equalMethodString + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
838 + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
839 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530840 }
841
842 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530843 * Returns equals method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530844 *
845 * @param attr attribute info
846 * @return equals method
847 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530848 public static String getEqualsMethod(JavaAttributeInfo attr) {
849
janani b4a6711a2016-05-17 13:12:22 +0530850 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530851 return SIXTEEN_SPACE_INDENTATION + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS
852 + attributeName + COMMA + SPACE + OTHER + PERIOD + attributeName + CLOSE_PARENTHESIS + SPACE + AND
853 + AND;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530854 }
855
856 /**
857 * Returns of method string for class.
858 *
859 * @param name class name
860 * @param attr attribute info
861 * @return of method string
862 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530863 public static String getOfMethod(String name, JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530864
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530865 String attrQualifiedType = getReturnType(attr);
866
Bharat saraswale2d51d62016-03-23 19:40:35 +0530867 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name + SPACE + OF + OPEN_PARENTHESIS
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530868 + attrQualifiedType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Bharat saraswale2d51d62016-03-23 19:40:35 +0530869 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name + OPEN_PARENTHESIS + VALUE
870 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530871 }
872
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530873 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530874 * Returns of method's string and java doc for special type.
875 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530876 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530877 * @param generatedJavaClassName class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530878 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530879 * @return of method's string and java doc for special type
880 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530881 public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530882 YangPluginConfig pluginConfig) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530883
884 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530885 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530886
Bharat saraswal33dfa012016-05-17 19:59:16 +0530887 return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530888 + getOfMethodString(attrType, generatedJavaClassName);
889 }
890
891 /**
892 * Returns of method's string.
893 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530894 * @param type data type
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530895 * @param className class name
896 * @return of method's string
897 */
898 private static String getOfMethodString(String type, String className) {
899
900 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + className + SPACE + OF + OPEN_PARENTHESIS
901 + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
902 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + className + OPEN_PARENTHESIS + VALUE
903 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
904 }
905
906 /**
907 * Returns string and java doc for constructor of type class.
908 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530909 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530910 * @param generatedJavaClassName class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530911 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530912 * @return string and java doc for constructor of type class
913 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530914 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530915 String generatedJavaClassName,
916 YangPluginConfig pluginConfig) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530917
918 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530919 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530920
Bharat saraswal33dfa012016-05-17 19:59:16 +0530921 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530922 + getTypeConstructorString(attrType, attrName, generatedJavaClassName);
923 }
924
925 /**
926 * Returns type constructor string.
927 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530928 * @param type data type
929 * @param name attribute name
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530930 * @param className class name
931 * @return type constructor string
932 */
933 private static String getTypeConstructorString(String type, String name, String className) {
934
935 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
936 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
937 + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
938 + CLOSE_CURLY_BRACKET;
939 }
940
941 /**
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530942 * Returns implementation of add augmentation method of AugmentationHolder class.
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530943 *
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530944 * @return implementation of add augmentation method of AugmentationHolder class
945 */
946 public static String getAddAugmentInfoMethodImpl() {
947 String method = FOUR_SPACE_INDENTATION;
948 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + ADD_STRING
949 + AUGMENTATION + OPEN_PARENTHESIS + AUGMENTED_INFO + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
950 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST
951 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + ADD_STRING + OPEN_PARENTHESIS + VALUE
952 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
953
954 return method;
955 }
956
957 /**
958 * Returns implementation of get augment info list method of AugmentationHolder class.
959 *
960 * @return implementation of get augment info list method of AugmentationHolder class
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530961 */
962 public static String getAugmentInfoListImpl() {
963
964 String method = FOUR_SPACE_INDENTATION;
965 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + LIST + DIAMOND_OPEN_BRACKET
966 + AUGMENTED_INFO + DIAMOND_CLOSE_BRACKET + SPACE + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST
967 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
968 + RETURN + SPACE + getSmallCase(AUGMENTED_INFO) + LIST + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
969 + CLOSE_CURLY_BRACKET;
970 return method;
971 }
972
973 /**
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530974 * Returns implementation of remove augmentation method of AugmentationHolder class.
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530975 *
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530976 * @return implementation of remove augmentation method of AugmentationHolder class
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530977 */
978 public static String getRemoveAugmentationImpl() {
979 String method = FOUR_SPACE_INDENTATION;
980 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + "remove"
981 + AUGMENTATION + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
982 + EIGHT_SPACE_INDENTATION + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST + OPEN_PARENTHESIS
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530983 + CLOSE_PARENTHESIS + PERIOD + CLEAR + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530984 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
985 return method;
986 }
987
Bharat saraswald72411a2016-04-19 01:00:16 +0530988 /**
989 * Returns enum's constructor.
990 *
991 * @param className enum's class name
992 * @return enum's constructor
993 */
994 public static String getEnumsConstrcutor(String className) {
995 return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
996 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
997 + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
998 }
Bharat saraswalc0e04842016-05-12 13:16:57 +0530999
1000 /**
1001 * Returns of method for enum class.
1002 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301003 * @param className class name
1004 * @param attr java attribute
1005 * @param enumMap enum's sets map
1006 * @param enumList enum's sets list
Bharat saraswal33dfa012016-05-17 19:59:16 +05301007 * @param pluginConfig plugin configurations
Bharat saraswalc0e04842016-05-12 13:16:57 +05301008 * @return of method
1009 */
1010 public static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301011 Map<String, Integer> enumMap, List<String> enumList,
1012 YangPluginConfig pluginConfig) {
Bharat saraswalc0e04842016-05-12 13:16:57 +05301013 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +05301014 String attrName = attr.getAttributeName();
Bharat saraswalc0e04842016-05-12 13:16:57 +05301015
janani b4a6711a2016-05-17 13:12:22 +05301016 String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + getCapitalCase(className) + SPACE
1017 + OF + OPEN_PARENTHESIS
Bharat saraswalc0e04842016-05-12 13:16:57 +05301018 + attrType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1019 + EIGHT_SPACE_INDENTATION + SWITCH + SPACE + OPEN_PARENTHESIS + VALUE
1020 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1021 int value = 0;
1022 for (String str : enumList) {
1023
1024 value = enumMap.get(str);
1025 method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value + COLAN + NEW_LINE
janani b4a6711a2016-05-17 13:12:22 +05301026 + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + getCapitalCase(className) + PERIOD
Bharat saraswalc0e04842016-05-12 13:16:57 +05301027 + str + SEMI_COLAN + NEW_LINE;
1028 }
1029 method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLAN + NEW_LINE + SIXTEEN_SPACE_INDENTATION
1030 + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1031 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1032
Bharat saraswal33dfa012016-05-17 19:59:16 +05301033 return getJavaDoc(OF_METHOD, getCapitalCase(className) + " for type " + attrName, false, pluginConfig)
1034 + method;
Bharat saraswalc0e04842016-05-12 13:16:57 +05301035 }
Bharat saraswal33dfa012016-05-17 19:59:16 +05301036
1037 /**
1038 * Returns activate method string.
1039 *
1040 * @return activate method string
1041 */
1042 public static String addActivateMethod() {
1043 return FOUR_SPACE_INDENTATION + ACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
1044 + PUBLIC + SPACE + VOID + SPACE + ACTIVATE + OPEN_PARENTHESIS
1045 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
1046 + NEW_LINE + EIGHT_SPACE_INDENTATION
1047 + YANG_UTILS_TODO
1048 + NEW_LINE + EIGHT_SPACE_INDENTATION
1049 + STARTED_LOG_INFO + FOUR_SPACE_INDENTATION
1050 + CLOSE_CURLY_BRACKET + NEW_LINE;
1051 }
1052
1053 /**
1054 * Returns deactivate method string.
1055 *
1056 * @return deactivate method string
1057 */
1058 public static String addDeActivateMethod() {
1059 return NEW_LINE + FOUR_SPACE_INDENTATION + DEACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
1060 + PUBLIC + SPACE + VOID + SPACE + DEACTIVATE + OPEN_PARENTHESIS
1061 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
1062 + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION
1063 + STOPPED_LOG_INFO + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1064 }
1065
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301066 /**
1067 * Returns from string method parsed string.
1068 *
1069 * @param targetDataType target data type
1070 * @param yangType YANG type
1071 * @return parsed string
1072 */
1073 public static String getParseFromStringMethod(String targetDataType, YangType<?> yangType) {
1074
1075 YangDataTypes type = yangType.getDataType();
1076
1077 switch (type) {
1078 case INT8:
1079 return BYTE_WRAPPER + PERIOD + PARSE_BYTE;
1080 case INT16:
1081 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1082 case INT32:
1083 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1084 case INT64:
1085 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1086 case UINT8:
1087 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1088 case UINT16:
1089 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1090 case UINT32:
1091 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1092 case UINT64:
1093 return NEW + SPACE + BIG_INTEGER;
1094 case STRING:
1095 return EMPTY_STRING;
1096 case EMPTY:
1097 case BOOLEAN:
1098 return BOOLEAN_WRAPPER + PERIOD + PARSE_BOOLEAN;
1099 case DECIMAL64:
1100 case BITS:
1101 case BINARY:
1102 case UNION:
1103 case ENUMERATION:
1104 case DERIVED:
1105 return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
1106 default:
1107 throw new TranslatorException("given data type is not supported.");
1108 }
1109 }
Bharat saraswal870c56f2016-02-20 21:57:16 +05301110}