blob: 3b473861ada8d01f853cf1784838a300e192c469 [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
Shankara-Huaweib7564772016-08-02 18:13:13 +053019import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
20
Bharat saraswalaf413b82016-07-14 15:18:20 +053021import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
Bharat saraswal84366c52016-03-23 19:40:35 +053022import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
23import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_CLASS_JAVA_DOC;
24import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_INTERFACE_JAVA_DOC;
25import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_OBJECT;
Bharat saraswalaf413b82016-07-14 15:18:20 +053026import static org.onosproject.yangutils.utils.UtilConstants.CLASS;
Bharat saraswal8beac342016-08-04 02:00:03 +053027import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +053028import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
Bharat saraswal68fa0d12016-04-19 01:00:16 +053029import static org.onosproject.yangutils.utils.UtilConstants.ENUM_ATTRIBUTE_JAVADOC;
30import static org.onosproject.yangutils.utils.UtilConstants.ENUM_CLASS_JAVADOC;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +053031import static org.onosproject.yangutils.utils.UtilConstants.EVENT_JAVA_DOC;
32import static org.onosproject.yangutils.utils.UtilConstants.EVENT_LISTENER_JAVA_DOC;
Bharat saraswal84366c52016-03-23 19:40:35 +053033import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +053034import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
35import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
Bharat saraswal84366c52016-03-23 19:40:35 +053036import static org.onosproject.yangutils.utils.UtilConstants.IMPL_CLASS_JAVA_DOC;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +053037import static org.onosproject.yangutils.utils.UtilConstants.INPUT;
Bharat saraswal84366c52016-03-23 19:40:35 +053038import static org.onosproject.yangutils.utils.UtilConstants.INTERFACE_JAVA_DOC;
Bharat saraswal8beac342016-08-04 02:00:03 +053039import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_ADD_TO_LIST;
Bharat saraswal84366c52016-03-23 19:40:35 +053040import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_BUILD;
41import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_BUILD_RETURN;
42import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_CONSTRUCTOR;
Bharat saraswal84366c52016-03-23 19:40:35 +053043import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_END_LINE;
44import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_FIRST_LINE;
Bharat saraswal8beac342016-08-04 02:00:03 +053045import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_FOR_VALIDATOR;
46import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_FOR_VALIDATOR_RETURN;
Bharat saraswal84366c52016-03-23 19:40:35 +053047import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_GETTERS;
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +053048import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_MANAGER_SETTERS;
Bharat saraswal84366c52016-03-23 19:40:35 +053049import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_OF;
50import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_PARAM;
51import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_RETURN;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +053052import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_RPC;
Bharat saraswal84366c52016-03-23 19:40:35 +053053import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_SETTERS;
54import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_SETTERS_COMMON;
55import static org.onosproject.yangutils.utils.UtilConstants.LIST;
Bharat saraswalaf413b82016-07-14 15:18:20 +053056import static org.onosproject.yangutils.utils.UtilConstants.MAP;
Bharat saraswal8beac342016-08-04 02:00:03 +053057import static org.onosproject.yangutils.utils.UtilConstants.MAX_RANGE;
58import static org.onosproject.yangutils.utils.UtilConstants.MIN_RANGE;
Bharat saraswal84366c52016-03-23 19:40:35 +053059import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Bharat saraswald532a4c2016-03-25 18:19:46 +053060import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE_ASTERISK;
Bharat saraswal84366c52016-03-23 19:40:35 +053061import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
Bharat saraswalaf413b82016-07-14 15:18:20 +053062import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +053063import static org.onosproject.yangutils.utils.UtilConstants.OF;
Bharat saraswal8beac342016-08-04 02:00:03 +053064import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM_JAVA_DOC;
Bharat saraswal84366c52016-03-23 19:40:35 +053065import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE_INFO_JAVADOC;
Bharat saraswal250a7472016-05-12 13:16:57 +053066import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE_INFO_JAVADOC_OF_CHILD;
Bharat saraswal84366c52016-03-23 19:40:35 +053067import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +053068import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_STRING;
69import static org.onosproject.yangutils.utils.UtilConstants.RPC_OUTPUT_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +053070import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +053071import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
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 saraswalaf413b82016-07-14 15:18:20 +053075import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
76import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
Bharat saraswal84366c52016-03-23 19:40:35 +053077
Bharat saraswal97459962016-02-20 21:57:16 +053078/**
Bharat saraswal63f26fb2016-04-05 15:13:44 +053079 * Represents javadoc for the generated classes.
Bharat saraswal97459962016-02-20 21:57:16 +053080 */
81public final class JavaDocGen {
82
83 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +053084 * Creates an instance of java doc gen.
Bharat saraswal97459962016-02-20 21:57:16 +053085 */
86 private JavaDocGen() {
87 }
88
89 /**
Bharat saraswal97459962016-02-20 21:57:16 +053090 * Returns java docs.
91 *
Bharat saraswalaf413b82016-07-14 15:18:20 +053092 * @param type java doc type
93 * @param name name of the YangNode
94 * @param isList is list attribute
Bharat saraswal715d3fc2016-05-17 19:59:16 +053095 * @param pluginConfig plugin configurations
Bharat saraswal8beac342016-08-04 02:00:03 +053096 * @return javaDocs.
Bharat saraswal97459962016-02-20 21:57:16 +053097 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +053098 public static String getJavaDoc(JavaDocType type, String name, boolean isList, YangPluginConfig pluginConfig) {
Bharat saraswal84366c52016-03-23 19:40:35 +053099
Gaurav Agrawalbfce9342016-06-15 13:58:01 +0530100 name = YangIoUtils.getSmallCase(getCamelCase(name, pluginConfig.getConflictResolver()));
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530101 switch (type) {
102 case IMPL_CLASS: {
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530103 return generateForClass(name);
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530104 }
105 case BUILDER_CLASS: {
106 return generateForBuilderClass(name);
107 }
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530108 case OPERATION_CLASS: {
109 return generateForOpParamClass(name);
110 }
111 case OPERATION_BUILDER_CLASS: {
112 return generateForOpParamClass(name);
113 }
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530114 case INTERFACE: {
115 return generateForInterface(name);
116 }
117 case BUILDER_INTERFACE: {
118 return generateForBuilderInterface(name);
119 }
120 case PACKAGE_INFO: {
Bharat saraswal250a7472016-05-12 13:16:57 +0530121 return generateForPackage(name, isList);
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530122 }
123 case GETTER_METHOD: {
124 return generateForGetters(name, isList);
125 }
126 case TYPE_DEF_SETTER_METHOD: {
127 return generateForTypeDefSetter(name);
128 }
129 case SETTER_METHOD: {
130 return generateForSetters(name, isList);
131 }
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530132 case MANAGER_SETTER_METHOD: {
133 return generateForManagerSetters(name, isList);
134 }
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530135 case OF_METHOD: {
136 return generateForOf(name);
137 }
138 case DEFAULT_CONSTRUCTOR: {
139 return generateForDefaultConstructors(name);
140 }
141 case BUILD_METHOD: {
142 return generateForBuild(name);
143 }
144 case TYPE_CONSTRUCTOR: {
145 return generateForTypeConstructor(name);
146 }
147 case FROM_METHOD: {
148 return generateForFromString(name);
149 }
150 case ENUM_CLASS: {
151 return generateForEnum(name);
152 }
153 case ENUM_ATTRIBUTE: {
154 return generateForEnumAttr(name);
155 }
156 case RPC_INTERFACE: {
Bharat saraswalaf413b82016-07-14 15:18:20 +0530157 return generateForRpcService(name);
Bharat saraswal250a7472016-05-12 13:16:57 +0530158 }
159 case RPC_MANAGER: {
Bharat saraswalaf413b82016-07-14 15:18:20 +0530160 return generateForClass(name);
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530161 }
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530162 case EVENT: {
163 return generateForEvent(name);
164 }
165 case EVENT_LISTENER: {
166 return generateForEventListener(name);
167 }
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530168 case EVENT_SUBJECT_CLASS: {
169 return generateForClass(name);
170 }
Bharat saraswal8beac342016-08-04 02:00:03 +0530171 case ADD_TO_LIST: {
172 return generateForAddToList(name);
173 }
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530174 default: {
175 return generateForConstructors(name);
176 }
Bharat saraswal97459962016-02-20 21:57:16 +0530177 }
Bharat saraswal97459962016-02-20 21:57:16 +0530178 }
179
180 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530181 * Generates javaDocs for enum's attributes.
182 *
183 * @param name attribute name
184 * @return javaDocs
185 */
186 private static String generateForEnumAttr(String name) {
Bharat saraswal8beac342016-08-04 02:00:03 +0530187 return EIGHT_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + EIGHT_SPACE_INDENTATION + ENUM_ATTRIBUTE_JAVADOC
188 + name + PERIOD + NEW_LINE + EIGHT_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530189 }
190
191 /**
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530192 * Generates javaDocs for rpc method.
193 *
Bharat saraswalaf413b82016-07-14 15:18:20 +0530194 * @param rpcName name of the rpc
195 * @param inputName name of input
196 * @param outputName name of output
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530197 * @param pluginConfig plugin configurations
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530198 * @return javaDocs of rpc method
199 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530200 public static String generateJavaDocForRpc(String rpcName, String inputName, String outputName,
Bharat saraswalaf413b82016-07-14 15:18:20 +0530201 YangPluginConfig pluginConfig) {
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530202 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530203
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530204 String javadoc =
205 NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_RPC
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530206 + rpcName + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK;
207 if (!inputName.equals(EMPTY_STRING)) {
208 javadoc = javadoc + getInputString(inputName, rpcName);
209 }
Bharat saraswal250a7472016-05-12 13:16:57 +0530210 if (!outputName.equals(VOID)) {
211 javadoc = javadoc + getOutputString(outputName, rpcName);
212 }
213 return javadoc + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530214 }
215
216 /**
217 * Returns output string of rpc.
218 *
219 * @param outputName name of output
Bharat saraswalaf413b82016-07-14 15:18:20 +0530220 * @param rpcName name of rpc
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530221 * @return javaDocs for output string of rpc
222 */
223 private static String getOutputString(String outputName, String rpcName) {
224 return FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + outputName + SPACE + RPC_OUTPUT_STRING + rpcName + NEW_LINE;
225 }
226
227 /**
228 * Returns input string of rpc.
229 *
230 * @param inputName name of input
Bharat saraswalaf413b82016-07-14 15:18:20 +0530231 * @param rpcName name of rpc
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530232 * @return javaDocs for input string of rpc
233 */
234 private static String getInputString(String inputName, String rpcName) {
235 if (inputName.equals("")) {
236 return null;
237 } else {
238 return FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + inputName + SPACE + RPC_INPUT_STRING + rpcName + NEW_LINE;
239 }
240 }
241
242 /**
243 * Generates javaDoc for the interface.
244 *
245 * @param interfaceName interface name
246 * @return javaDocs
247 */
Bharat saraswal250a7472016-05-12 13:16:57 +0530248 private static String generateForRpcService(String interfaceName) {
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530249 return NEW_LINE + JAVA_DOC_FIRST_LINE + INTERFACE_JAVA_DOC + interfaceName + PERIOD + NEW_LINE
250 + JAVA_DOC_END_LINE;
251 }
252
253 /**
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530254 * Generates javaDoc for the event.
255 *
256 * @param eventClassName event class name
257 * @return javaDocs
258 */
259 private static String generateForEvent(String eventClassName) {
260 return NEW_LINE + JAVA_DOC_FIRST_LINE + EVENT_JAVA_DOC + eventClassName + PERIOD + NEW_LINE
261 + JAVA_DOC_END_LINE;
262 }
263
264 /**
265 * Generates javaDoc for the event listener.
266 *
267 * @param eventListenerInterfaceName event class name
268 * @return javaDocs
269 */
270 private static String generateForEventListener(String eventListenerInterfaceName) {
271 return NEW_LINE + JAVA_DOC_FIRST_LINE + EVENT_LISTENER_JAVA_DOC + eventListenerInterfaceName
272 + PERIOD + NEW_LINE + JAVA_DOC_END_LINE;
273 }
274
275 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530276 * Generates javaDocs for getter method.
Bharat saraswal97459962016-02-20 21:57:16 +0530277 *
278 * @param attribute attribute
Bharat saraswalaf413b82016-07-14 15:18:20 +0530279 * @param isList is list attribute
Bharat saraswal97459962016-02-20 21:57:16 +0530280 * @return javaDocs
281 */
Bharat saraswal022dae92016-03-04 20:08:09 +0530282 private static String generateForGetters(String attribute, boolean isList) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530283
284 String getter = NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
Bharat saraswald532a4c2016-03-25 18:19:46 +0530285 + JAVA_DOC_GETTERS + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
Bharat saraswal84366c52016-03-23 19:40:35 +0530286 + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN;
Bharat saraswal022dae92016-03-04 20:08:09 +0530287 if (isList) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530288 String listAttribute = LIST.toLowerCase() + SPACE + OF + SPACE;
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530289 getter = getter + listAttribute;
Bharat saraswal84366c52016-03-23 19:40:35 +0530290 } else {
291 getter = getter + VALUE + SPACE + OF + SPACE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530292 }
293
Bharat saraswal84366c52016-03-23 19:40:35 +0530294 getter = getter + attribute + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530295 return getter;
Bharat saraswal97459962016-02-20 21:57:16 +0530296 }
297
298 /**
299 * Generates javaDocs for setter method.
300 *
301 * @param attribute attribute
Bharat saraswalaf413b82016-07-14 15:18:20 +0530302 * @param isList is list attribute
Bharat saraswal97459962016-02-20 21:57:16 +0530303 * @return javaDocs
304 */
Bharat saraswal022dae92016-03-04 20:08:09 +0530305 private static String generateForSetters(String attribute, boolean isList) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530306
307 String setter = NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
Bharat saraswald532a4c2016-03-25 18:19:46 +0530308 + JAVA_DOC_SETTERS + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
Bharat saraswal84366c52016-03-23 19:40:35 +0530309 + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + attribute + SPACE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530310 if (isList) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530311 String listAttribute = LIST.toLowerCase() + SPACE + OF + SPACE;
Vinod Kumar S9f26ae52016-03-23 15:30:27 +0530312 setter = setter + listAttribute;
313 } else {
Bharat saraswal84366c52016-03-23 19:40:35 +0530314 setter = setter + VALUE + SPACE + OF + SPACE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530315 }
Bharat saraswal5cd9e9c2016-05-26 23:48:38 +0530316 setter = setter + attribute + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + BUILDER_OBJECT
317 + attribute
Bharat saraswal84366c52016-03-23 19:40:35 +0530318 + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530319 return setter;
320 }
321
322 /**
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530323 * Generates javaDocs for setter method.
324 *
325 * @param attribute attribute
Bharat saraswalaf413b82016-07-14 15:18:20 +0530326 * @param isList is list attribute
VinodKumarS-Huawei6266db32016-05-10 17:58:57 +0530327 * @return javaDocs
328 */
329 private static String generateForManagerSetters(String attribute, boolean isList) {
330
331 String setter = NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
332 + JAVA_DOC_MANAGER_SETTERS + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
333 + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + attribute + SPACE;
334 if (isList) {
335 String listAttribute = LIST.toLowerCase() + SPACE + OF + SPACE;
336 setter = setter + listAttribute;
337 } else {
338 setter = setter + VALUE + SPACE + OF + SPACE;
339 }
340 setter = setter + attribute
341 + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
342 return setter;
343 }
344
345 /**
Bharat saraswal022dae92016-03-04 20:08:09 +0530346 * Generates javaDocs for of method.
347 *
348 * @param attribute attribute
349 * @return javaDocs
350 */
351 private static String generateForOf(String attribute) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530352 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_OF
Bharat saraswald532a4c2016-03-25 18:19:46 +0530353 + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION
Bharat saraswal84366c52016-03-23 19:40:35 +0530354 + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute + NEW_LINE
355 + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + OBJECT + SPACE + OF + SPACE + attribute + NEW_LINE
356 + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530357 }
358
359 /**
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530360 * Generates javaDocs for from method.
361 *
362 * @param attribute attribute
363 * @return javaDocs
364 */
Gaurav Agrawal02a60de2016-04-20 15:49:17 +0530365 private static String generateForFromString(String attribute) {
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530366
367 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_OF
368 + attribute + SPACE + FROM_STRING_METHOD_NAME + SPACE + INPUT + SPACE + STRING_DATA_TYPE + PERIOD
369 + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM
Bharat saraswal250a7472016-05-12 13:16:57 +0530370 + FROM_STRING_PARAM_NAME + SPACE + INPUT + SPACE + STRING_DATA_TYPE + NEW_LINE
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530371 + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + OBJECT + SPACE + OF + SPACE + attribute + NEW_LINE
372 + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
373 }
374
375 /**
Bharat saraswal022dae92016-03-04 20:08:09 +0530376 * Generates javaDocs for typedef setter method.
377 *
378 * @param attribute attribute
379 * @return javaDocs
380 */
381 private static String generateForTypeDefSetter(String attribute) {
Vidyashree Rama13960652016-04-26 15:06:06 +0530382 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
Bharat saraswald532a4c2016-03-25 18:19:46 +0530383 + JAVA_DOC_SETTERS_COMMON + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
Bharat saraswal84366c52016-03-23 19:40:35 +0530384 + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute
Vidyashree Rama13960652016-04-26 15:06:06 +0530385 + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal022dae92016-03-04 20:08:09 +0530386 }
387
388 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530389 * Generates javaDocs for the impl class.
Bharat saraswal97459962016-02-20 21:57:16 +0530390 *
391 * @param className class name
Vinod Kumar S08710982016-03-03 19:55:30 +0530392 * @return javaDocs
Bharat saraswal97459962016-02-20 21:57:16 +0530393 */
Bharat saraswal715d3fc2016-05-17 19:59:16 +0530394 private static String generateForClass(String className) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530395 return NEW_LINE + JAVA_DOC_FIRST_LINE + IMPL_CLASS_JAVA_DOC + className + PERIOD + NEW_LINE + JAVA_DOC_END_LINE;
Bharat saraswal97459962016-02-20 21:57:16 +0530396 }
397
398 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530399 * Generates javaDocs for enum.
400 *
401 * @param className enum class name
402 * @return javaDocs
403 */
404 private static String generateForEnum(String className) {
405 return NEW_LINE + NEW_LINE + JAVA_DOC_FIRST_LINE + ENUM_CLASS_JAVADOC + className + PERIOD + NEW_LINE
406 + JAVA_DOC_END_LINE;
407 }
408
409 /**
410 * Generates javaDocs for the builder class.
Bharat saraswal97459962016-02-20 21:57:16 +0530411 *
412 * @param className class name
Vinod Kumar S08710982016-03-03 19:55:30 +0530413 * @return javaDocs
Bharat saraswal97459962016-02-20 21:57:16 +0530414 */
415 private static String generateForBuilderClass(String className) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530416 return NEW_LINE + JAVA_DOC_FIRST_LINE + BUILDER_CLASS_JAVA_DOC + className + PERIOD + NEW_LINE
417 + JAVA_DOC_END_LINE;
Bharat saraswal97459962016-02-20 21:57:16 +0530418 }
419
420 /**
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530421 * Generates javaDocs for the op param class.
422 *
423 * @param className class name
424 * @return javaDocs
425 */
426 private static String generateForOpParamClass(String className) {
427 return NEW_LINE + JAVA_DOC_FIRST_LINE + OP_PARAM_JAVA_DOC + className + PERIOD + NEW_LINE
428 + JAVA_DOC_END_LINE;
429 }
430
431 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530432 * Generates javaDoc for the interface.
Bharat saraswal97459962016-02-20 21:57:16 +0530433 *
434 * @param interfaceName interface name
Vinod Kumar S08710982016-03-03 19:55:30 +0530435 * @return javaDocs
Bharat saraswal97459962016-02-20 21:57:16 +0530436 */
437 private static String generateForInterface(String interfaceName) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530438 return NEW_LINE + JAVA_DOC_FIRST_LINE + INTERFACE_JAVA_DOC + interfaceName + PERIOD + NEW_LINE
439 + JAVA_DOC_END_LINE;
Bharat saraswal97459962016-02-20 21:57:16 +0530440 }
441
442 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530443 * Generates javaDoc for the builder interface.
Bharat saraswal97459962016-02-20 21:57:16 +0530444 *
Bharat saraswal8beac342016-08-04 02:00:03 +0530445 * @param builderForName builder for name
Vinod Kumar S08710982016-03-03 19:55:30 +0530446 * @return javaDocs
Bharat saraswal97459962016-02-20 21:57:16 +0530447 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530448 private static String generateForBuilderInterface(String builderForName) {
449 return JAVA_DOC_FIRST_LINE + BUILDER_INTERFACE_JAVA_DOC + builderForName + PERIOD + NEW_LINE
Bharat saraswal84366c52016-03-23 19:40:35 +0530450 + JAVA_DOC_END_LINE;
Bharat saraswal97459962016-02-20 21:57:16 +0530451 }
452
453 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530454 * Generates javaDocs for package-info.
Bharat saraswal97459962016-02-20 21:57:16 +0530455 *
456 * @param packageName package name
Bharat saraswal250a7472016-05-12 13:16:57 +0530457 * @param isChildNode is it child node
Bharat saraswal97459962016-02-20 21:57:16 +0530458 * @return javaDocs
459 */
Bharat saraswal250a7472016-05-12 13:16:57 +0530460 private static String generateForPackage(String packageName, boolean isChildNode) {
461 String javaDoc = JAVA_DOC_FIRST_LINE + PACKAGE_INFO_JAVADOC + packageName;
462 if (isChildNode) {
463 javaDoc = javaDoc + PACKAGE_INFO_JAVADOC_OF_CHILD;
464 }
465 return javaDoc + PERIOD + NEW_LINE + JAVA_DOC_END_LINE;
Bharat saraswal97459962016-02-20 21:57:16 +0530466 }
467
468 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530469 * Generates javaDocs for default constructor.
Bharat saraswal97459962016-02-20 21:57:16 +0530470 *
Bharat saraswal780eca32016-04-05 12:45:45 +0530471 * @param className class name
Bharat saraswal97459962016-02-20 21:57:16 +0530472 * @return javaDocs
473 */
Bharat saraswal780eca32016-04-05 12:45:45 +0530474 private static String generateForDefaultConstructors(String className) {
475 return FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR + className
476 + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal97459962016-02-20 21:57:16 +0530477 }
478
479 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530480 * Generates javaDocs for constructor with parameters.
Bharat saraswal97459962016-02-20 21:57:16 +0530481 *
Bharat saraswal97459962016-02-20 21:57:16 +0530482 * @param className class name
483 * @return javaDocs
484 */
485 private static String generateForConstructors(String className) {
Bharat saraswal250a7472016-05-12 13:16:57 +0530486 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR
Bharat saraswal8beac342016-08-04 02:00:03 +0530487 + className + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
Bharat saraswal250a7472016-05-12 13:16:57 +0530488 + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + BUILDER.toLowerCase() + OBJECT + SPACE + BUILDER_OBJECT
489 + className + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal97459962016-02-20 21:57:16 +0530490 }
491
492 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530493 * Generates javaDocs for build.
Bharat saraswal97459962016-02-20 21:57:16 +0530494 *
Vinod Kumar S08710982016-03-03 19:55:30 +0530495 * @param buildName builder name
Bharat saraswal97459962016-02-20 21:57:16 +0530496 * @return javaDocs
497 */
498 private static String generateForBuild(String buildName) {
Bharat saraswal84366c52016-03-23 19:40:35 +0530499 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_BUILD
Bharat saraswald532a4c2016-03-25 18:19:46 +0530500 + buildName + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION
Bharat saraswal84366c52016-03-23 19:40:35 +0530501 + JAVA_DOC_RETURN + JAVA_DOC_BUILD_RETURN + buildName + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION
502 + JAVA_DOC_END_LINE;
Bharat saraswal97459962016-02-20 21:57:16 +0530503 }
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530504
505 /**
506 * Generates javaDocs for type constructor.
507 *
508 * @param attribute attribute string
509 * @return javaDocs for type constructor
510 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530511 private static String generateForTypeConstructor(String attribute) {
Vidyashree Rama13960652016-04-26 15:06:06 +0530512 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530513 + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION
514 + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute + NEW_LINE
Vidyashree Rama13960652016-04-26 15:06:06 +0530515 + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Gaurav Agrawal97a5e1c2016-04-18 18:53:11 +0530516 }
Bharat saraswalaf413b82016-07-14 15:18:20 +0530517
518 /**
519 * Generates javaDocs for add augmentation method.
520 *
521 * @return javaDocs
522 */
523 public static String generateForAddAugmentation() {
524 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
525 + JAVA_DOC_SETTERS_COMMON + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + NEW_LINE +
526 FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + VALUE + SPACE +
527 VALUE + SPACE + OF + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + NEW_LINE + FOUR_SPACE_INDENTATION
528 + JAVA_DOC_PARAM + CLASS + OBJECT_STRING + SPACE +
529 VALUE + SPACE + OF + SPACE + AUGMENTED + CLASS + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
530 }
531
Bharat saraswal64e7e232016-07-14 23:33:55 +0530532 /**
533 * Returns javadoc for get augmentation method.
534 *
535 * @return javadoc for get augmentation method
536 */
Bharat saraswalaf413b82016-07-14 15:18:20 +0530537 public static String generateForGetAugmentation() {
538 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
539 + JAVA_DOC_GETTERS + getSmallCase(YANG_AUGMENTED_INFO) + PERIOD + NEW_LINE +
540 FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + CLASS +
541 OBJECT_STRING + SPACE + VALUE + SPACE + OF + SPACE + AUGMENTED + CLASS + NEW_LINE +
542 FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + VALUE + SPACE +
543 OF + SPACE + YANG_AUGMENTED_INFO + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
544 }
545
546 /**
Bharat saraswal64e7e232016-07-14 23:33:55 +0530547 * Returns javadoc for validator method.
548 *
549 * @return javadoc for validator method
550 */
551 public static String generateForValidatorMethod() {
552 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION +
553 JAVA_DOC_FOR_VALIDATOR + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK +
554 FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + MIN_RANGE + SPACE + MIN_RANGE + SPACE + OF + SPACE +
555 VALUE + NEW_LINE +
556 FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + MAX_RANGE + SPACE + MAX_RANGE + SPACE + OF + SPACE + VALUE +
557 NEW_LINE +
558 FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + NEW_LINE +
559 FOUR_SPACE_INDENTATION + JAVA_DOC_FOR_VALIDATOR_RETURN + NEW_LINE + FOUR_SPACE_INDENTATION +
560 JAVA_DOC_END_LINE;
561 }
562
563 /**
Bharat saraswal8beac342016-08-04 02:00:03 +0530564 * Generates javaDocs for type constructor.
565 *
566 * @param attribute attribute string
567 * @return javaDocs for type constructor
568 */
569 public static String generateForGetMethodWithAttribute(String attribute) {
570 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_GETTERS
571 + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION
572 + JAVA_DOC_PARAM + attribute + SPACE + VALUE + SPACE + OF + SPACE + attribute + NEW_LINE
573 + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + VALUE + SPACE + OF + SPACE + attribute + NEW_LINE
574 + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
575 }
576
577 /**
578 * Returns javaDocs for add to list method.
579 *
580 * @param attribute attribute
581 * @return javaDocs
582 */
583 private static String generateForAddToList(String attribute) {
584 String javadoc = NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
585 + JAVA_DOC_ADD_TO_LIST + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
586 + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + VALUE + SPACE;
587 javadoc = javadoc + VALUE + SPACE + OF + SPACE;
588 javadoc = javadoc + attribute + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
589 return javadoc;
590 }
591
592 /**
593 * Generates for builder method.
594 *
595 * @param attribute attribute
596 * @return javaDocs
597 */
598 public static String generateForBuilderMethod(String attribute) {
599
600 String javadoc = FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
601 + JAVA_DOC_GETTERS + attribute + BUILDER + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION
602 + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN;
603 javadoc = javadoc + VALUE + SPACE + OF + SPACE;
604 javadoc = javadoc + attribute + BUILDER + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
605 return javadoc;
606 }
607
608
609 /**
Bharat saraswalaf413b82016-07-14 15:18:20 +0530610 * JavaDocs types.
611 */
612 public enum JavaDocType {
613
614 /**
615 * For class.
616 */
617 IMPL_CLASS,
618
619 /**
620 * For builder class.
621 */
622 BUILDER_CLASS,
623
624 /**
625 * For interface.
626 */
627 INTERFACE,
628
629 /**
630 * For builder interface.
631 */
632 BUILDER_INTERFACE,
633
634 /**
635 * For package-info.
636 */
637 PACKAGE_INFO,
638
639 /**
640 * For getters.
641 */
642 GETTER_METHOD,
643
644 /**
645 * For rpc service.
646 */
647 RPC_INTERFACE,
648
649 /**
650 * For rpc manager.
651 */
652 RPC_MANAGER,
653
654 /**
655 * For event.
656 */
657 EVENT,
658
659 /**
660 * For event listener.
661 */
662 EVENT_LISTENER,
663
664 /**
665 * For setters.
666 */
667 SETTER_METHOD,
668
669 /**
670 * For type def's setters.
671 */
672 TYPE_DEF_SETTER_METHOD,
673
674 /**
675 * For of method.
676 */
677 OF_METHOD,
678
679 /**
680 * For default constructor.
681 */
682 DEFAULT_CONSTRUCTOR,
683
684 /**
685 * For constructor.
686 */
687 CONSTRUCTOR,
688
689 /**
690 * For from method.
691 */
692 FROM_METHOD,
693
694 /**
695 * For type constructor.
696 */
697 TYPE_CONSTRUCTOR,
698
699 /**
700 * For build.
701 */
702 BUILD_METHOD,
703
704 /**
705 * For enum.
706 */
707 ENUM_CLASS,
708
709 /**
710 * For enum's attributes.
711 */
712 ENUM_ATTRIBUTE,
713
714 /**
715 * For manager setters.
716 */
717 MANAGER_SETTER_METHOD,
718
719 /**
720 * For event subject.
721 */
Shankara-Huaweia1039e52016-07-14 16:53:09 +0530722 EVENT_SUBJECT_CLASS,
723
724 /**
725 * For operation.
726 */
727 OPERATION_CLASS,
728
729 /**
730 * For operation builder.
731 */
Bharat saraswal8beac342016-08-04 02:00:03 +0530732 OPERATION_BUILDER_CLASS,
733
734 /**
735 * For add to list.
736 */
737 ADD_TO_LIST,
Bharat saraswalaf413b82016-07-14 15:18:20 +0530738 }
Bharat saraswal8beac342016-08-04 02:00:03 +0530739
Bharat saraswal97459962016-02-20 21:57:16 +0530740}