blob: ffc0a465d648928c7e55237a12c554f628f51b54 [file] [log] [blame]
Bharat saraswal870c56f2016-02-20 21:57:16 +05301/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2016-present Open Networking Laboratory
Bharat saraswal870c56f2016-02-20 21:57:16 +05303 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.onosproject.yangutils.translator.tojava.utils;
18
Bharat saraswalc0e04842016-05-12 13:16:57 +053019import java.util.List;
20import java.util.Map;
janani be18b5342016-07-13 21:06:41 +053021
Bharat saraswalb551aae2016-07-14 15:18:20 +053022import org.onosproject.yangutils.datamodel.YangAtomicPath;
23import org.onosproject.yangutils.datamodel.YangAugment;
24import org.onosproject.yangutils.datamodel.YangNode;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053025import org.onosproject.yangutils.datamodel.YangType;
janani be18b5342016-07-13 21:06:41 +053026import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053027import org.onosproject.yangutils.translator.exception.TranslatorException;
Vinod Kumar S38046502016-03-23 15:30:27 +053028import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
Bharat saraswalb551aae2016-07-14 15:18:20 +053029import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053030import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053031import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
Bharat saraswale2d51d62016-03-23 19:40:35 +053032
Bharat saraswal33dfa012016-05-17 19:59:16 +053033import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053034import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
Bharat saraswalb551aae2016-07-14 15:18:20 +053035import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getAugmentedClassNameForDataMethods;
36import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getParentNodeNameForDataMethods;
37import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getResolvedAugmentsForManager;
38import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getSetOfNodeIdentifiers;
Bharat saraswal33dfa012016-05-17 19:59:16 +053039import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE;
40import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE_ANNOTATION;
Bharat saraswale2d51d62016-03-23 19:40:35 +053041import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
42import static org.onosproject.yangutils.utils.UtilConstants.AND;
Bharat saraswalb551aae2016-07-14 15:18:20 +053043import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTATION;
44import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +053045import static org.onosproject.yangutils.utils.UtilConstants.BIG_DECIMAL;
Bharat saraswalb1170bd2016-07-14 13:26:18 +053046import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053047import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053048import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053049import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
50import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053051import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053052import static org.onosproject.yangutils.utils.UtilConstants.BYTE_WRAPPER;
Bharat saraswalc0e04842016-05-12 13:16:57 +053053import static org.onosproject.yangutils.utils.UtilConstants.CASE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053054import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +053055import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
Bharat saraswalb551aae2016-07-14 15:18:20 +053056import static org.onosproject.yangutils.utils.UtilConstants.CLASS;
57import static org.onosproject.yangutils.utils.UtilConstants.CLASS_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +053058import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
59import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
Bharat saraswalc0e04842016-05-12 13:16:57 +053060import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
Bharat saraswale2d51d62016-03-23 19:40:35 +053061import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
Bharat saraswal33dfa012016-05-17 19:59:16 +053062import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE;
63import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE_ANNOTATION;
Bharat saraswalc0e04842016-05-12 13:16:57 +053064import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
Bharat saraswale2d51d62016-03-23 19:40:35 +053065import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
66import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +053067import static org.onosproject.yangutils.utils.UtilConstants.DOUBLE;
Bharat saraswale2d51d62016-03-23 19:40:35 +053068import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
69import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
70import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
71import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053072import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
73import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
Bharat saraswale2d51d62016-03-23 19:40:35 +053074import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
75import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053076import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
77import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
Bharat saraswalb551aae2016-07-14 15:18:20 +053078import static org.onosproject.yangutils.utils.UtilConstants.GET;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +053079import static org.onosproject.yangutils.utils.UtilConstants.GET_BYTES;
Bharat saraswale2d51d62016-03-23 19:40:35 +053080import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
81import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
82import static org.onosproject.yangutils.utils.UtilConstants.HASH;
83import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
84import static org.onosproject.yangutils.utils.UtilConstants.IF;
Bharat saraswale2d51d62016-03-23 19:40:35 +053085import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
86import static org.onosproject.yangutils.utils.UtilConstants.INT;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053087import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053088import static org.onosproject.yangutils.utils.UtilConstants.LIST;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +053089import static org.onosproject.yangutils.utils.UtilConstants.LONG;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053090import static org.onosproject.yangutils.utils.UtilConstants.LONG_WRAPPER;
Bharat saraswalb551aae2016-07-14 15:18:20 +053091import static org.onosproject.yangutils.utils.UtilConstants.MAP;
Bharat saraswale2d51d62016-03-23 19:40:35 +053092import static org.onosproject.yangutils.utils.UtilConstants.NEW;
93import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053094import static org.onosproject.yangutils.utils.UtilConstants.NULL;
Bharat saraswale2d51d62016-03-23 19:40:35 +053095import static org.onosproject.yangutils.utils.UtilConstants.OBJ;
96import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
97import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
98import static org.onosproject.yangutils.utils.UtilConstants.OF;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053099import static org.onosproject.yangutils.utils.UtilConstants.OMIT_NULL_VALUE_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530100import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
101import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
102import static org.onosproject.yangutils.utils.UtilConstants.OTHER;
103import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530104import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BOOLEAN;
105import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BYTE;
106import static org.onosproject.yangutils.utils.UtilConstants.PARSE_INT;
107import static org.onosproject.yangutils.utils.UtilConstants.PARSE_LONG;
108import static org.onosproject.yangutils.utils.UtilConstants.PARSE_SHORT;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530109import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
110import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530111import static org.onosproject.yangutils.utils.UtilConstants.PUT;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530112import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
113import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530114import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530115import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
116import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530117import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530118import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530119import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
120import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530121import static org.onosproject.yangutils.utils.UtilConstants.STARTED_LOG_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530122import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530123import static org.onosproject.yangutils.utils.UtilConstants.STOPPED_LOG_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530124import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
125import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530126import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530127import static org.onosproject.yangutils.utils.UtilConstants.THIS;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530128import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530129import static org.onosproject.yangutils.utils.UtilConstants.TO;
130import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530131import static org.onosproject.yangutils.utils.UtilConstants.TRY;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530132import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
133import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
134import static org.onosproject.yangutils.utils.UtilConstants.VOID;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530135import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530136import static org.onosproject.yangutils.utils.UtilConstants.YANG_UTILS_TODO;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530137import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
138import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
139import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530140import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.FROM_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530141import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530142import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.MANAGER_SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530143import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530144import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530145import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
Bharat saraswalb551aae2016-07-14 15:18:20 +0530146import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForAddAugmentation;
147import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForGetAugmentation;
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530148import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForTypeConstructor;
149import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530150import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
151import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
152import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530153import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +0530154import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BINARY;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530155
156/**
Bharat saraswald9822e92016-04-05 15:13:44 +0530157 * Represents generator for methods of generated files based on the file type.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530158 */
159public final class MethodsGenerator {
160
Bharat saraswal870c56f2016-02-20 21:57:16 +0530161 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530162 * Creates an instance of method generator.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530163 */
164 private MethodsGenerator() {
165 }
166
167 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530168 * Returns the methods strings for builder interface.
169 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530170 * @param name attribute name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530171 * @param pluginConfig plugin configurations
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530172 * @return method string for builder interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530173 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530174 public static String parseBuilderInterfaceBuildMethodString(String name, YangPluginConfig pluginConfig) {
175 return getJavaDoc(BUILD_METHOD, name, false, pluginConfig) + getBuildForInterface(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530176 }
177
178 /**
179 * Returns getter string.
180 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530181 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530182 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530183 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530184 * @return getter string
185 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530186 public static String getGetterString(JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530187 YangPluginConfig pluginConfig) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530188
Vinod Kumar S38046502016-03-23 15:30:27 +0530189 String returnType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530190 String attributeName = attr.getAttributeName();
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530191
Bharat saraswal33dfa012016-05-17 19:59:16 +0530192 return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr(), pluginConfig)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530193 + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530194 }
195
196 /**
197 * Returns setter string.
198 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530199 * @param attr attribute info
200 * @param className java class name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530201 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530202 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530203 * @return setter string
204 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530205 public static String getSetterString(JavaAttributeInfo attr, String className, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530206 YangPluginConfig pluginConfig) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530207
Vinod Kumar S38046502016-03-23 15:30:27 +0530208 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530209 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530210 JavaDocGen.JavaDocType type;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530211 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530212 type = MANAGER_SETTER_METHOD;
213 } else {
214 type = SETTER_METHOD;
215 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530216
Bharat saraswal33dfa012016-05-17 19:59:16 +0530217 return getJavaDoc(type, attributeName, attr.isListAttr(), pluginConfig)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530218 + getSetterForInterface(attributeName, attrType, className, attr.isListAttr(), generatedJavaFiles);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530219 }
220
221 /**
222 * Returns constructor method string.
223 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530224 * @param name class name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530225 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530226 * @return constructor string
227 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530228 public static String getConstructorString(String name, YangPluginConfig pluginConfig) {
229 return getJavaDoc(CONSTRUCTOR, name, false, pluginConfig);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530230 }
231
232 /**
233 * Returns default constructor method string.
234 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530235 * @param name class name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530236 * @param modifierType modifier type
Bharat saraswal33dfa012016-05-17 19:59:16 +0530237 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530238 * @return default constructor string
239 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530240 public static String getDefaultConstructorString(String name, String modifierType,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530241 YangPluginConfig pluginConfig) {
Bharat saraswal33dfa012016-05-17 19:59:16 +0530242 return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false, pluginConfig)
243 + getDefaultConstructor(name, modifierType)
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530244 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530245 }
246
247 /**
248 * Returns check not null string.
249 *
250 * @param name attribute name
251 * @return check not null string
252 */
253 public static String getCheckNotNull(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530254 return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING + OPEN_PARENTHESIS + name + COMMA + SPACE + name
255 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530256 }
257
258 /**
259 * Returns build method string.
260 *
261 * @param name class name
262 * @return build string
263 */
264 public static String getBuildString(String name) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530265 return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530266 }
267
268 /**
269 * Returns the getter method strings for class file.
270 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530271 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530272 * @param generatedJavaFiles for the type of java file being generated
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530273 * @return getter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530274 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530275 public static String getGetterForClass(JavaAttributeInfo attr, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530276
Vinod Kumar S38046502016-03-23 15:30:27 +0530277 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530278 String attributeName = attr.getAttributeName();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530279
280 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530281 return getGetter(attrQuaifiedType, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530282 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530283 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530284 return getGetter(listAttr, attributeName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530285 }
286
287 /**
288 * Returns getter for attribute.
289 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530290 * @param type return type
291 * @param name attribute name
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530292 * @param generatedJavaFiles generated java files
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530293 * @return getter for attribute
294 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530295 public static String getGetter(String type, String name, int generatedJavaFiles) {
Bharat saraswalcad0e652016-05-26 23:48:38 +0530296 String ret = parseTypeForReturnValue(type);
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530297 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
janani b4a6711a2016-05-17 13:12:22 +0530298 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCapitalCase(name)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530299 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
300 EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION +
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530301 RETURN + SPACE + ret + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530302 } else {
303 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + name
304 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
305 EIGHT_SPACE_INDENTATION + RETURN + SPACE + name + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
306 + CLOSE_CURLY_BRACKET;
307 }
308
Bharat saraswal870c56f2016-02-20 21:57:16 +0530309 }
310
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530311 /*Provides string to return for type.*/
Bharat saraswalcad0e652016-05-26 23:48:38 +0530312 private static String parseTypeForReturnValue(String type) {
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530313 switch (type) {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530314 case BYTE:
315 case INT:
316 case SHORT:
317 case LONG:
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +0530318 case DOUBLE:
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530319 return "0";
320 case BOOLEAN_DATA_TYPE:
321 return FALSE;
322 default:
323 return null;
Bharat saraswalab4c6ba2016-05-17 14:19:38 +0530324 }
325 }
326
Bharat saraswal870c56f2016-02-20 21:57:16 +0530327 /**
328 * Returns the setter method strings for class file.
329 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530330 * @param attr attribute info
331 * @param className name of the class
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530332 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530333 * @return setter method for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530334 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530335 public static String getSetterForClass(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530336
Vinod Kumar S38046502016-03-23 15:30:27 +0530337 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530338 String attributeName = attr.getAttributeName();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530339 if (!attr.isListAttr()) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530340 return getSetter(className, attributeName, attrQuaifiedType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530341 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530342 String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530343 return getSetter(className, attributeName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530344 }
345
346 /**
347 * Returns setter for attribute.
348 *
349 * @param className class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530350 * @param name attribute name
351 * @param type return type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530352 * @return setter for attribute
353 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530354 private static String getSetter(String className, String name, String type, int generatedJavaFiles) {
355 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
356 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX
janani b4a6711a2016-05-17 13:12:22 +0530357 + getCapitalCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530358 OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO +
359 NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal33dfa012016-05-17 19:59:16 +0530360 } else if (generatedJavaFiles == GENERATE_EVENT_SUBJECT_CLASS) {
361 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + name + OPEN_PARENTHESIS + type + SPACE
362 + name + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
363 + THIS + PERIOD + name + SPACE + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE
364 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530365 } else {
366 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE +
367 name + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
Bharat saraswal33dfa012016-05-17 19:59:16 +0530368 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE
369 + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE
370 + THIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530371 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530372 }
373
374 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530375 * Returns the setter method strings for class file.
376 *
377 * @param attr attribute info
378 * @return setter method for class
379 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530380 public static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530381
Vinod Kumar S38046502016-03-23 15:30:27 +0530382 String attrQuaifiedType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530383 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530384 return getTypeDefSetter(attrQuaifiedType, attributeName);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530385 }
386
387 /**
388 * Returns type def's setter for attribute.
389 *
390 * @param type data type
391 * @param name attribute name
392 * @return setter for type def's attribute
393 */
394 private static String getTypeDefSetter(String type, String name) {
janani b4a6711a2016-05-17 13:12:22 +0530395 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(name)
Bharat saraswale2d51d62016-03-23 19:40:35 +0530396 + OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
397 + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE
398 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530399 }
400
401 /**
402 * Returns override string.
403 *
404 * @return override string
405 */
406 public static String getOverRideString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530407 return NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530408 }
409
410 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530411 * Returns the getter method strings for interface file.
412 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530413 * @param yangName name of the attribute
414 * @param returnType return type of attribute
415 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530416 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530417 * @return getter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530418 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530419 public static String getGetterForInterface(String yangName, String returnType, boolean isList,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530420 int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530421
422 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530423 return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530424 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530425 String listAttr = getListString() + returnType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530426 return getGetterInterfaceString(listAttr, yangName, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530427 }
428
429 /**
430 * Returns getter for attribute in interface.
431 *
432 * @param returnType return type
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530433 * @param yangName attribute name
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530434 * @return getter for interface
435 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530436 private static String getGetterInterfaceString(String returnType, String yangName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530437 int generatedJavaFiles) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530438 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
janani b4a6711a2016-05-17 13:12:22 +0530439 return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCapitalCase(yangName)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530440 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
441 } else {
442 return FOUR_SPACE_INDENTATION + returnType + SPACE + yangName
443 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
444 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530445 }
446
447 /**
448 * Returns the setter method strings for interface file.
449 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530450 * @param attrName name of the attribute
451 * @param attrType return type of attribute
452 * @param className name of the java class being generated
453 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530454 * @param generatedJavaFiles generated java files
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530455 * @return setter method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530456 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530457 public static String getSetterForInterface(String attrName, String attrType, String className,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530458 boolean isList, int generatedJavaFiles) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530459
460 if (!isList) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530461 return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530462 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530463 String listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530464 return getSetterInterfaceString(className, attrName, listAttr, generatedJavaFiles);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530465 }
466
467 /**
468 * Returns setter string for interface.
469 *
470 * @param className class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530471 * @param attrName attribute name
472 * @param attrType attribute type
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530473 * @return setter string
474 */
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530475 private static String getSetterInterfaceString(String className, String attrName, String attrType,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530476 int generatedJavaFiles) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530477 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
478
janani b4a6711a2016-05-17 13:12:22 +0530479 return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(attrName)
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530480 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
481 } else {
482 return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + attrName
483 + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
484 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530485 }
486
487 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530488 * Returns list string.
489 *
490 * @return list string
491 */
492 private static String getListString() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530493 return LIST + DIAMOND_OPEN_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530494 }
495
496 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530497 * Returns return type for attribute.
498 *
499 * @param attr attribute info
500 * @return return type
501 */
502 private static String getReturnType(JavaAttributeInfo attr) {
503
Bharat saraswale2d51d62016-03-23 19:40:35 +0530504 String returnType = EMPTY_STRING;
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530505 if (attr.isQualifiedName() && attr.getImportInfo().getPkgInfo() != null) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530506 returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
Vinod Kumar S38046502016-03-23 15:30:27 +0530507 }
508 returnType = returnType + attr.getImportInfo().getClassInfo();
509 return returnType;
510 }
511
512 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530513 * Returns the build method strings for interface file.
514 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530515 * @param yangName name of the interface
516 * @return build method for interface
Bharat saraswal870c56f2016-02-20 21:57:16 +0530517 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530518 public static String getBuildForInterface(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530519 return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
520 + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530521 }
522
523 /**
Vinod Kumar S38046502016-03-23 15:30:27 +0530524 * Returns constructor string for impl class.
525 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530526 * @param yangName class name
Bharat saraswal33dfa012016-05-17 19:59:16 +0530527 * @param pluginConfig plugin configurations
Vinod Kumar S38046502016-03-23 15:30:27 +0530528 * @return constructor string
529 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530530 public static String getConstructorStart(String yangName, YangPluginConfig pluginConfig) {
Vinod Kumar S38046502016-03-23 15:30:27 +0530531
Bharat saraswal33dfa012016-05-17 19:59:16 +0530532 String javadoc = getConstructorString(yangName, pluginConfig);
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530533 String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + getCapitalCase(DEFAULT) + yangName +
534 OPEN_PARENTHESIS + yangName + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT
535 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
Vinod Kumar S38046502016-03-23 15:30:27 +0530536 return javadoc + constructor;
537 }
538
539 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530540 * Returns the constructor strings for class file.
541 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530542 * @param attr attribute info
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530543 * @param generatedJavaFiles generated java files
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530544 * @param pluginConfig plugin configurations
Bharat saraswal870c56f2016-02-20 21:57:16 +0530545 * @return constructor for class
546 */
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530547 public static String getConstructor(JavaAttributeInfo attr, int generatedJavaFiles,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530548 YangPluginConfig pluginConfig) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530549
janani b4a6711a2016-05-17 13:12:22 +0530550 String attributeName = attr.getAttributeName();
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530551 String constructor;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530552
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530553 if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530554 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD
555 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
556 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
557 + getCapitalCase(getCamelCase(attributeName, pluginConfig.getConflictResolver()))
558 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530559 } else {
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530560 constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD
561 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
562 + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD
563 + getCamelCase(attributeName, pluginConfig.getConflictResolver()) +
564 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530565 }
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530566 return constructor;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530567 }
568
569 /**
Gaurav Agrawal56527662016-04-20 15:49:17 +0530570 * Returns the rpc strings for service interface.
571 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530572 * @param rpcName name of the rpc
573 * @param inputName name of input
574 * @param outputName name of output
Bharat saraswal33dfa012016-05-17 19:59:16 +0530575 * @param pluginConfig plugin configurations
Gaurav Agrawal56527662016-04-20 15:49:17 +0530576 * @return rpc method string
577 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530578 public static String getRpcServiceMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530579 YangPluginConfig pluginConfig) {
Gaurav Agrawal56527662016-04-20 15:49:17 +0530580
Bharat saraswal33dfa012016-05-17 19:59:16 +0530581 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswalcad0e652016-05-26 23:48:38 +0530582 if (!inputName.equals(EMPTY_STRING)) {
583 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530584 }
Bharat saraswalcad0e652016-05-26 23:48:38 +0530585 return FOUR_SPACE_INDENTATION + outputName + SPACE + rpcName + OPEN_PARENTHESIS + inputName
586 + CLOSE_PARENTHESIS + SEMI_COLAN;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530587 }
588
589 /**
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530590 * Returns the rpc strings for manager impl.
591 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530592 * @param rpcName name of the rpc
593 * @param inputName name of input
594 * @param outputName name of output
Bharat saraswal33dfa012016-05-17 19:59:16 +0530595 * @param pluginConfig plugin configurations
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530596 * @return rpc method string
597 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530598 public static String getRpcManagerMethod(String rpcName, String inputName, String outputName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530599 YangPluginConfig pluginConfig) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530600
Bharat saraswal33dfa012016-05-17 19:59:16 +0530601 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Bharat saraswalcad0e652016-05-26 23:48:38 +0530602 if (!inputName.equals(EMPTY_STRING)) {
603 inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
Bharat saraswalc0e04842016-05-12 13:16:57 +0530604 }
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530605
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530606 String method = getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName
607 + OPEN_PARENTHESIS + inputName + CLOSE_PARENTHESIS + SPACE
608 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530609 if (!outputName.contentEquals(VOID)) {
Bharat saraswalcad0e652016-05-26 23:48:38 +0530610 method += EIGHT_SPACE_INDENTATION + RETURN + SPACE + parseTypeForReturnValue(outputName) + SEMI_COLAN
611 + NEW_LINE;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530612 }
613 method += FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
614
615 return method;
616 }
617
618 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530619 * Returns the build method strings for class file.
620 *
621 * @param yangName class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530622 * @return build method string for class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530623 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530624 public static String getBuild(String yangName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530625 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530626 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE +
627 getCapitalCase(DEFAULT) + yangName + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN
628 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530629 }
630
631 /**
632 * Returns the Default constructor strings for class file.
633 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530634 * @param name name of the class
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530635 * @param modifierType modifier type for default constructor
Bharat saraswal870c56f2016-02-20 21:57:16 +0530636 * @return Default constructor for class
637 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530638 private static String getDefaultConstructor(String name, String modifierType) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530639 return FOUR_SPACE_INDENTATION + modifierType + SPACE + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
640 + OPEN_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530641 }
642
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530643 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530644 * Returns to string method's open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530645 *
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530646 * @return string method's open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530647 */
648 public static String getToStringMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530649 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STRING_DATA_TYPE + SPACE + TO
650 + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
651 + EIGHT_SPACE_INDENTATION + RETURN + GOOGLE_MORE_OBJECT_METHOD_STRING + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530652 }
653
654 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530655 * Returns omit null value string.
656 *
657 * @return omit null value string
658 */
659 public static String getOmitNullValueString() {
660 return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING + NEW_LINE;
661 }
662
663 /**
664 * Returns to string method's close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530665 *
666 * @return to string method close string
667 */
668 public static String getToStringMethodClose() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530669 return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
670 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530671 }
672
673 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530674 * Returns to string method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530675 *
676 * @param attr attribute info
677 * @return to string method
678 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530679 public static String getToStringMethod(JavaAttributeInfo attr) {
680
janani b4a6711a2016-05-17 13:12:22 +0530681 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530682 return TWELVE_SPACE_INDENTATION + PERIOD + ADD_STRING + OPEN_PARENTHESIS + QUOTES + attributeName + QUOTES
683 + COMMA + SPACE + attributeName + CLOSE_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530684 }
685
686 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530687 * Returns from string method's open string.
688 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530689 * @param className name of the class
Bharat saraswal33dfa012016-05-17 19:59:16 +0530690 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530691 * @return from string method's open string
692 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530693 public static String getFromStringMethodSignature(String className, YangPluginConfig pluginConfig) {
694 return getJavaDoc(FROM_METHOD, className, false, pluginConfig) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
695 + STATIC + SPACE + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS
696 + STRING_DATA_TYPE + SPACE + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE
697 + OPEN_CURLY_BRACKET + NEW_LINE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530698 }
699
700 /**
701 * Return from string method's close string.
702 *
703 * @return from string method's close string
704 */
705 public static String getFromStringMethodClose() {
706 return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
707 CLOSE_CURLY_BRACKET + NEW_LINE;
708 }
709
710 /**
711 * Return from string method's body string.
712 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530713 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530714 * @param fromStringAttributeInfo attribute info for the from string
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530715 * wrapper type
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530716 * @return from string method's body string
717 */
718 public static String getFromStringMethod(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530719 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530720
721 return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
722 + getParsedSubString(attr, fromStringAttributeInfo) + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
723 + getReturnOfSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION + getCatchSubString()
724 + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
725 }
726
727 /**
728 * Returns sub string with try statement for union's from string method.
729 *
730 * @return sub string with try statement for union's from string method
731 */
732 public static String getTrySubString() {
733 return TRY + SPACE + OPEN_CURLY_BRACKET;
734 }
735
736 /**
737 * Returns sub string with return statement for union's from string method.
738 *
739 * @return sub string with return statement for union's from string method
740 */
741 public static String getReturnOfSubString() {
742 return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL + CLOSE_PARENTHESIS + SEMI_COLAN;
743 }
744
745 /**
746 * Returns sub string with catch statement for union's from string method.
747 *
748 * @return sub string with catch statement for union's from string method
749 */
750 public static String getCatchSubString() {
751 return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS + EXCEPTION + SPACE + EXCEPTION_VAR
752 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
753 }
754
755 /**
756 * Returns sub string with parsed statement for union's from string method.
757 *
758 * @param attr attribute info
759 * @return sub string with parsed statement for union's from string method
760 */
761 private static String getParsedSubString(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530762 JavaAttributeInfo fromStringAttributeInfo) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530763
764 String targetDataType = getReturnType(attr);
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +0530765 if (fromStringAttributeInfo.getAttributeType().getDataType() == BINARY) {
766 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
767 + PERIOD + GET_BYTES + OPEN_PARENTHESIS + CLOSE_PARENTHESIS;
768 } else {
769 String parseFromStringMethod = getParseFromStringMethod(targetDataType,
770 fromStringAttributeInfo.getAttributeType());
771 return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + parseFromStringMethod
772 + OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS;
773 }
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530774 }
775
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530776 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530777 * Returns hash code method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530778 *
Bharat saraswald9822e92016-04-05 15:13:44 +0530779 * @return hash code method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530780 */
781 public static String getHashCodeMethodOpen() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530782 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + INT + SPACE + HASH_CODE_STRING
783 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
784 + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530785 }
786
787 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530788 * Returns hash code methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530789 *
790 * @param hashcodeString hash code string
791 * @return to hash code method close string
792 */
793 public static String getHashCodeMethodClose(String hashcodeString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530794 hashcodeString = trimAtLast(hashcodeString, COMMA);
795 hashcodeString = trimAtLast(hashcodeString, SPACE);
796 return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
797 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530798 }
799
800 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530801 * Returns hash code method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530802 *
803 * @param attr attribute info
804 * @return hash code method
805 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530806 public static String getHashCodeMethod(JavaAttributeInfo attr) {
janani b4a6711a2016-05-17 13:12:22 +0530807 return attr.getAttributeName() + COMMA + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530808 }
809
810 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530811 * Returns equals method open strings.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530812 *
813 * @param className class name
Bharat saraswald9822e92016-04-05 15:13:44 +0530814 * @return equals method open string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530815 */
816 public static String getEqualsMethodOpen(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530817 return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE + EQUALS_STRING
818 + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + OBJ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
819 + NEW_LINE + getEqualsMethodsCommonIfCondition() + getEqualsMethodsSpecificIfCondition(className);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530820 }
821
822 /**
823 * Returns equal methods if condition string.
824 *
825 * @return if condition string
826 */
827 private static String getEqualsMethodsCommonIfCondition() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530828 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + THIS + SPACE + EQUAL + EQUAL + SPACE + OBJ
829 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + SPACE
830 + TRUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530831 }
832
833 /**
834 * Returns if condition for specific class object in equals method.
835 *
836 * @param className class name
837 * @return if condition string
838 */
839 private static String getEqualsMethodsSpecificIfCondition(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530840 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + OBJ + INSTANCE_OF + className
841 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + className
842 + SPACE + OTHER + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS + className + CLOSE_PARENTHESIS + SPACE
843 + OBJ + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530844 }
845
846 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530847 * Returns equals methods close string.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530848 *
849 * @param equalMethodString equal method string
Bharat saraswald9822e92016-04-05 15:13:44 +0530850 * @return equals method close string
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530851 */
852 public static String getEqualsMethodClose(String equalMethodString) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530853 equalMethodString = trimAtLast(equalMethodString, AND);
854 equalMethodString = trimAtLast(equalMethodString, AND);
855 equalMethodString = trimAtLast(equalMethodString, SPACE);
856 equalMethodString = trimAtLast(equalMethodString, NEW_LINE) + SEMI_COLAN + NEW_LINE;
857 return equalMethodString + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
858 + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
859 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530860 }
861
862 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530863 * Returns equals method for class.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530864 *
865 * @param attr attribute info
866 * @return equals method
867 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530868 public static String getEqualsMethod(JavaAttributeInfo attr) {
869
janani b4a6711a2016-05-17 13:12:22 +0530870 String attributeName = attr.getAttributeName();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530871 return SIXTEEN_SPACE_INDENTATION + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS
872 + attributeName + COMMA + SPACE + OTHER + PERIOD + attributeName + CLOSE_PARENTHESIS + SPACE + AND
873 + AND;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530874 }
875
876 /**
877 * Returns of method string for class.
878 *
879 * @param name class name
880 * @param attr attribute info
881 * @return of method string
882 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530883 public static String getOfMethod(String name, JavaAttributeInfo attr) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530884
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530885 String attrQualifiedType = getReturnType(attr);
886
Bharat saraswale2d51d62016-03-23 19:40:35 +0530887 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name + SPACE + OF + OPEN_PARENTHESIS
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530888 + attrQualifiedType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
Bharat saraswale2d51d62016-03-23 19:40:35 +0530889 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name + OPEN_PARENTHESIS + VALUE
890 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530891 }
892
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530893 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530894 * Returns of method's string and java doc for special type.
895 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530896 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530897 * @param generatedJavaClassName class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530898 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530899 * @return of method's string and java doc for special type
900 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530901 public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530902 YangPluginConfig pluginConfig) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530903
904 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530905 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530906
Bharat saraswal33dfa012016-05-17 19:59:16 +0530907 return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530908 + getOfMethodString(attrType, generatedJavaClassName);
909 }
910
911 /**
912 * Returns of method's string.
913 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530914 * @param type data type
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530915 * @param className class name
916 * @return of method's string
917 */
918 private static String getOfMethodString(String type, String className) {
919
920 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + className + SPACE + OF + OPEN_PARENTHESIS
921 + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
922 + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + className + OPEN_PARENTHESIS + VALUE
923 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
924 }
925
926 /**
927 * Returns string and java doc for constructor of type class.
928 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530929 * @param attr attribute info
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530930 * @param generatedJavaClassName class name
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530931 * @param pluginConfig plugin configurations
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530932 * @return string and java doc for constructor of type class
933 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530934 public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530935 String generatedJavaClassName,
936 YangPluginConfig pluginConfig) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530937
938 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +0530939 String attrName = attr.getAttributeName();
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530940
Bharat saraswal33dfa012016-05-17 19:59:16 +0530941 return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530942 + getTypeConstructorString(attrType, attrName, generatedJavaClassName);
943 }
944
945 /**
946 * Returns type constructor string.
947 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530948 * @param type data type
949 * @param name attribute name
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530950 * @param className class name
951 * @return type constructor string
952 */
953 private static String getTypeConstructorString(String type, String name, String className) {
954
955 return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
956 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
957 + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
958 + CLOSE_CURLY_BRACKET;
959 }
960
961 /**
Bharat saraswalb551aae2016-07-14 15:18:20 +0530962 * Returns implementation of add augmentation.
963 *
964 * @return implementation of add augmentation
965 */
966 public static String getAddAugmentInfoMethodImpl() {
967 return NEW_LINE + generateForAddAugmentation() + FOUR_SPACE_INDENTATION +
968 PUBLIC + SPACE + VOID + SPACE + ADD_STRING
969 + AUGMENTATION + OPEN_PARENTHESIS + YANG_AUGMENTED_INFO + SPACE + VALUE + COMMA + SPACE + CLASS_STRING +
970 SPACE + CLASS + OBJECT_STRING + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
971 EIGHT_SPACE_INDENTATION + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + PUT + OPEN_PARENTHESIS +
972 CLASS + OBJECT_STRING + COMMA + SPACE + VALUE +
973 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
974 CLOSE_CURLY_BRACKET + NEW_LINE;
975 }
976
977 /**
978 * Returns implementation of get augment info.
979 *
980 * @return implementation of get augment info
981 */
982 public static String getAugmentInfoImpl() {
983
984 return generateForGetAugmentation() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
985 YANG_AUGMENTED_INFO + SPACE + GET_METHOD_PREFIX +
986 YANG_AUGMENTED_INFO + OPEN_PARENTHESIS + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
987 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
988 RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + GET + OPEN_PARENTHESIS + CLASS +
989 OBJECT_STRING + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
990 CLOSE_CURLY_BRACKET + NEW_LINE;
991 }
992
993 /**
Bharat saraswald72411a2016-04-19 01:00:16 +0530994 * Returns enum's constructor.
995 *
996 * @param className enum's class name
997 * @return enum's constructor
998 */
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530999 public static String getEnumsConstructor(String className) {
Bharat saraswald72411a2016-04-19 01:00:16 +05301000 return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
1001 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
1002 + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1003 }
Bharat saraswalc0e04842016-05-12 13:16:57 +05301004
1005 /**
1006 * Returns of method for enum class.
1007 *
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301008 * @param className class name
1009 * @param attr java attribute
1010 * @param enumMap enum's sets map
1011 * @param enumList enum's sets list
Bharat saraswal33dfa012016-05-17 19:59:16 +05301012 * @param pluginConfig plugin configurations
Bharat saraswalc0e04842016-05-12 13:16:57 +05301013 * @return of method
1014 */
1015 public static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301016 Map<String, Integer> enumMap, List<String> enumList,
1017 YangPluginConfig pluginConfig) {
Bharat saraswalc0e04842016-05-12 13:16:57 +05301018 String attrType = getReturnType(attr);
janani b4a6711a2016-05-17 13:12:22 +05301019 String attrName = attr.getAttributeName();
Bharat saraswalc0e04842016-05-12 13:16:57 +05301020
janani b4a6711a2016-05-17 13:12:22 +05301021 String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + getCapitalCase(className) + SPACE
1022 + OF + OPEN_PARENTHESIS
Bharat saraswalc0e04842016-05-12 13:16:57 +05301023 + attrType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
1024 + EIGHT_SPACE_INDENTATION + SWITCH + SPACE + OPEN_PARENTHESIS + VALUE
1025 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
1026 int value = 0;
1027 for (String str : enumList) {
1028
1029 value = enumMap.get(str);
1030 method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value + COLAN + NEW_LINE
janani b4a6711a2016-05-17 13:12:22 +05301031 + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + getCapitalCase(className) + PERIOD
Bharat saraswalc0e04842016-05-12 13:16:57 +05301032 + str + SEMI_COLAN + NEW_LINE;
1033 }
1034 method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLAN + NEW_LINE + SIXTEEN_SPACE_INDENTATION
1035 + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
1036 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
1037
Bharat saraswal33dfa012016-05-17 19:59:16 +05301038 return getJavaDoc(OF_METHOD, getCapitalCase(className) + " for type " + attrName, false, pluginConfig)
1039 + method;
Bharat saraswalc0e04842016-05-12 13:16:57 +05301040 }
Bharat saraswal33dfa012016-05-17 19:59:16 +05301041
1042 /**
1043 * Returns activate method string.
1044 *
1045 * @return activate method string
1046 */
1047 public static String addActivateMethod() {
1048 return FOUR_SPACE_INDENTATION + ACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
1049 + PUBLIC + SPACE + VOID + SPACE + ACTIVATE + OPEN_PARENTHESIS
1050 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
1051 + NEW_LINE + EIGHT_SPACE_INDENTATION
1052 + YANG_UTILS_TODO
1053 + NEW_LINE + EIGHT_SPACE_INDENTATION
1054 + STARTED_LOG_INFO + FOUR_SPACE_INDENTATION
1055 + CLOSE_CURLY_BRACKET + NEW_LINE;
1056 }
1057
1058 /**
1059 * Returns deactivate method string.
1060 *
1061 * @return deactivate method string
1062 */
1063 public static String addDeActivateMethod() {
1064 return NEW_LINE + FOUR_SPACE_INDENTATION + DEACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
1065 + PUBLIC + SPACE + VOID + SPACE + DEACTIVATE + OPEN_PARENTHESIS
1066 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
1067 + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION
1068 + STOPPED_LOG_INFO + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
1069 }
1070
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301071 /**
1072 * Returns from string method parsed string.
1073 *
1074 * @param targetDataType target data type
1075 * @param yangType YANG type
1076 * @return parsed string
1077 */
1078 public static String getParseFromStringMethod(String targetDataType, YangType<?> yangType) {
1079
1080 YangDataTypes type = yangType.getDataType();
1081
1082 switch (type) {
1083 case INT8:
1084 return BYTE_WRAPPER + PERIOD + PARSE_BYTE;
1085 case INT16:
1086 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1087 case INT32:
1088 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1089 case INT64:
1090 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1091 case UINT8:
1092 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
1093 case UINT16:
1094 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
1095 case UINT32:
1096 return LONG_WRAPPER + PERIOD + PARSE_LONG;
1097 case UINT64:
1098 return NEW + SPACE + BIG_INTEGER;
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +05301099 case DECIMAL64:
1100 return NEW + SPACE + BIG_DECIMAL;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301101 case STRING:
1102 return EMPTY_STRING;
1103 case EMPTY:
1104 case BOOLEAN:
1105 return BOOLEAN_WRAPPER + PERIOD + PARSE_BOOLEAN;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301106 case BITS:
Gaurav Agrawal8a5af142016-06-15 13:58:01 +05301107 case UNION:
1108 case ENUMERATION:
1109 case DERIVED:
1110 return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
1111 default:
1112 throw new TranslatorException("given data type is not supported.");
1113 }
1114 }
Bharat saraswalb1170bd2016-07-14 13:26:18 +05301115
1116 /**
1117 * Returns copy constructor for augmented class.
1118 *
1119 * @param yangName augmente class name
1120 * @param augmentName augmented class name
1121 * @return copy constructor for augmented class
1122 */
1123 public static String getAugmentedNodesConstructorStart(String yangName,
1124 String augmentName) {
1125
1126 String javadoc = generateForTypeConstructor(yangName);
1127 String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + BUILDER + OPEN_PARENTHESIS
1128 + augmentName + PERIOD + augmentName + BUILDER + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
1129 + OPEN_CURLY_BRACKET + NEW_LINE;
1130 return javadoc + constructor;
1131
1132 }
1133
1134 /**
1135 * Returns the constructor strings for class file.
1136 *
1137 * @param attr attribute info
1138 * @param pluginConfig plugin configurations
1139 * @return constructor for class
1140 */
1141 public static String getAugmentedConstructor(JavaAttributeInfo attr, YangPluginConfig pluginConfig) {
1142
1143 String attributeName = getCamelCase(attr.getAttributeName(), pluginConfig.getConflictResolver());
1144
1145 return EIGHT_SPACE_INDENTATION + THIS + PERIOD + attributeName + OPEN_PARENTHESIS
1146 + VALUE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
1147 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
1148 }
Bharat saraswalb551aae2016-07-14 15:18:20 +05301149
1150 /**
1151 * Returns augmented data getter and setter methods for service class.
1152 *
1153 * @param parent parent node
1154 * @return augmented data getter and setter methods for service class
1155 */
1156 public static String getAugmentsDataMethodForService(YangNode parent) {
1157 Map<YangAtomicPath, YangAugment> resolvedAugmentsForManager = getResolvedAugmentsForManager(parent);
1158 List<YangAtomicPath> targets = getSetOfNodeIdentifiers(parent);
1159 YangNode augmentedNode;
1160 String curNodeName;
1161 String method;
1162 StringBuilder methods = new StringBuilder();
1163 String parentName;
1164 String returnType;
1165 YangPluginConfig pluginConfig = ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig();
1166 for (YangAtomicPath nodeId : targets) {
1167 augmentedNode = resolvedAugmentsForManager.get(nodeId).getResolveNodeInPath().get(nodeId);
1168 if (((JavaFileInfoContainer) augmentedNode).getJavaFileInfo().getJavaName() != null) {
1169 curNodeName = ((JavaFileInfoContainer) augmentedNode).getJavaFileInfo().getJavaName();
1170 } else {
1171 curNodeName = getCapitalCase(getCamelCase(augmentedNode.getName(), pluginConfig
1172 .getConflictResolver()));
1173 }
1174 returnType = getAugmentedClassNameForDataMethods(augmentedNode, parent);
1175 parentName = getParentNodeNameForDataMethods(augmentedNode.getParent(), pluginConfig);
1176 method = getJavaDoc(GETTER_METHOD, getSmallCase(AUGMENTED + parentName + curNodeName), false,
1177 pluginConfig) + getGetterForInterface(AUGMENTED + parentName
1178 + getCapitalCase(curNodeName),
1179 returnType, false, GENERATE_SERVICE_AND_MANAGER)
1180 + NEW_LINE;
1181 methods.append(method);
1182
1183 method = getJavaDoc(MANAGER_SETTER_METHOD, AUGMENTED +
1184 getCapitalCase(parentName) + curNodeName, false, pluginConfig) +
1185 getSetterForInterface(getSmallCase(AUGMENTED) + parentName +
1186 getCapitalCase(curNodeName), returnType, parentName,
1187 false,
1188 GENERATE_SERVICE_AND_MANAGER) + NEW_LINE;
1189 methods.append(method);
1190 }
1191 return methods.toString();
1192 }
1193
1194 /**
1195 * Returns augmented data getter and setter methods for manager class.
1196 *
1197 * @param parent parent node
1198 * @return augmented data getter and setter methods for manager class
1199 */
1200 public static String getAugmentsDataMethodForManager(YangNode parent) {
1201 Map<YangAtomicPath, YangAugment> resolvedAugmentsForManager = getResolvedAugmentsForManager(parent);
1202 List<YangAtomicPath> targets = getSetOfNodeIdentifiers(parent);
1203 YangNode augmentedNode;
1204 String curNodeName;
1205 String returnType;
1206 String method;
1207 StringBuilder methods = new StringBuilder();
1208 String parentName;
1209 YangPluginConfig pluginConfig = ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig();
1210 for (YangAtomicPath nodeId : targets) {
1211 augmentedNode = resolvedAugmentsForManager.get(nodeId).getResolveNodeInPath().get(nodeId);
1212 if (((JavaFileInfoContainer) augmentedNode).getJavaFileInfo().getJavaName() != null) {
1213 curNodeName = ((JavaFileInfoContainer) augmentedNode).getJavaFileInfo().getJavaName();
1214 } else {
1215 curNodeName = getCapitalCase(getCamelCase(augmentedNode.getName(), pluginConfig
1216 .getConflictResolver()));
1217 }
1218 returnType = getAugmentedClassNameForDataMethods(augmentedNode, parent);
1219 parentName = getParentNodeNameForDataMethods(augmentedNode.getParent(), pluginConfig);
1220 method = getOverRideString() + getGetter(returnType, AUGMENTED
1221 + parentName + getCapitalCase(curNodeName),
1222 GENERATE_SERVICE_AND_MANAGER) + NEW_LINE;
1223 methods.append(method);
1224
1225 method = getOverRideString() + getSetter(parentName, getSmallCase(AUGMENTED) +
1226 getCapitalCase(parentName) + getCapitalCase(curNodeName),
1227 returnType,
1228 GENERATE_SERVICE_AND_MANAGER)
1229 + NEW_LINE;
1230 methods.append(method);
1231 }
1232 return methods.toString();
1233 }
1234
Bharat saraswal870c56f2016-02-20 21:57:16 +05301235}