blob: d9f22edbbc8ee1fb9adc517beb6e8c5cf7a426ad [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;
21
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053022import org.onosproject.yangutils.datamodel.YangNode;
23import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
24import org.onosproject.yangutils.translator.exception.TranslatorException;
Vinod Kumar S38046502016-03-23 15:30:27 +053025import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053026import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaAugment;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053027import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
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;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053031import static org.onosproject.yangutils.translator.tojava.utils.AttributesJavaDataType.getParseFromStringMethod;
Bharat saraswale2d51d62016-03-23 19:40:35 +053032import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
janani b4a6711a2016-05-17 13:12:22 +053033import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCapitalCase;
Bharat saraswal2f11f652016-03-25 18:19:46 +053034import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getSmallCase;
Bharat saraswal33dfa012016-05-17 19:59:16 +053035import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE;
36import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE_ANNOTATION;
Bharat saraswale2d51d62016-03-23 19:40:35 +053037import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
38import static org.onosproject.yangutils.utils.UtilConstants.AND;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053039import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTABLE;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053040import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTATION;
41import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +053042import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
43import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
44import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053045import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
Bharat saraswalc0e04842016-05-12 13:16:57 +053046import static org.onosproject.yangutils.utils.UtilConstants.CASE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053047import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +053048import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053049import static org.onosproject.yangutils.utils.UtilConstants.CLEAR;
Bharat saraswale2d51d62016-03-23 19:40:35 +053050import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
51import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
Bharat saraswalc0e04842016-05-12 13:16:57 +053052import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
Bharat saraswale2d51d62016-03-23 19:40:35 +053053import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
Bharat saraswal33dfa012016-05-17 19:59:16 +053054import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE;
55import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE_ANNOTATION;
Bharat saraswalc0e04842016-05-12 13:16:57 +053056import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
Bharat saraswale2d51d62016-03-23 19:40:35 +053057import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
58import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
59import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
60import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
61import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
62import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053063import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
64import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
Bharat saraswale2d51d62016-03-23 19:40:35 +053065import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
66import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053067import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
68import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
Bharat saraswale2d51d62016-03-23 19:40:35 +053069import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
70import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
71import static org.onosproject.yangutils.utils.UtilConstants.HASH;
72import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
73import static org.onosproject.yangutils.utils.UtilConstants.IF;
74import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
75import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
76import static org.onosproject.yangutils.utils.UtilConstants.INT;
77import static org.onosproject.yangutils.utils.UtilConstants.LIST;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053078import static org.onosproject.yangutils.utils.UtilConstants.LONG;
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;
91import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
92import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
93import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
94import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
Gaurav Agrawal56527662016-04-20 15:49:17 +053095import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
Bharat saraswale2d51d62016-03-23 19:40:35 +053096import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
97import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053098import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
Bharat saraswale2d51d62016-03-23 19:40:35 +053099import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
100import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530101import static org.onosproject.yangutils.utils.UtilConstants.STARTED_LOG_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530102import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530103import static org.onosproject.yangutils.utils.UtilConstants.STOPPED_LOG_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530104import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
105import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530106import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530107import static org.onosproject.yangutils.utils.UtilConstants.THIS;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530108import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530109import static org.onosproject.yangutils.utils.UtilConstants.TO;
110import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530111import static org.onosproject.yangutils.utils.UtilConstants.TRY;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530112import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
113import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
114import static org.onosproject.yangutils.utils.UtilConstants.VOID;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530115import static org.onosproject.yangutils.utils.UtilConstants.YANG_UTILS_TODO;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530116import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530117import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
118import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
119import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530120import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.FROM_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530121import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530122import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.MANAGER_SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530123import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530124import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530125import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530126import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530127
128/**
Bharat saraswald9822e92016-04-05 15:13:44 +0530129 * Represents generator for methods of generated files based on the file type.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530130 */
131public final class MethodsGenerator {
132
Bharat saraswal870c56f2016-02-20 21:57:16 +0530133 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530134 * Creates an instance of method generator.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530135 */
136 private MethodsGenerator() {
137 }
138
139 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530140 * Returns the methods strings for builder interface.
141 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530142 * @param name attribute name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530143 * @param pluginConfig plugin configurations
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530144 * @return method string for builder interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530145 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530146 public static String parseBuilderInterfaceBuildMethodString(String name, YangPluginConfig pluginConfig) {
147 return getJavaDoc(BUILD_METHOD, name, false, pluginConfig) + getBuildForInterface(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530148 }
149
150 /**
151 * Returns getter string.
152 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530153 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530154 * @param generatedJavaFiles generated java files
Bharat saraswal33dfa012016-05-17 19:59:16 +0530155 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530156 * @return getter string
157 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530158 public static String getGetterString(JavaAttributeInfo attr, int generatedJavaFiles,
159 YangPluginConfig pluginConfig) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530160
Vinod Kumar S38046502016-03-23 15:30:27 +0530161 String returnType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530162 String attributeName = attr.getAttributeName();
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530163
Bharat saraswal33dfa012016-05-17 19:59:16 +0530164 return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr(), pluginConfig)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530165 + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530166 }
167
168 /**
169 * Returns setter string.
170 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530171 * @param attr attribute info
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530172 * @param className java class name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530173 * @param generatedJavaFiles generated java files
Bharat saraswal33dfa012016-05-17 19:59:16 +0530174 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530175 * @return setter string
176 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530177 public static String getSetterString(JavaAttributeInfo attr, String className, int generatedJavaFiles,
178 YangPluginConfig pluginConfig) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530179
Vinod Kumar S38046502016-03-23 15:30:27 +0530180 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530181 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530182 JavaDocGen.JavaDocType type;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530183 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530184 type = MANAGER_SETTER_METHOD;
185 } else {
186 type = SETTER_METHOD;
187 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530188
Bharat saraswal33dfa012016-05-17 19:59:16 +0530189 return getJavaDoc(type, attributeName, attr.isListAttr(), pluginConfig)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530190 + getSetterForInterface(attributeName, attrType, className, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530191 }
192
193 /**
194 * Returns constructor method string.
195 *
196 * @param name class name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530197 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530198 * @return constructor string
199 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530200 public static String getConstructorString(String name, YangPluginConfig pluginConfig) {
201 return getJavaDoc(CONSTRUCTOR, name, false, pluginConfig);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530202 }
203
204 /**
205 * Returns default constructor method string.
206 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530207 * @param name class name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530208 * @param modifierType modifier type
Bharat saraswal33dfa012016-05-17 19:59:16 +0530209 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530210 * @return default constructor string
211 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530212 public static String getDefaultConstructorString(String name, String modifierType,
213 YangPluginConfig pluginConfig) {
214 return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false, pluginConfig)
215 + getDefaultConstructor(name, modifierType)
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530216 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530217 }
218
219 /**
220 * Returns check not null string.
221 *
222 * @param name attribute name
223 * @return check not null string
224 */
225 public static String getCheckNotNull(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530226 return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING + OPEN_PARENTHESIS + name + COMMA + SPACE + name
227 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530228 }
229
230 /**
231 * Returns build method string.
232 *
233 * @param name class name
234 * @return build string
235 */
236 public static String getBuildString(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530237 return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530238 }
239
240 /**
241 * Returns the getter method strings for class file.
242 *
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530243 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530244 * @param generatedJavaFiles for the type of java file being generated
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530245 * @return getter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530246 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530247 public static String getGetterForClass(JavaAttributeInfo attr, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530248
Vinod Kumar S38046502016-03-23 15:30:27 +0530249 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530250 String attributeName = attr.getAttributeName();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530251
252 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530253 return getGetter(attrQuaifiedType, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530254 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530255 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530256 return getGetter(listAttr, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530257 }
258
259 /**
260 * Returns getter for attribute.
261 *
262 * @param type return type
263 * @param name attribute name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530264 * @param generatedJavaFiles generated java files
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530265 * @return getter for attribute
266 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530267 public static String getGetter(String type, String name, int generatedJavaFiles) {
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530268 String ret = parseTypeForGetter(type);
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530269 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
janani b4a6711a2016-05-17 13:12:22 +0530270 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCapitalCase(name)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530271 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
272 EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION +
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530273 RETURN + SPACE + ret + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530274 } else {
275 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + name
276 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
277 EIGHT_SPACE_INDENTATION + RETURN + SPACE + name + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
278 + CLOSE_CURLY_BRACKET;
279 }
280
Bharat saraswal870c56f2016-02-20 21:57:16 +0530281 }
282
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530283 /*Provides string to return for type.*/
284 private static String parseTypeForGetter(String type) {
285 switch (type) {
286 case BYTE:
287 case INT:
288 case SHORT:
289 case LONG:
290 return "0";
291 case BOOLEAN_DATA_TYPE:
292 return FALSE;
293 default:
294 return null;
295 }
296 }
297
Bharat saraswal870c56f2016-02-20 21:57:16 +0530298 /**
299 * Returns the setter method strings for class file.
300 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530301 * @param attr attribute info
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530302 * @param className name of the class
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530303 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530304 * @return setter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530305 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530306 public static String getSetterForClass(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530307
Vinod Kumar S38046502016-03-23 15:30:27 +0530308 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530309 String attributeName = attr.getAttributeName();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530310 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530311 return getSetter(className, attributeName, attrQuaifiedType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530312 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530313 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530314 return getSetter(className, attributeName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530315 }
316
317 /**
318 * Returns setter for attribute.
319 *
320 * @param className class name
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530321 * @param name attribute name
322 * @param type return type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530323 * @return setter for attribute
324 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530325 private static String getSetter(String className, String name, String type, int generatedJavaFiles) {
326 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
327 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX
janani b4a6711a2016-05-17 13:12:22 +0530328 + getCapitalCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530329 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO +
330 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530331 } else if (generatedJavaFiles == GENERATE_EVENT_SUBJECT_CLASS) {
332 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + name + OPEN_PARENTHESIS + type + SPACE
333 + name + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
334 + THIS + PERIOD + name + SPACE + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE
335 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530336 } else {
337 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE +
338 name + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
Bharat saraswal33dfa012016-05-17 19:59:16 +0530339 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE
340 + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE
341 + THIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530342 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530343 }
344
345 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530346 * Returns the setter method strings for class file.
347 *
348 * @param attr attribute info
349 * @return setter method for class
350 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530351 public static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530352
Vinod Kumar S38046502016-03-23 15:30:27 +0530353 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530354 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530355 return getTypeDefSetter(attrQuaifiedType, attributeName);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530356 }
357
358 /**
359 * Returns type def's setter for attribute.
360 *
361 * @param type data type
362 * @param name attribute name
363 * @return setter for type def's attribute
364 */
365 private static String getTypeDefSetter(String type, String name) {
janani b4a6711a2016-05-17 13:12:22 +0530366 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(name)
Bharat saraswale2d51d62016-03-23 19:40:35 +0530367 + OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
368 + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE
369 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530370 }
371
372 /**
373 * Returns override string.
374 *
375 * @return override string
376 */
377 public static String getOverRideString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530378 return NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530379 }
380
381 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530382 * Returns the getter method strings for interface file.
383 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530384 * @param yangName name of the attribute
Bharat saraswal870c56f2016-02-20 21:57:16 +0530385 * @param returnType return type of attribute
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530386 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530387 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530388 * @return getter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530389 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530390 public static String getGetterForInterface(String yangName, String returnType, boolean isList,
391 int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530392
393 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530394 return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530395 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530396 String listAttr = getListString() + returnType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530397 return getGetterInterfaceString(listAttr, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530398 }
399
400 /**
401 * Returns getter for attribute in interface.
402 *
403 * @param returnType return type
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530404 * @param yangName attribute name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530405 * @return getter for interface
406 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530407 private static String getGetterInterfaceString(String returnType, String yangName,
408 int generatedJavaFiles) {
409 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
janani b4a6711a2016-05-17 13:12:22 +0530410 return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCapitalCase(yangName)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530411 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
412 } else {
413 return FOUR_SPACE_INDENTATION + returnType + SPACE + yangName
414 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
415 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530416 }
417
418 /**
419 * Returns the setter method strings for interface file.
420 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530421 * @param attrName name of the attribute
422 * @param attrType return type of attribute
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530423 * @param className name of the java class being generated
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530424 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530425 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530426 * @return setter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530427 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530428 public static String getSetterForInterface(String attrName, String attrType, String className,
429 boolean isList, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530430
431 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530432 return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530433 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530434 String listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530435 return getSetterInterfaceString(className, attrName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530436 }
437
438 /**
439 * Returns setter string for interface.
440 *
441 * @param className class name
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530442 * @param attrName attribute name
443 * @param attrType attribute type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530444 * @return setter string
445 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530446 private static String getSetterInterfaceString(String className, String attrName, String attrType,
447 int generatedJavaFiles) {
448 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
449
janani b4a6711a2016-05-17 13:12:22 +0530450 return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(attrName)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530451 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
452 } else {
453 return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + attrName
454 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
455 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530456 }
457
458 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530459 * Returns list string.
460 *
461 * @return list string
462 */
463 private static String getListString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530464 return LIST + DIAMOND_OPEN_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530465 }
466
467 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530468 * Returns return type for attribute.
469 *
470 * @param attr attribute info
471 * @return return type
472 */
473 private static String getReturnType(JavaAttributeInfo attr) {
474
Bharat saraswale2d51d62016-03-23 19:40:35 +0530475 String returnType = EMPTY_STRING;
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530476 if (attr.isQualifiedName() && attr.getImportInfo().getPkgInfo() != null) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530477 returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
Vinod Kumar S38046502016-03-23 15:30:27 +0530478 }
479 returnType = returnType + attr.getImportInfo().getClassInfo();
480 return returnType;
481 }
482
483 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530484 * Returns the build method strings for interface file.
485 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530486 * @param yangName name of the interface
487 * @return build method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530488 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530489 public static String getBuildForInterface(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530490 return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
491 + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530492 }
493
494 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530495 * Returns constructor string for impl class.
496 *
497 * @param yangName class name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530498 * @param pluginConfig plugin configurations
Vinod Kumar S38046502016-03-23 15:30:27 +0530499 * @return constructor string
500 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530501 public static String getConstructorStart(String yangName, YangPluginConfig pluginConfig) {
Vinod Kumar S38046502016-03-23 15:30:27 +0530502
Bharat saraswal33dfa012016-05-17 19:59:16 +0530503 String javadoc = getConstructorString(yangName, pluginConfig);
504 String constructor =
505 FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + IMPL + OPEN_PARENTHESIS + yangName
506 + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT + CLOSE_PARENTHESIS + SPACE
507 + OPEN_CURLY_BRACKET
508 + NEW_LINE;
Vinod Kumar S38046502016-03-23 15:30:27 +0530509 return javadoc + constructor;
510 }
511
512 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530513 * Returns the constructor strings for class file.
514 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530515 * @param yangName name of the class
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530516 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530517 * @param generatedJavaFiles generated java files
Bharat saraswal33dfa012016-05-17 19:59:16 +0530518 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530519 * @return constructor for class
520 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530521 public static String getConstructor(String yangName, JavaAttributeInfo attr, int generatedJavaFiles,
522 YangPluginConfig pluginConfig) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530523
janani b4a6711a2016-05-17 13:12:22 +0530524 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530525 String constructor;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530526
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530527 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
Bharat saraswal33dfa012016-05-17 19:59:16 +0530528 constructor =
529 EIGHT_SPACE_INDENTATION + THIS + PERIOD
530 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
531 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
532 + getCapitalCase(getCamelCase(attributeName, pluginConfig.getConflictResolver()))
533 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530534 } else {
Bharat saraswal33dfa012016-05-17 19:59:16 +0530535 constructor =
536 EIGHT_SPACE_INDENTATION + THIS + PERIOD
537 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
538 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD
539 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) +
540 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530541 }
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530542 return constructor;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530543 }
544
545 /**
Gaurav Agrawal56527662016-04-20 15:49:17 +0530546 * Returns the rpc strings for service interface.
547 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530548 * @param rpcName name of the rpc
549 * @param inputName name of input
Gaurav Agrawal56527662016-04-20 15:49:17 +0530550 * @param outputName name of output
Bharat saraswal33dfa012016-05-17 19:59:16 +0530551 * @param pluginConfig plugin configurations
Gaurav Agrawal56527662016-04-20 15:49:17 +0530552 * @return rpc method string
553 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530554 public static String getRpcServiceMethod(String rpcName, String inputName, String outputName,
555 YangPluginConfig pluginConfig) {
Gaurav Agrawal56527662016-04-20 15:49:17 +0530556
Bharat saraswal33dfa012016-05-17 19:59:16 +0530557 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
janani b4a6711a2016-05-17 13:12:22 +0530558 inputName = getCapitalCase(inputName);
Bharat saraswalc0e04842016-05-12 13:16:57 +0530559 if (!outputName.equals(VOID)) {
janani b4a6711a2016-05-17 13:12:22 +0530560 outputName = getCapitalCase(outputName);
Bharat saraswalc0e04842016-05-12 13:16:57 +0530561 }
562 return FOUR_SPACE_INDENTATION + outputName + SPACE + rpcName + OPEN_PARENTHESIS + inputName + SPACE
563 + RPC_INPUT_VAR_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530564 }
565
566 /**
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530567 * Returns the rpc strings for manager impl.
568 *
569 * @param rpcName name of the rpc
570 * @param inputName name of input
571 * @param outputName name of output
Bharat saraswal33dfa012016-05-17 19:59:16 +0530572 * @param pluginConfig plugin configurations
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530573 * @return rpc method string
574 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530575 public static String getRpcManagerMethod(String rpcName, String inputName, String outputName,
576 YangPluginConfig pluginConfig) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530577
Bharat saraswal33dfa012016-05-17 19:59:16 +0530578 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
janani b4a6711a2016-05-17 13:12:22 +0530579 inputName = getCapitalCase(inputName);
Bharat saraswalc0e04842016-05-12 13:16:57 +0530580 if (!outputName.equals(VOID)) {
janani b4a6711a2016-05-17 13:12:22 +0530581 outputName = getCapitalCase(outputName);
Bharat saraswalc0e04842016-05-12 13:16:57 +0530582 }
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530583
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530584 String method = getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName
585 + OPEN_PARENTHESIS + inputName + SPACE + RPC_INPUT_VAR_NAME + CLOSE_PARENTHESIS + SPACE
586 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530587 if (!outputName.contentEquals(VOID)) {
588 method += EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE;
589 }
590 method += FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
591
592 return method;
593 }
594
595 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530596 * Returns the build method strings for class file.
597 *
598 * @param yangName class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530599 * @return build method string for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530600 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530601 public static String getBuild(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530602 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
603 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE
604 + yangName + IMPL + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
605 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530606 }
607
608 /**
609 * Returns the Default constructor strings for class file.
610 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530611 * @param name name of the class
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530612 * @param modifierType modifier type for default constructor
Bharat saraswal870c56f2016-02-20 21:57:16 +0530613 * @return Default constructor for class
614 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530615 private static String getDefaultConstructor(String name, String modifierType) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530616 return FOUR_SPACE_INDENTATION + modifierType + SPACE + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
617 + OPEN_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530618 }
619
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530620 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530621 * Returns to string method's open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530622 *
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530623 * @return string method's open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530624 */
625 public static String getToStringMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530626 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STRING_DATA_TYPE + SPACE + TO
627 + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
628 + EIGHT_SPACE_INDENTATION + RETURN + GOOGLE_MORE_OBJECT_METHOD_STRING + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530629 }
630
631 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530632 * Returns omit null value string.
633 *
634 * @return omit null value string
635 */
636 public static String getOmitNullValueString() {
637 return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING + NEW_LINE;
638 }
639
640 /**
641 * Returns to string method's close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530642 *
643 * @return to string method close string
644 */
645 public static String getToStringMethodClose() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530646 return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
647 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530648 }
649
650 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530651 * Returns to string method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530652 *
653 * @param attr attribute info
654 * @return to string method
655 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530656 public static String getToStringMethod(JavaAttributeInfo attr) {
657
janani b4a6711a2016-05-17 13:12:22 +0530658 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530659 return TWELVE_SPACE_INDENTATION + PERIOD + ADD_STRING + OPEN_PARENTHESIS + QUOTES + attributeName + QUOTES
660 + COMMA + SPACE + attributeName + CLOSE_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530661 }
662
663 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530664 * Returns from string method's open string.
665 *
666 * @param className name of the class
Bharat saraswal33dfa012016-05-17 19:59:16 +0530667 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530668 * @return from string method's open string
669 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530670 public static String getFromStringMethodSignature(String className, YangPluginConfig pluginConfig) {
671 return getJavaDoc(FROM_METHOD, className, false, pluginConfig) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
672 + STATIC + SPACE + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS
673 + STRING_DATA_TYPE + SPACE + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE
674 + OPEN_CURLY_BRACKET + NEW_LINE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530675 }
676
677 /**
678 * Return from string method's close string.
679 *
680 * @return from string method's close string
681 */
682 public static String getFromStringMethodClose() {
683 return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
684 CLOSE_CURLY_BRACKET + NEW_LINE;
685 }
686
687 /**
688 * Return from string method's body string.
689 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530690 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530691 * @param fromStringAttributeInfo attribute info for the from string
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530692 * wrapper type
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530693 * @return from string method's body string
694 */
695 public static String getFromStringMethod(JavaAttributeInfo attr,
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530696 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530697
698 return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
699 + getParsedSubString(attr, fromStringAttributeInfo) + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
700 + getReturnOfSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION + getCatchSubString()
701 + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
702 }
703
704 /**
705 * Returns sub string with try statement for union's from string method.
706 *
707 * @return sub string with try statement for union's from string method
708 */
709 public static String getTrySubString() {
710 return TRY + SPACE + OPEN_CURLY_BRACKET;
711 }
712
713 /**
714 * Returns sub string with return statement for union's from string method.
715 *
716 * @return sub string with return statement for union's from string method
717 */
718 public static String getReturnOfSubString() {
719 return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL + CLOSE_PARENTHESIS + SEMI_COLAN;
720 }
721
722 /**
723 * Returns sub string with catch statement for union's from string method.
724 *
725 * @return sub string with catch statement for union's from string method
726 */
727 public static String getCatchSubString() {
728 return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS + EXCEPTION + SPACE + EXCEPTION_VAR
729 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
730 }
731
732 /**
733 * Returns sub string with parsed statement for union's from string method.
734 *
735 * @param attr attribute info
736 * @return sub string with parsed statement for union's from string method
737 */
738 private static String getParsedSubString(JavaAttributeInfo attr,
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530739 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530740
741 String targetDataType = getReturnType(attr);
742 String parseFromStringMethod = getParseFromStringMethod(targetDataType,
743 fromStringAttributeInfo.getAttributeType());
744 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + parseFromStringMethod
745 + OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS;
746 }
747
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530748 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530749 * Returns hash code method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530750 *
Bharat saraswald9822e92016-04-05 15:13:44 +0530751 * @return hash code method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530752 */
753 public static String getHashCodeMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530754 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + INT + SPACE + HASH_CODE_STRING
755 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
756 + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530757 }
758
759 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530760 * Returns hash code methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530761 *
762 * @param hashcodeString hash code string
763 * @return to hash code method close string
764 */
765 public static String getHashCodeMethodClose(String hashcodeString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530766 hashcodeString = trimAtLast(hashcodeString, COMMA);
767 hashcodeString = trimAtLast(hashcodeString, SPACE);
768 return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
769 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530770 }
771
772 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530773 * Returns hash code method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530774 *
775 * @param attr attribute info
776 * @return hash code method
777 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530778 public static String getHashCodeMethod(JavaAttributeInfo attr) {
janani b4a6711a2016-05-17 13:12:22 +0530779 return attr.getAttributeName() + COMMA + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530780 }
781
782 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530783 * Returns equals method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530784 *
785 * @param className class name
Bharat saraswald9822e92016-04-05 15:13:44 +0530786 * @return equals method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530787 */
788 public static String getEqualsMethodOpen(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530789 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE + EQUALS_STRING
790 + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + OBJ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
791 + NEW_LINE + getEqualsMethodsCommonIfCondition() + getEqualsMethodsSpecificIfCondition(className);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530792 }
793
794 /**
795 * Returns equal methods if condition string.
796 *
797 * @return if condition string
798 */
799 private static String getEqualsMethodsCommonIfCondition() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530800 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + THIS + SPACE + EQUAL + EQUAL + SPACE + OBJ
801 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + SPACE
802 + TRUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530803 }
804
805 /**
806 * Returns if condition for specific class object in equals method.
807 *
808 * @param className class name
809 * @return if condition string
810 */
811 private static String getEqualsMethodsSpecificIfCondition(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530812 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + OBJ + INSTANCE_OF + className
813 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + className
814 + SPACE + OTHER + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS + className + CLOSE_PARENTHESIS + SPACE
815 + OBJ + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530816 }
817
818 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530819 * Returns equals methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530820 *
821 * @param equalMethodString equal method string
Bharat saraswald9822e92016-04-05 15:13:44 +0530822 * @return equals method close string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530823 */
824 public static String getEqualsMethodClose(String equalMethodString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530825 equalMethodString = trimAtLast(equalMethodString, AND);
826 equalMethodString = trimAtLast(equalMethodString, AND);
827 equalMethodString = trimAtLast(equalMethodString, SPACE);
828 equalMethodString = trimAtLast(equalMethodString, NEW_LINE) + SEMI_COLAN + NEW_LINE;
829 return equalMethodString + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
830 + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
831 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530832 }
833
834 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530835 * Returns equals method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530836 *
837 * @param attr attribute info
838 * @return equals method
839 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530840 public static String getEqualsMethod(JavaAttributeInfo attr) {
841
janani b4a6711a2016-05-17 13:12:22 +0530842 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530843 return SIXTEEN_SPACE_INDENTATION + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS
844 + attributeName + COMMA + SPACE + OTHER + PERIOD + attributeName + CLOSE_PARENTHESIS + SPACE + AND
845 + AND;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530846 }
847
848 /**
849 * Returns of method string for class.
850 *
851 * @param name class name
852 * @param attr attribute info
853 * @return of method string
854 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530855 public static String getOfMethod(String name, JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530856
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530857 String attrQualifiedType = getReturnType(attr);
858
Bharat saraswale2d51d62016-03-23 19:40:35 +0530859 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name + SPACE + OF + OPEN_PARENTHESIS
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530860 + attrQualifiedType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Bharat saraswale2d51d62016-03-23 19:40:35 +0530861 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name + OPEN_PARENTHESIS + VALUE
862 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530863 }
864
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530865 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530866 * Returns of method's string and java doc for special type.
867 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530868 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530869 * @param generatedJavaClassName class name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530870 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530871 * @return of method's string and java doc for special type
872 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530873 public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName,
874 YangPluginConfig pluginConfig) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530875
876 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530877 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530878
Bharat saraswal33dfa012016-05-17 19:59:16 +0530879 return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530880 + getOfMethodString(attrType, generatedJavaClassName);
881 }
882
883 /**
884 * Returns of method's string.
885 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530886 * @param type data type
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530887 * @param className class name
888 * @return of method's string
889 */
890 private static String getOfMethodString(String type, String className) {
891
892 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + className + SPACE + OF + OPEN_PARENTHESIS
893 + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
894 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + className + OPEN_PARENTHESIS + VALUE
895 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
896 }
897
898 /**
899 * Returns string and java doc for constructor of type class.
900 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530901 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530902 * @param generatedJavaClassName class name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530903 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530904 * @return string and java doc for constructor of type class
905 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530906 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr,
907 String generatedJavaClassName, YangPluginConfig pluginConfig) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530908
909 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530910 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530911
Bharat saraswal33dfa012016-05-17 19:59:16 +0530912 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530913 + getTypeConstructorString(attrType, attrName, generatedJavaClassName);
914 }
915
916 /**
917 * Returns type constructor string.
918 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530919 * @param type data type
920 * @param name attribute name
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530921 * @param className class name
922 * @return type constructor string
923 */
924 private static String getTypeConstructorString(String type, String name, String className) {
925
926 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
927 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
928 + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
929 + CLOSE_CURLY_BRACKET;
930 }
931
932 /**
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530933 * Returns implementation of add augmentation method of AugmentationHolder class.
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530934 *
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530935 * @return implementation of add augmentation method of AugmentationHolder class
936 */
937 public static String getAddAugmentInfoMethodImpl() {
938 String method = FOUR_SPACE_INDENTATION;
939 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + ADD_STRING
940 + AUGMENTATION + OPEN_PARENTHESIS + AUGMENTED_INFO + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
941 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST
942 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + ADD_STRING + OPEN_PARENTHESIS + VALUE
943 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
944
945 return method;
946 }
947
948 /**
949 * Returns implementation of get augment info list method of AugmentationHolder class.
950 *
951 * @return implementation of get augment info list method of AugmentationHolder class
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530952 */
953 public static String getAugmentInfoListImpl() {
954
955 String method = FOUR_SPACE_INDENTATION;
956 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + LIST + DIAMOND_OPEN_BRACKET
957 + AUGMENTED_INFO + DIAMOND_CLOSE_BRACKET + SPACE + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST
958 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
959 + RETURN + SPACE + getSmallCase(AUGMENTED_INFO) + LIST + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
960 + CLOSE_CURLY_BRACKET;
961 return method;
962 }
963
964 /**
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530965 * Returns implementation of remove augmentation method of AugmentationHolder class.
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530966 *
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530967 * @return implementation of remove augmentation method of AugmentationHolder class
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530968 */
969 public static String getRemoveAugmentationImpl() {
970 String method = FOUR_SPACE_INDENTATION;
971 method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + "remove"
972 + AUGMENTATION + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
973 + EIGHT_SPACE_INDENTATION + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST + OPEN_PARENTHESIS
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530974 + CLOSE_PARENTHESIS + PERIOD + CLEAR + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530975 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
976 return method;
977 }
978
Bharat saraswald72411a2016-04-19 01:00:16 +0530979 /**
980 * Returns enum's constructor.
981 *
982 * @param className enum's class name
983 * @return enum's constructor
984 */
985 public static String getEnumsConstrcutor(String className) {
986 return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
987 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
988 + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
989 }
Bharat saraswalc0e04842016-05-12 13:16:57 +0530990
991 /**
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530992 * Provides string to be added in augment node's constructor.
993 *
994 * @param curNode current YANG node
995 * @return constructors string
996 */
997 public static String getAugmentsAddToAugmentedMethod(YangNode curNode) {
998
999 if (!(curNode instanceof YangJavaAugment)) {
1000 throw new TranslatorException("current node should be of type augment node.");
1001 }
1002 YangJavaAugment augment = (YangJavaAugment) curNode;
1003 List<YangNodeIdentifier> targetNodes = augment.getTargetNode();
1004
1005 String name = targetNodes.get(targetNodes.size() - 1).getName();
1006 String captialCase = getCapitalCase(name);
1007 String smallCase = getSmallCase(captialCase);
1008 return EIGHT_SPACE_INDENTATION + captialCase + IMPL + SPACE + smallCase + IMPL + SPACE + EQUAL + SPACE
1009 + NEW + SPACE + captialCase + BUILDER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + NEW + SPACE
1010 + captialCase + IMPL + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
1011 + EIGHT_SPACE_INDENTATION + smallCase + IMPL + PERIOD + ADD_STRING + AUGMENTATION
1012 + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1013
1014 }
1015
1016 private static String getAugmentsAddToAugmentedMethodStart() {
1017 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + ADD_STRING + AUGMENTABLE + OPEN_PARENTHESIS
1018 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
1019 }
1020
1021 /**
Bharat saraswalc0e04842016-05-12 13:16:57 +05301022 * Returns of method for enum class.
1023 *
1024 * @param className class name
1025 * @param attr java attribute
1026 * @param enumMap enum's sets map
1027 * @param enumList enum's sets list
Bharat saraswal33dfa012016-05-17 19:59:16 +05301028 * @param pluginConfig plugin configurations
Bharat saraswalc0e04842016-05-12 13:16:57 +05301029 * @return of method
1030 */
1031 public static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
Bharat saraswal33dfa012016-05-17 19:59:16 +05301032 Map<String, Integer> enumMap, List<String> enumList, YangPluginConfig pluginConfig) {
Bharat saraswalc0e04842016-05-12 13:16:57 +05301033 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +05301034 String attrName = attr.getAttributeName();
Bharat saraswalc0e04842016-05-12 13:16:57 +05301035
janani b4a6711a2016-05-17 13:12:22 +05301036 String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + getCapitalCase(className) + SPACE
1037 + OF + OPEN_PARENTHESIS
Bharat saraswalc0e04842016-05-12 13:16:57 +05301038 + attrType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1039 + EIGHT_SPACE_INDENTATION + SWITCH + SPACE + OPEN_PARENTHESIS + VALUE
1040 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1041 int value = 0;
1042 for (String str : enumList) {
1043
1044 value = enumMap.get(str);
1045 method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value + COLAN + NEW_LINE
janani b4a6711a2016-05-17 13:12:22 +05301046 + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + getCapitalCase(className) + PERIOD
Bharat saraswalc0e04842016-05-12 13:16:57 +05301047 + str + SEMI_COLAN + NEW_LINE;
1048 }
1049 method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLAN + NEW_LINE + SIXTEEN_SPACE_INDENTATION
1050 + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1051 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1052
Bharat saraswal33dfa012016-05-17 19:59:16 +05301053 return getJavaDoc(OF_METHOD, getCapitalCase(className) + " for type " + attrName, false, pluginConfig)
1054 + method;
Bharat saraswalc0e04842016-05-12 13:16:57 +05301055 }
Bharat saraswal33dfa012016-05-17 19:59:16 +05301056
1057 /**
1058 * Returns activate method string.
1059 *
1060 * @return activate method string
1061 */
1062 public static String addActivateMethod() {
1063 return FOUR_SPACE_INDENTATION + ACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
1064 + PUBLIC + SPACE + VOID + SPACE + ACTIVATE + OPEN_PARENTHESIS
1065 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
1066 + NEW_LINE + EIGHT_SPACE_INDENTATION
1067 + YANG_UTILS_TODO
1068 + NEW_LINE + EIGHT_SPACE_INDENTATION
1069 + STARTED_LOG_INFO + FOUR_SPACE_INDENTATION
1070 + CLOSE_CURLY_BRACKET + NEW_LINE;
1071 }
1072
1073 /**
1074 * Returns deactivate method string.
1075 *
1076 * @return deactivate method string
1077 */
1078 public static String addDeActivateMethod() {
1079 return NEW_LINE + FOUR_SPACE_INDENTATION + DEACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
1080 + PUBLIC + SPACE + VOID + SPACE + DEACTIVATE + OPEN_PARENTHESIS
1081 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
1082 + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION
1083 + STOPPED_LOG_INFO + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1084 }
1085
Bharat saraswal870c56f2016-02-20 21:57:16 +05301086}