blob: d9933a96ac8306a1258a58f4487077edc0b7de40 [file] [log] [blame]
Bharat saraswal97459962016-02-20 21:57:16 +05301/*
Brian O'Connor0f7908b2016-04-09 01:19:45 -07002 * Copyright 2016-present Open Networking Laboratory
Bharat saraswal97459962016-02-20 21:57:16 +05303 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.onosproject.yangutils.utils.io.impl;
18
Bharat saraswal9fab16b2016-09-23 23:27:24 +053019import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +053020import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
21import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_CLASS_JAVA_DOC;
22import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_INTERFACE_JAVA_DOC;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053023import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_LOWER_CASE;
Bharat saraswal84366c52016-03-23 19:40:35 +053024import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_OBJECT;
Bharat saraswalaf413b82016-07-14 15:18:20 +053025import static org.onosproject.yangutils.utils.UtilConstants.CLASS;
Bharat saraswal8beac342016-08-04 02:00:03 +053026import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +053027import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
Bharat saraswal68fa0d12016-04-19 01:00:16 +053028import static org.onosproject.yangutils.utils.UtilConstants.ENUM_ATTRIBUTE_JAVADOC;
29import static org.onosproject.yangutils.utils.UtilConstants.ENUM_CLASS_JAVADOC;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +053030import static org.onosproject.yangutils.utils.UtilConstants.EVENT_JAVA_DOC;
31import static org.onosproject.yangutils.utils.UtilConstants.EVENT_LISTENER_JAVA_DOC;
Bharat saraswal84366c52016-03-23 19:40:35 +053032import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +053033import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
34import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
Bharat saraswal84366c52016-03-23 19:40:35 +053035import static org.onosproject.yangutils.utils.UtilConstants.IMPL_CLASS_JAVA_DOC;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +053036import static org.onosproject.yangutils.utils.UtilConstants.INPUT;
Bharat saraswal84366c52016-03-23 19:40:35 +053037import static org.onosproject.yangutils.utils.UtilConstants.INTERFACE_JAVA_DOC;
Bharat saraswal8beac342016-08-04 02:00:03 +053038import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_ADD_TO_LIST;
Bharat saraswal84366c52016-03-23 19:40:35 +053039import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_BUILD;
Bharat saraswal84366c52016-03-23 19:40:35 +053040import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_CONSTRUCTOR;
Bharat saraswal84366c52016-03-23 19:40:35 +053041import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_END_LINE;
42import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_FIRST_LINE;
Bharat saraswal8beac342016-08-04 02:00:03 +053043import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_FOR_VALIDATOR;
44import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_FOR_VALIDATOR_RETURN;
Bharat saraswal84366c52016-03-23 19:40:35 +053045import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_GETTERS;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +053046import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_MANAGER_SETTERS;
Bharat saraswal84366c52016-03-23 19:40:35 +053047import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_OF;
48import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_PARAM;
49import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_RETURN;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +053050import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_RPC;
Bharat saraswal84366c52016-03-23 19:40:35 +053051import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_SETTERS;
52import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_SETTERS_COMMON;
53import static org.onosproject.yangutils.utils.UtilConstants.LIST;
Bharat saraswal8beac342016-08-04 02:00:03 +053054import static org.onosproject.yangutils.utils.UtilConstants.MIN_RANGE;
Bharat saraswal84366c52016-03-23 19:40:35 +053055import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Bharat saraswald532a4c2016-03-25 18:19:46 +053056import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE_ASTERISK;
Bharat saraswal84366c52016-03-23 19:40:35 +053057import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
Bharat saraswalaf413b82016-07-14 15:18:20 +053058import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +053059import static org.onosproject.yangutils.utils.UtilConstants.OF;
Bharat saraswal8beac342016-08-04 02:00:03 +053060import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM_JAVA_DOC;
Bharat saraswal84366c52016-03-23 19:40:35 +053061import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE_INFO_JAVADOC;
Bharat saraswal250a7472016-05-12 13:16:57 +053062import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE_INFO_JAVADOC_OF_CHILD;
Bharat saraswal84366c52016-03-23 19:40:35 +053063import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
Vidyashree Ramab3670472016-08-06 15:49:56 +053064import static org.onosproject.yangutils.utils.UtilConstants.QUEUE;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +053065import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_STRING;
66import static org.onosproject.yangutils.utils.UtilConstants.RPC_OUTPUT_STRING;
Vidyashree Ramab3670472016-08-06 15:49:56 +053067import static org.onosproject.yangutils.utils.UtilConstants.SET;
Bharat saraswal84366c52016-03-23 19:40:35 +053068import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +053069import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053070import static org.onosproject.yangutils.utils.UtilConstants.TO_CAPS;
71import static org.onosproject.yangutils.utils.UtilConstants.VALIDATE_RANGE;
Bharat saraswal84366c52016-03-23 19:40:35 +053072import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
Bharat saraswal250a7472016-05-12 13:16:57 +053073import static org.onosproject.yangutils.utils.UtilConstants.VOID;
Bharat saraswal8beac342016-08-04 02:00:03 +053074import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053075import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO_LOWER_CASE;
Bharat saraswalaf413b82016-07-14 15:18:20 +053076import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053077import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
Bharat saraswal84366c52016-03-23 19:40:35 +053078
Bharat saraswal97459962016-02-20 21:57:16 +053079/**
Bharat saraswal63f26fb2016-04-05 15:13:44 +053080 * Represents javadoc for the generated classes.
Bharat saraswal97459962016-02-20 21:57:16 +053081 */
82public final class JavaDocGen {
83
84 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +053085 * Creates an instance of java doc gen.
Bharat saraswal97459962016-02-20 21:57:16 +053086 */
87 private JavaDocGen() {
88 }
89
90 /**
Bharat saraswal97459962016-02-20 21:57:16 +053091 * Returns java docs.
92 *
Bharat saraswale304c252016-08-16 20:56:20 +053093 * @param type java doc type
94 * @param name name of the YangNode
95 * @param isList is list attribute
Vidyashree Ramab3670472016-08-06 15:49:56 +053096 * @param compilerAnnotation compiler annotations for user defined data type
Bharat saraswal2da23bf2016-08-25 15:28:39 +053097 * @return javaDocs.
Bharat saraswal97459962016-02-20 21:57:16 +053098 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +053099 public static String getJavaDoc(JavaDocType type, String name, boolean isList,
Bharat saraswale304c252016-08-16 20:56:20 +0530100 String compilerAnnotation) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530101
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530102 name = YangIoUtils.getSmallCase(name);
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530103 switch (type) {
104 case IMPL_CLASS: {
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530105 return generateForClass(name);
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530106 }
107 case BUILDER_CLASS: {
108 return generateForBuilderClass(name);
109 }
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530110 case OPERATION_CLASS: {
111 return generateForOpParamClass(name);
112 }
113 case OPERATION_BUILDER_CLASS: {
114 return generateForOpParamClass(name);
115 }
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530116 case INTERFACE: {
117 return generateForInterface(name);
118 }
119 case BUILDER_INTERFACE: {
120 return generateForBuilderInterface(name);
121 }
122 case PACKAGE_INFO: {
Bharat saraswal250a7472016-05-12 13:16:57 +0530123 return generateForPackage(name, isList);
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530124 }
125 case GETTER_METHOD: {
Vidyashree Ramab3670472016-08-06 15:49:56 +0530126 return generateForGetters(name, isList, compilerAnnotation);
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530127 }
128 case TYPE_DEF_SETTER_METHOD: {
129 return generateForTypeDefSetter(name);
130 }
131 case SETTER_METHOD: {
Vidyashree Ramab3670472016-08-06 15:49:56 +0530132 return generateForSetters(name, isList, compilerAnnotation);
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530133 }
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530134 case MANAGER_SETTER_METHOD: {
Vidyashree Ramab3670472016-08-06 15:49:56 +0530135 return generateForManagerSetters(name, isList, compilerAnnotation);
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530136 }
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530137 case OF_METHOD: {
138 return generateForOf(name);
139 }
140 case DEFAULT_CONSTRUCTOR: {
141 return generateForDefaultConstructors(name);
142 }
143 case BUILD_METHOD: {
144 return generateForBuild(name);
145 }
146 case TYPE_CONSTRUCTOR: {
147 return generateForTypeConstructor(name);
148 }
149 case FROM_METHOD: {
150 return generateForFromString(name);
151 }
152 case ENUM_CLASS: {
153 return generateForEnum(name);
154 }
155 case ENUM_ATTRIBUTE: {
156 return generateForEnumAttr(name);
157 }
158 case RPC_INTERFACE: {
Bharat saraswalaf413b82016-07-14 15:18:20 +0530159 return generateForRpcService(name);
Bharat saraswal250a7472016-05-12 13:16:57 +0530160 }
161 case RPC_MANAGER: {
Bharat saraswalaf413b82016-07-14 15:18:20 +0530162 return generateForClass(name);
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530163 }
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530164 case EVENT: {
165 return generateForEvent(name);
166 }
167 case EVENT_LISTENER: {
168 return generateForEventListener(name);
169 }
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530170 case EVENT_SUBJECT_CLASS: {
171 return generateForClass(name);
172 }
Bharat saraswal8beac342016-08-04 02:00:03 +0530173 case ADD_TO_LIST: {
174 return generateForAddToList(name);
175 }
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530176 default: {
177 return generateForConstructors(name);
178 }
Bharat saraswal97459962016-02-20 21:57:16 +0530179 }
Bharat saraswal97459962016-02-20 21:57:16 +0530180 }
181
182 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530183 * Generates javaDocs for enum's attributes.
184 *
185 * @param name attribute name
186 * @return javaDocs
187 */
188 private static String generateForEnumAttr(String name) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530189 return getJavaDocForClass(name, ENUM_ATTRIBUTE_JAVADOC,
190 FOUR_SPACE_INDENTATION);
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530191 }
192
193 /**
194 * Generates javaDocs for inner class enum's attributes.
195 *
196 * @param name attribute name
197 * @return javaDocs
198 */
199 public static String enumJavaDocForInnerClass(String name) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530200 return getJavaDocForClass(name, ENUM_ATTRIBUTE_JAVADOC,
201 EIGHT_SPACE_INDENTATION);
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530202 }
203
204 /**
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530205 * Generates javaDocs for rpc method.
206 *
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530207 * @param rpcName name of the rpc
208 * @param inputName name of input
209 * @param outputName name of output
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530210 * @return javaDocs of rpc method
211 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530212 public static String generateJavaDocForRpc(String rpcName, String inputName,
213 String outputName) {
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530214
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530215 String javadoc = getJavaDocStartLine(rpcName, JAVA_DOC_RPC) +
216 getJavaDocEmptyAsteriskLine();
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530217 if (!inputName.equals(EMPTY_STRING)) {
218 javadoc = javadoc + getInputString(inputName, rpcName);
219 }
Bharat saraswal250a7472016-05-12 13:16:57 +0530220 if (!outputName.equals(VOID)) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530221 javadoc = javadoc + getOutputString(getSmallCase(outputName),
222 rpcName);
Bharat saraswal250a7472016-05-12 13:16:57 +0530223 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530224 return javadoc + getJavaDocEndLine();
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530225 }
226
227 /**
228 * Returns output string of rpc.
229 *
230 * @param outputName name of output
Bharat saraswalaf413b82016-07-14 15:18:20 +0530231 * @param rpcName name of rpc
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530232 * @return javaDocs for output string of rpc
233 */
234 private static String getOutputString(String outputName, String rpcName) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530235 return FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + outputName + SPACE +
236 RPC_OUTPUT_STRING + rpcName + NEW_LINE;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530237 }
238
239 /**
240 * Returns input string of rpc.
241 *
242 * @param inputName name of input
Bharat saraswalaf413b82016-07-14 15:18:20 +0530243 * @param rpcName name of rpc
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530244 * @return javaDocs for input string of rpc
245 */
246 private static String getInputString(String inputName, String rpcName) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530247 if (inputName.isEmpty()) {
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530248 return null;
249 } else {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530250 return FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + inputName +
251 SPACE + RPC_INPUT_STRING + rpcName + NEW_LINE;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530252 }
253 }
254
255 /**
256 * Generates javaDoc for the interface.
257 *
258 * @param interfaceName interface name
259 * @return javaDocs
260 */
Bharat saraswal250a7472016-05-12 13:16:57 +0530261 private static String generateForRpcService(String interfaceName) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530262 return getJavaDocForClass(interfaceName, INTERFACE_JAVA_DOC, EMPTY_STRING);
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530263 }
264
265 /**
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530266 * Generates javaDoc for the event.
267 *
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530268 * @param name event class name
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530269 * @return javaDocs
270 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530271 private static String generateForEvent(String name) {
272 return getJavaDocForClass(name, EVENT_JAVA_DOC, EMPTY_STRING);
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530273 }
274
275 /**
276 * Generates javaDoc for the event listener.
277 *
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530278 * @param name event class name
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530279 * @return javaDocs
280 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530281 private static String generateForEventListener(String name) {
282 return getJavaDocForClass(name, EVENT_LISTENER_JAVA_DOC, EMPTY_STRING);
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530283 }
284
285 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530286 * Generates javaDocs for getter method.
Bharat saraswal97459962016-02-20 21:57:16 +0530287 *
Bharat saraswale304c252016-08-16 20:56:20 +0530288 * @param attribute attribute
289 * @param isList is list attribute
Vidyashree Ramab3670472016-08-06 15:49:56 +0530290 * @param compilerAnnotation compiler annotation
Bharat saraswal97459962016-02-20 21:57:16 +0530291 * @return javaDocs
292 */
Vidyashree Ramab3670472016-08-06 15:49:56 +0530293 private static String generateForGetters(String attribute, boolean isList,
Bharat saraswale304c252016-08-16 20:56:20 +0530294 String compilerAnnotation) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530295
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530296 String getter = getJavaDocStartLine(attribute, JAVA_DOC_GETTERS) +
297 getJavaDocEmptyAsteriskLine() +
298 FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + attribute + SPACE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530299
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530300 getter = getParamForAnnotation(getter, compilerAnnotation, isList) +
301 attribute + NEW_LINE + getJavaDocEndLine();
Bharat saraswal022dae92016-03-04 20:08:09 +0530302 return getter;
Bharat saraswal97459962016-02-20 21:57:16 +0530303 }
304
305 /**
306 * Generates javaDocs for setter method.
307 *
Bharat saraswale304c252016-08-16 20:56:20 +0530308 * @param attribute attribute
309 * @param isList is list attribute
Vidyashree Ramab3670472016-08-06 15:49:56 +0530310 * @param compilerAnnotation compiler annotation
Bharat saraswal97459962016-02-20 21:57:16 +0530311 * @return javaDocs
312 */
Vidyashree Ramab3670472016-08-06 15:49:56 +0530313 private static String generateForSetters(String attribute, boolean isList,
Bharat saraswale304c252016-08-16 20:56:20 +0530314 String compilerAnnotation) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530315
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530316 String setter = getJavaDocStartLine(attribute, JAVA_DOC_SETTERS) +
317 getJavaDocEmptyAsteriskLine() +
318 FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + attribute + SPACE;
319 setter = getParamForAnnotation(setter, compilerAnnotation, isList) +
320 attribute + NEW_LINE + getJavaDocReturnLine(attribute)
321 + getJavaDocEndLine();
Bharat saraswal022dae92016-03-04 20:08:09 +0530322 return setter;
323 }
324
325 /**
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530326 * Generates javaDocs for setter method.
327 *
Bharat saraswale304c252016-08-16 20:56:20 +0530328 * @param attribute attribute
329 * @param isList is list attribute
Vidyashree Ramab3670472016-08-06 15:49:56 +0530330 * @param compilerAnnotation compiler annotation
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530331 * @return javaDocs
332 */
Vidyashree Ramab3670472016-08-06 15:49:56 +0530333 private static String generateForManagerSetters(String attribute, boolean isList,
Bharat saraswale304c252016-08-16 20:56:20 +0530334 String compilerAnnotation) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530335 String setter = getJavaDocStartLine(attribute, JAVA_DOC_MANAGER_SETTERS) +
336 getJavaDocEmptyAsteriskLine() +
337 FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + attribute + SPACE;
338 setter = getParamForAnnotation(setter, compilerAnnotation, isList) +
339 attribute + NEW_LINE + getJavaDocEndLine();
340 return setter;
341 }
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530342
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530343 private static String getParamForAnnotation(
344 String setter, String compilerAnnotation, boolean isList) {
Vidyashree Ramab3670472016-08-06 15:49:56 +0530345 String attributeParam;
346 if (compilerAnnotation != null) {
347 switch (compilerAnnotation) {
348 case QUEUE: {
349 attributeParam = QUEUE.toLowerCase() + SPACE + OF + SPACE;
350 setter = setter + attributeParam;
351 break;
352 }
353 case SET: {
354 attributeParam = SET.toLowerCase() + SPACE + OF + SPACE;
355 setter = setter + attributeParam;
356 break;
357 }
358 case LIST: {
359 attributeParam = LIST.toLowerCase() + SPACE + OF + SPACE;
360 setter = setter + attributeParam;
361 break;
362 }
363 default: {
364
365 }
366 }
367 } else if (isList) {
368 attributeParam = LIST.toLowerCase() + SPACE + OF + SPACE;
369 setter = setter + attributeParam;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530370 } else {
371 setter = setter + VALUE + SPACE + OF + SPACE;
372 }
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530373 return setter;
374 }
375
376 /**
Bharat saraswal022dae92016-03-04 20:08:09 +0530377 * Generates javaDocs for of method.
378 *
379 * @param attribute attribute
380 * @return javaDocs
381 */
382 private static String generateForOf(String attribute) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530383 return getJavaDocStartLine(attribute, JAVA_DOC_OF) +
384 getJavaDocEmptyAsteriskLine() +
385 getJavaDocParamLine(attribute, VALUE) +
386 getJavaDocReturnLine(attribute) +
387 getJavaDocEndLine();
Bharat saraswal022dae92016-03-04 20:08:09 +0530388 }
389
390 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530391 * Generates javaDocs for from method.
392 *
393 * @param attribute attribute
394 * @return javaDocs
395 */
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530396 private static String generateForFromString(String attribute) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530397 return getJavaDocStartLine(attribute, JAVA_DOC_OF
398 + attribute + SPACE + FROM_STRING_METHOD_NAME + SPACE + INPUT +
399 SPACE + STRING_DATA_TYPE) +
400 getJavaDocEmptyAsteriskLine() +
401 getJavaDocParamLine(INPUT + SPACE + STRING_DATA_TYPE,
402 FROM_STRING_PARAM_NAME) +
403 getJavaDocReturnLine(attribute) +
404 getJavaDocEndLine();
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530405 }
406
407 /**
Bharat saraswal022dae92016-03-04 20:08:09 +0530408 * Generates javaDocs for typedef setter method.
409 *
410 * @param attribute attribute
411 * @return javaDocs
412 */
413 private static String generateForTypeDefSetter(String attribute) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530414 return getJavaDocStartLine(attribute, JAVA_DOC_SETTERS_COMMON) +
415 getJavaDocEmptyAsteriskLine() +
416 getJavaDocParamLine(attribute, VALUE) +
417 getJavaDocEndLine();
Bharat saraswal022dae92016-03-04 20:08:09 +0530418 }
419
420 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530421 * Generates javaDocs for the impl class.
Bharat saraswal97459962016-02-20 21:57:16 +0530422 *
423 * @param className class name
Vinod Kumar S08710982016-03-03 19:55:30 +0530424 * @return javaDocs
Bharat saraswal97459962016-02-20 21:57:16 +0530425 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530426 private static String generateForClass(String className) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530427 return getJavaDocForClass(className, IMPL_CLASS_JAVA_DOC, EMPTY_STRING);
Bharat saraswal97459962016-02-20 21:57:16 +0530428 }
429
430 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530431 * Generates javaDocs for enum.
432 *
433 * @param className enum class name
434 * @return javaDocs
435 */
436 private static String generateForEnum(String className) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530437 return getJavaDocForClass(className, ENUM_CLASS_JAVADOC, EMPTY_STRING);
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530438 }
439
440 /**
441 * Generates javaDocs for the builder class.
Bharat saraswal97459962016-02-20 21:57:16 +0530442 *
443 * @param className class name
Vinod Kumar S08710982016-03-03 19:55:30 +0530444 * @return javaDocs
Bharat saraswal97459962016-02-20 21:57:16 +0530445 */
446 private static String generateForBuilderClass(String className) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530447 return getJavaDocForClass(className, BUILDER_CLASS_JAVA_DOC,
448 EMPTY_STRING);
Bharat saraswal97459962016-02-20 21:57:16 +0530449 }
450
451 /**
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530452 * Generates javaDocs for the op param class.
453 *
454 * @param className class name
455 * @return javaDocs
456 */
457 private static String generateForOpParamClass(String className) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530458 return getJavaDocForClass(className, OP_PARAM_JAVA_DOC,
459 EMPTY_STRING);
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530460 }
461
462 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530463 * Generates javaDoc for the interface.
Bharat saraswal97459962016-02-20 21:57:16 +0530464 *
465 * @param interfaceName interface name
Vinod Kumar S08710982016-03-03 19:55:30 +0530466 * @return javaDocs
Bharat saraswal97459962016-02-20 21:57:16 +0530467 */
468 private static String generateForInterface(String interfaceName) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530469 return getJavaDocForClass(interfaceName, INTERFACE_JAVA_DOC,
470 EMPTY_STRING);
Bharat saraswal97459962016-02-20 21:57:16 +0530471 }
472
473 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530474 * Generates javaDoc for the builder interface.
Bharat saraswal97459962016-02-20 21:57:16 +0530475 *
Bharat saraswal8beac342016-08-04 02:00:03 +0530476 * @param builderForName builder for name
Vinod Kumar S08710982016-03-03 19:55:30 +0530477 * @return javaDocs
Bharat saraswal97459962016-02-20 21:57:16 +0530478 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530479 private static String generateForBuilderInterface(String builderForName) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530480 return getJavaDocForClass(builderForName, BUILDER_INTERFACE_JAVA_DOC,
481 EMPTY_STRING);
Bharat saraswal97459962016-02-20 21:57:16 +0530482 }
483
484 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530485 * Generates javaDocs for package-info.
Bharat saraswal97459962016-02-20 21:57:16 +0530486 *
487 * @param packageName package name
Bharat saraswal250a7472016-05-12 13:16:57 +0530488 * @param isChildNode is it child node
Bharat saraswal97459962016-02-20 21:57:16 +0530489 * @return javaDocs
490 */
Bharat saraswal250a7472016-05-12 13:16:57 +0530491 private static String generateForPackage(String packageName, boolean isChildNode) {
Bharat saraswal250a7472016-05-12 13:16:57 +0530492 if (isChildNode) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530493 return getJavaDocForClass(
494 packageName + PACKAGE_INFO_JAVADOC_OF_CHILD,
495 PACKAGE_INFO_JAVADOC, EMPTY_STRING);
Bharat saraswal250a7472016-05-12 13:16:57 +0530496 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530497 return getJavaDocForClass(packageName, PACKAGE_INFO_JAVADOC, EMPTY_STRING);
Bharat saraswal97459962016-02-20 21:57:16 +0530498 }
499
500 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530501 * Generates javaDocs for default constructor.
Bharat saraswal97459962016-02-20 21:57:16 +0530502 *
Bharat saraswal780eca32016-04-05 12:45:45 +0530503 * @param className class name
Bharat saraswal97459962016-02-20 21:57:16 +0530504 * @return javaDocs
505 */
Bharat saraswal780eca32016-04-05 12:45:45 +0530506 private static String generateForDefaultConstructors(String className) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530507 return getJavaDocStartLine(className, JAVA_DOC_CONSTRUCTOR) +
508 getJavaDocEndLine();
Bharat saraswal97459962016-02-20 21:57:16 +0530509 }
510
511 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530512 * Generates javaDocs for constructor with parameters.
Bharat saraswal97459962016-02-20 21:57:16 +0530513 *
Bharat saraswal97459962016-02-20 21:57:16 +0530514 * @param className class name
515 * @return javaDocs
516 */
517 private static String generateForConstructors(String className) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530518 return getJavaDocStartLine(className, JAVA_DOC_CONSTRUCTOR) +
519 getJavaDocEmptyAsteriskLine() +
520 getJavaDocParamLine(BUILDER_OBJECT + className,
521 BUILDER_LOWER_CASE + OBJECT) +
522 getJavaDocEndLine();
Bharat saraswal97459962016-02-20 21:57:16 +0530523 }
524
525 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530526 * Generates javaDocs for build.
Bharat saraswal97459962016-02-20 21:57:16 +0530527 *
Vinod Kumar S08710982016-03-03 19:55:30 +0530528 * @param buildName builder name
Bharat saraswal97459962016-02-20 21:57:16 +0530529 * @return javaDocs
530 */
531 private static String generateForBuild(String buildName) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530532 return getJavaDocStartLine(buildName, JAVA_DOC_BUILD) +
533 getJavaDocEmptyAsteriskLine() +
534 getJavaDocReturnLine(buildName) +
535 getJavaDocEndLine();
Bharat saraswal97459962016-02-20 21:57:16 +0530536 }
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530537
538 /**
539 * Generates javaDocs for type constructor.
540 *
541 * @param attribute attribute string
542 * @return javaDocs for type constructor
543 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530544 private static String generateForTypeConstructor(String attribute) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530545 return getJavaDocStartLine(attribute,
546 JAVA_DOC_CONSTRUCTOR) +
547 getJavaDocEmptyAsteriskLine() +
548 getJavaDocParamLine(attribute, attribute) +
549 getJavaDocEndLine();
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530550 }
Bharat saraswalaf413b82016-07-14 15:18:20 +0530551
552 /**
553 * Generates javaDocs for add augmentation method.
554 *
555 * @return javaDocs
556 */
557 public static String generateForAddAugmentation() {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530558 return getJavaDocStartLine(YANG_AUGMENTED_INFO_LOWER_CASE,
559 JAVA_DOC_SETTERS_COMMON) +
560 getJavaDocEmptyAsteriskLine() +
561 getJavaDocParamLine(YANG_AUGMENTED_INFO_LOWER_CASE, VALUE) +
562 getJavaDocParamLine(YANG_AUGMENTED_INFO_LOWER_CASE, CLASS +
563 OBJECT_STRING) +
564 getJavaDocEndLine();
Bharat saraswalaf413b82016-07-14 15:18:20 +0530565 }
566
Bharat saraswal64e7e232016-07-14 23:33:55 +0530567 /**
568 * Returns javadoc for get augmentation method.
569 *
570 * @return javadoc for get augmentation method
571 */
Bharat saraswalaf413b82016-07-14 15:18:20 +0530572 public static String generateForGetAugmentation() {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530573 return NEW_LINE + getJavaDocStartLine(YANG_AUGMENTED_INFO_LOWER_CASE,
574 JAVA_DOC_GETTERS) +
575 getJavaDocEmptyAsteriskLine() +
576 getJavaDocParamLine(YANG_AUGMENTED_INFO_LOWER_CASE, CLASS +
577 OBJECT_STRING) +
578 getJavaDocReturnLine(YANG_AUGMENTED_INFO) +
579 getJavaDocEndLine();
Bharat saraswalaf413b82016-07-14 15:18:20 +0530580 }
581
582 /**
Bharat saraswal64e7e232016-07-14 23:33:55 +0530583 * Returns javadoc for validator method.
584 *
585 * @return javadoc for validator method
586 */
587 public static String generateForValidatorMethod() {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530588 return getJavaDocStartLine(VALIDATE_RANGE, JAVA_DOC_FOR_VALIDATOR) +
589 getJavaDocEmptyAsteriskLine() +
590 trimAtLast(getJavaDocParamLine(MIN_RANGE, MIN_RANGE), NEW_LINE) +
591 getJavaDocParamLine(MIN_RANGE, MIN_RANGE) +
592 getJavaDocReturnLine(JAVA_DOC_FOR_VALIDATOR_RETURN) +
593 getJavaDocEndLine();
Bharat saraswal64e7e232016-07-14 23:33:55 +0530594 }
595
596 /**
Bharat saraswal8beac342016-08-04 02:00:03 +0530597 * Generates javaDocs for type constructor.
598 *
599 * @param attribute attribute string
600 * @return javaDocs for type constructor
601 */
602 public static String generateForGetMethodWithAttribute(String attribute) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530603 attribute = getSmallCase(attribute);
604 return getJavaDocStartLine(attribute, JAVA_DOC_GETTERS) +
605 getJavaDocEmptyAsteriskLine() +
606 getJavaDocParamLine(attribute, attribute) +
607 getJavaDocReturnLine(attribute) +
608 getJavaDocEndLine();
Bharat saraswal8beac342016-08-04 02:00:03 +0530609 }
610
611 /**
612 * Returns javaDocs for add to list method.
613 *
614 * @param attribute attribute
615 * @return javaDocs
616 */
617 private static String generateForAddToList(String attribute) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530618 return getJavaDocStartLine(attribute, JAVA_DOC_ADD_TO_LIST) +
619 getJavaDocEmptyAsteriskLine() +
620 getJavaDocParamLine(attribute, ADD_STRING + TO_CAPS) +
621 getJavaDocReturnLine(BUILDER_OBJECT + attribute) +
622 getJavaDocEndLine();
Bharat saraswal8beac342016-08-04 02:00:03 +0530623 }
624
625 /**
626 * Generates for builder method.
627 *
628 * @param attribute attribute
629 * @return javaDocs
630 */
631 public static String generateForBuilderMethod(String attribute) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530632 return getJavaDocStartLine(attribute + BUILDER, JAVA_DOC_GETTERS) +
633 getJavaDocEmptyAsteriskLine() +
634 getJavaDocReturnLine(attribute + BUILDER) +
635 getJavaDocEndLine();
636 }
Bharat saraswal8beac342016-08-04 02:00:03 +0530637
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530638 /**
639 * Returns class javadoc.
640 *
641 * @param name name of class
642 * @param type type of javadoc
643 * @param indent indentation
644 * @return class javadoc
645 */
646 private static String getJavaDocForClass(String name, String type,
647 String indent) {
648 return NEW_LINE + indent + JAVA_DOC_FIRST_LINE + indent + type +
649 getSmallCase(name) + PERIOD + NEW_LINE + indent + JAVA_DOC_END_LINE;
650 }
651
652 /**
653 * Returns javadoc start line.
654 *
655 * @param name name of attribute
656 * @param javaDoc type of javadoc
657 * @return javadoc start line
658 */
659 private static String getJavaDocStartLine(String name, String javaDoc) {
660 return FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE +
661 FOUR_SPACE_INDENTATION + javaDoc + getSmallCase(name) +
662 PERIOD + NEW_LINE;
663 }
664
665 /**
666 * Returns asterisk line.
667 *
668 * @return asterisk line
669 */
670 private static String getJavaDocEmptyAsteriskLine() {
671 return FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK;
672 }
673
674 /**
675 * Returns javadoc param line.
676 *
677 * @param name name of attribute
678 * @return javadoc param line
679 */
680 private static String getJavaDocParamLine(String name, String paraName) {
681 return FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM +
682 getSmallCase(paraName) + SPACE + VALUE + SPACE + OF + SPACE +
683 getSmallCase(name) + NEW_LINE;
684 }
685
686 /**
687 * Returns javadoc return line.
688 *
689 * @param name name of attribute
690 * @return javadoc return line
691 */
692 private static String getJavaDocReturnLine(String name) {
693 return FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + getSmallCase(name)
694 + NEW_LINE;
695 }
696
697 /**
698 * Returns javadoc end line.
699 *
700 * @return javadoc end line
701 */
702 private static String getJavaDocEndLine() {
703 return FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal8beac342016-08-04 02:00:03 +0530704 }
705
706
707 /**
Bharat saraswalaf413b82016-07-14 15:18:20 +0530708 * JavaDocs types.
709 */
710 public enum JavaDocType {
711
712 /**
713 * For class.
714 */
715 IMPL_CLASS,
716
717 /**
718 * For builder class.
719 */
720 BUILDER_CLASS,
721
722 /**
723 * For interface.
724 */
725 INTERFACE,
726
727 /**
728 * For builder interface.
729 */
730 BUILDER_INTERFACE,
731
732 /**
733 * For package-info.
734 */
735 PACKAGE_INFO,
736
737 /**
738 * For getters.
739 */
740 GETTER_METHOD,
741
742 /**
743 * For rpc service.
744 */
745 RPC_INTERFACE,
746
747 /**
748 * For rpc manager.
749 */
750 RPC_MANAGER,
751
752 /**
753 * For event.
754 */
755 EVENT,
756
757 /**
758 * For event listener.
759 */
760 EVENT_LISTENER,
761
762 /**
763 * For setters.
764 */
765 SETTER_METHOD,
766
767 /**
768 * For type def's setters.
769 */
770 TYPE_DEF_SETTER_METHOD,
771
772 /**
773 * For of method.
774 */
775 OF_METHOD,
776
777 /**
778 * For default constructor.
779 */
780 DEFAULT_CONSTRUCTOR,
781
782 /**
783 * For constructor.
784 */
785 CONSTRUCTOR,
786
787 /**
788 * For from method.
789 */
790 FROM_METHOD,
791
792 /**
793 * For type constructor.
794 */
795 TYPE_CONSTRUCTOR,
796
797 /**
798 * For build.
799 */
800 BUILD_METHOD,
801
802 /**
803 * For enum.
804 */
805 ENUM_CLASS,
806
807 /**
808 * For enum's attributes.
809 */
810 ENUM_ATTRIBUTE,
811
812 /**
813 * For manager setters.
814 */
815 MANAGER_SETTER_METHOD,
816
817 /**
818 * For event subject.
819 */
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530820 EVENT_SUBJECT_CLASS,
821
822 /**
823 * For operation.
824 */
825 OPERATION_CLASS,
826
827 /**
828 * For operation builder.
829 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530830 OPERATION_BUILDER_CLASS,
831
832 /**
833 * For add to list.
834 */
835 ADD_TO_LIST,
Bharat saraswalaf413b82016-07-14 15:18:20 +0530836 }
Bharat saraswal97459962016-02-20 21:57:16 +0530837}