blob: a674f171330131e21b3a387a7f87d32bc424a959 [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.utils.io.impl;
18
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +053019import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
20
Bharat saraswalb551aae2016-07-14 15:18:20 +053021import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
Bharat saraswale707f032016-07-14 23:33:55 +053022import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_FOR_VALIDATOR;
23import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_FOR_VALIDATOR_RETURN;
24import static org.onosproject.yangutils.utils.UtilConstants.MAX_RANGE;
25import static org.onosproject.yangutils.utils.UtilConstants.MIN_RANGE;
Bharat saraswalb551aae2016-07-14 15:18:20 +053026import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +053027import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
28import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_CLASS_JAVA_DOC;
Shankara-Huaweib9999eb2016-07-14 16:53:09 +053029import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM_JAVA_DOC;
Bharat saraswale2d51d62016-03-23 19:40:35 +053030import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_INTERFACE_JAVA_DOC;
31import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_OBJECT;
Bharat saraswalb551aae2016-07-14 15:18:20 +053032import static org.onosproject.yangutils.utils.UtilConstants.CLASS;
Bharat saraswalcad0e652016-05-26 23:48:38 +053033import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
Bharat saraswald72411a2016-04-19 01:00:16 +053034import static org.onosproject.yangutils.utils.UtilConstants.ENUM_ATTRIBUTE_JAVADOC;
35import static org.onosproject.yangutils.utils.UtilConstants.ENUM_CLASS_JAVADOC;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053036import static org.onosproject.yangutils.utils.UtilConstants.EVENT_JAVA_DOC;
37import static org.onosproject.yangutils.utils.UtilConstants.EVENT_LISTENER_JAVA_DOC;
Bharat saraswale2d51d62016-03-23 19:40:35 +053038import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053039import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
40import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
Bharat saraswale2d51d62016-03-23 19:40:35 +053041import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
42import static org.onosproject.yangutils.utils.UtilConstants.IMPL_CLASS_JAVA_DOC;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053043import static org.onosproject.yangutils.utils.UtilConstants.INPUT;
Bharat saraswale2d51d62016-03-23 19:40:35 +053044import static org.onosproject.yangutils.utils.UtilConstants.INTERFACE_JAVA_DOC;
45import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_BUILD;
46import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_BUILD_RETURN;
47import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_CONSTRUCTOR;
Bharat saraswale2d51d62016-03-23 19:40:35 +053048import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_END_LINE;
49import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_FIRST_LINE;
50import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_GETTERS;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053051import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_MANAGER_SETTERS;
Bharat saraswale2d51d62016-03-23 19:40:35 +053052import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_OF;
53import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_PARAM;
54import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_RETURN;
Gaurav Agrawal56527662016-04-20 15:49:17 +053055import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_RPC;
Bharat saraswale2d51d62016-03-23 19:40:35 +053056import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_SETTERS;
57import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_SETTERS_COMMON;
58import static org.onosproject.yangutils.utils.UtilConstants.LIST;
Bharat saraswalb551aae2016-07-14 15:18:20 +053059import static org.onosproject.yangutils.utils.UtilConstants.MAP;
Bharat saraswale2d51d62016-03-23 19:40:35 +053060import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Bharat saraswal2f11f652016-03-25 18:19:46 +053061import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE_ASTERISK;
Bharat saraswale2d51d62016-03-23 19:40:35 +053062import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
Bharat saraswalb551aae2016-07-14 15:18:20 +053063import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
Bharat saraswale2d51d62016-03-23 19:40:35 +053064import static org.onosproject.yangutils.utils.UtilConstants.OF;
65import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE_INFO_JAVADOC;
Bharat saraswalc0e04842016-05-12 13:16:57 +053066import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE_INFO_JAVADOC_OF_CHILD;
Bharat saraswale2d51d62016-03-23 19:40:35 +053067import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
Gaurav Agrawal56527662016-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 saraswale2d51d62016-03-23 19:40:35 +053070import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053071import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
Bharat saraswale2d51d62016-03-23 19:40:35 +053072import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
Bharat saraswalc0e04842016-05-12 13:16:57 +053073import static org.onosproject.yangutils.utils.UtilConstants.VOID;
Bharat saraswalb551aae2016-07-14 15:18:20 +053074import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
75import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
Bharat saraswale2d51d62016-03-23 19:40:35 +053076
Bharat saraswal870c56f2016-02-20 21:57:16 +053077/**
Bharat saraswald9822e92016-04-05 15:13:44 +053078 * Represents javadoc for the generated classes.
Bharat saraswal870c56f2016-02-20 21:57:16 +053079 */
80public final class JavaDocGen {
81
82 /**
Bharat saraswald9822e92016-04-05 15:13:44 +053083 * Creates an instance of java doc gen.
Bharat saraswal870c56f2016-02-20 21:57:16 +053084 */
85 private JavaDocGen() {
86 }
87
88 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +053089 * Returns java docs.
90 *
Bharat saraswalb551aae2016-07-14 15:18:20 +053091 * @param type java doc type
92 * @param name name of the YangNode
93 * @param isList is list attribute
Bharat saraswal33dfa012016-05-17 19:59:16 +053094 * @param pluginConfig plugin configurations
Bharat saraswal2f00b4b2016-03-04 20:08:09 +053095 * @return javadocs.
Bharat saraswal870c56f2016-02-20 21:57:16 +053096 */
Bharat saraswal33dfa012016-05-17 19:59:16 +053097 public static String getJavaDoc(JavaDocType type, String name, boolean isList, YangPluginConfig pluginConfig) {
Bharat saraswale2d51d62016-03-23 19:40:35 +053098
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053099 name = YangIoUtils.getSmallCase(getCamelCase(name, pluginConfig.getConflictResolver()));
Gaurav Agrawal56527662016-04-20 15:49:17 +0530100 switch (type) {
101 case IMPL_CLASS: {
Bharat saraswal33dfa012016-05-17 19:59:16 +0530102 return generateForClass(name);
Gaurav Agrawal56527662016-04-20 15:49:17 +0530103 }
104 case BUILDER_CLASS: {
105 return generateForBuilderClass(name);
106 }
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530107 case OPERATION_CLASS: {
108 return generateForOpParamClass(name);
109 }
110 case OPERATION_BUILDER_CLASS: {
111 return generateForOpParamClass(name);
112 }
Gaurav Agrawal56527662016-04-20 15:49:17 +0530113 case INTERFACE: {
114 return generateForInterface(name);
115 }
116 case BUILDER_INTERFACE: {
117 return generateForBuilderInterface(name);
118 }
119 case PACKAGE_INFO: {
Bharat saraswalc0e04842016-05-12 13:16:57 +0530120 return generateForPackage(name, isList);
Gaurav Agrawal56527662016-04-20 15:49:17 +0530121 }
122 case GETTER_METHOD: {
123 return generateForGetters(name, isList);
124 }
125 case TYPE_DEF_SETTER_METHOD: {
126 return generateForTypeDefSetter(name);
127 }
128 case SETTER_METHOD: {
129 return generateForSetters(name, isList);
130 }
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530131 case MANAGER_SETTER_METHOD: {
132 return generateForManagerSetters(name, isList);
133 }
Gaurav Agrawal56527662016-04-20 15:49:17 +0530134 case OF_METHOD: {
135 return generateForOf(name);
136 }
137 case DEFAULT_CONSTRUCTOR: {
138 return generateForDefaultConstructors(name);
139 }
140 case BUILD_METHOD: {
141 return generateForBuild(name);
142 }
143 case TYPE_CONSTRUCTOR: {
144 return generateForTypeConstructor(name);
145 }
146 case FROM_METHOD: {
147 return generateForFromString(name);
148 }
149 case ENUM_CLASS: {
150 return generateForEnum(name);
151 }
152 case ENUM_ATTRIBUTE: {
153 return generateForEnumAttr(name);
154 }
155 case RPC_INTERFACE: {
Bharat saraswalb551aae2016-07-14 15:18:20 +0530156 return generateForRpcService(name);
Bharat saraswalc0e04842016-05-12 13:16:57 +0530157 }
158 case RPC_MANAGER: {
Bharat saraswalb551aae2016-07-14 15:18:20 +0530159 return generateForClass(name);
Gaurav Agrawal56527662016-04-20 15:49:17 +0530160 }
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530161 case EVENT: {
162 return generateForEvent(name);
163 }
164 case EVENT_LISTENER: {
165 return generateForEventListener(name);
166 }
Bharat saraswal33dfa012016-05-17 19:59:16 +0530167 case EVENT_SUBJECT_CLASS: {
168 return generateForClass(name);
169 }
Gaurav Agrawal56527662016-04-20 15:49:17 +0530170 default: {
171 return generateForConstructors(name);
172 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530173 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530174 }
175
176 /**
Bharat saraswald72411a2016-04-19 01:00:16 +0530177 * Generates javaDocs for enum's attributes.
178 *
179 * @param name attribute name
180 * @return javaDocs
181 */
182 private static String generateForEnumAttr(String name) {
183 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + ENUM_ATTRIBUTE_JAVADOC
184 + name + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
185 }
186
187 /**
Gaurav Agrawal56527662016-04-20 15:49:17 +0530188 * Generates javaDocs for rpc method.
189 *
Bharat saraswalb551aae2016-07-14 15:18:20 +0530190 * @param rpcName name of the rpc
191 * @param inputName name of input
192 * @param outputName name of output
Bharat saraswal33dfa012016-05-17 19:59:16 +0530193 * @param pluginConfig plugin configurations
Gaurav Agrawal56527662016-04-20 15:49:17 +0530194 * @return javaDocs of rpc method
195 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530196 public static String generateJavaDocForRpc(String rpcName, String inputName, String outputName,
Bharat saraswalb551aae2016-07-14 15:18:20 +0530197 YangPluginConfig pluginConfig) {
Bharat saraswal33dfa012016-05-17 19:59:16 +0530198 rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
Gaurav Agrawal56527662016-04-20 15:49:17 +0530199
Bharat saraswal33dfa012016-05-17 19:59:16 +0530200 String javadoc =
201 NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_RPC
Bharat saraswalcad0e652016-05-26 23:48:38 +0530202 + rpcName + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK;
203 if (!inputName.equals(EMPTY_STRING)) {
204 javadoc = javadoc + getInputString(inputName, rpcName);
205 }
Bharat saraswalc0e04842016-05-12 13:16:57 +0530206 if (!outputName.equals(VOID)) {
207 javadoc = javadoc + getOutputString(outputName, rpcName);
208 }
209 return javadoc + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Gaurav Agrawal56527662016-04-20 15:49:17 +0530210 }
211
212 /**
213 * Returns output string of rpc.
214 *
215 * @param outputName name of output
Bharat saraswalb551aae2016-07-14 15:18:20 +0530216 * @param rpcName name of rpc
Gaurav Agrawal56527662016-04-20 15:49:17 +0530217 * @return javaDocs for output string of rpc
218 */
219 private static String getOutputString(String outputName, String rpcName) {
220 return FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + outputName + SPACE + RPC_OUTPUT_STRING + rpcName + NEW_LINE;
221 }
222
223 /**
224 * Returns input string of rpc.
225 *
226 * @param inputName name of input
Bharat saraswalb551aae2016-07-14 15:18:20 +0530227 * @param rpcName name of rpc
Gaurav Agrawal56527662016-04-20 15:49:17 +0530228 * @return javaDocs for input string of rpc
229 */
230 private static String getInputString(String inputName, String rpcName) {
231 if (inputName.equals("")) {
232 return null;
233 } else {
234 return FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + inputName + SPACE + RPC_INPUT_STRING + rpcName + NEW_LINE;
235 }
236 }
237
238 /**
239 * Generates javaDoc for the interface.
240 *
241 * @param interfaceName interface name
242 * @return javaDocs
243 */
Bharat saraswalc0e04842016-05-12 13:16:57 +0530244 private static String generateForRpcService(String interfaceName) {
Gaurav Agrawal56527662016-04-20 15:49:17 +0530245 return NEW_LINE + JAVA_DOC_FIRST_LINE + INTERFACE_JAVA_DOC + interfaceName + PERIOD + NEW_LINE
246 + JAVA_DOC_END_LINE;
247 }
248
249 /**
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530250 * Generates javaDoc for the event.
251 *
252 * @param eventClassName event class name
253 * @return javaDocs
254 */
255 private static String generateForEvent(String eventClassName) {
256 return NEW_LINE + JAVA_DOC_FIRST_LINE + EVENT_JAVA_DOC + eventClassName + PERIOD + NEW_LINE
257 + JAVA_DOC_END_LINE;
258 }
259
260 /**
261 * Generates javaDoc for the event listener.
262 *
263 * @param eventListenerInterfaceName event class name
264 * @return javaDocs
265 */
266 private static String generateForEventListener(String eventListenerInterfaceName) {
267 return NEW_LINE + JAVA_DOC_FIRST_LINE + EVENT_LISTENER_JAVA_DOC + eventListenerInterfaceName
268 + PERIOD + NEW_LINE + JAVA_DOC_END_LINE;
269 }
270
271 /**
Bharat saraswald72411a2016-04-19 01:00:16 +0530272 * Generates javaDocs for getter method.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530273 *
274 * @param attribute attribute
Bharat saraswalb551aae2016-07-14 15:18:20 +0530275 * @param isList is list attribute
Bharat saraswal870c56f2016-02-20 21:57:16 +0530276 * @return javaDocs
277 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530278 private static String generateForGetters(String attribute, boolean isList) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530279
280 String getter = NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
Bharat saraswal2f11f652016-03-25 18:19:46 +0530281 + JAVA_DOC_GETTERS + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
Bharat saraswale2d51d62016-03-23 19:40:35 +0530282 + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530283 if (isList) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530284 String listAttribute = LIST.toLowerCase() + SPACE + OF + SPACE;
Vinod Kumar S38046502016-03-23 15:30:27 +0530285 getter = getter + listAttribute;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530286 } else {
287 getter = getter + VALUE + SPACE + OF + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530288 }
289
Bharat saraswale2d51d62016-03-23 19:40:35 +0530290 getter = getter + attribute + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530291 return getter;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530292 }
293
294 /**
295 * Generates javaDocs for setter method.
296 *
297 * @param attribute attribute
Bharat saraswalb551aae2016-07-14 15:18:20 +0530298 * @param isList is list attribute
Bharat saraswal870c56f2016-02-20 21:57:16 +0530299 * @return javaDocs
300 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530301 private static String generateForSetters(String attribute, boolean isList) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530302
303 String setter = NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
Bharat saraswal2f11f652016-03-25 18:19:46 +0530304 + JAVA_DOC_SETTERS + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
Bharat saraswale2d51d62016-03-23 19:40:35 +0530305 + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + attribute + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530306 if (isList) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530307 String listAttribute = LIST.toLowerCase() + SPACE + OF + SPACE;
Vinod Kumar S38046502016-03-23 15:30:27 +0530308 setter = setter + listAttribute;
309 } else {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530310 setter = setter + VALUE + SPACE + OF + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530311 }
Bharat saraswalcad0e652016-05-26 23:48:38 +0530312 setter = setter + attribute + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + BUILDER_OBJECT
313 + attribute
Bharat saraswale2d51d62016-03-23 19:40:35 +0530314 + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530315 return setter;
316 }
317
318 /**
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530319 * Generates javaDocs for setter method.
320 *
321 * @param attribute attribute
Bharat saraswalb551aae2016-07-14 15:18:20 +0530322 * @param isList is list attribute
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530323 * @return javaDocs
324 */
325 private static String generateForManagerSetters(String attribute, boolean isList) {
326
327 String setter = NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
328 + JAVA_DOC_MANAGER_SETTERS + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
329 + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + attribute + SPACE;
330 if (isList) {
331 String listAttribute = LIST.toLowerCase() + SPACE + OF + SPACE;
332 setter = setter + listAttribute;
333 } else {
334 setter = setter + VALUE + SPACE + OF + SPACE;
335 }
336 setter = setter + attribute
337 + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
338 return setter;
339 }
340
341 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530342 * Generates javaDocs for of method.
343 *
344 * @param attribute attribute
345 * @return javaDocs
346 */
347 private static String generateForOf(String attribute) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530348 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_OF
Bharat saraswal2f11f652016-03-25 18:19:46 +0530349 + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION
Bharat saraswale2d51d62016-03-23 19:40:35 +0530350 + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute + NEW_LINE
351 + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + OBJECT + SPACE + OF + SPACE + attribute + NEW_LINE
352 + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530353 }
354
355 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530356 * Generates javaDocs for from method.
357 *
358 * @param attribute attribute
359 * @return javaDocs
360 */
Gaurav Agrawal56527662016-04-20 15:49:17 +0530361 private static String generateForFromString(String attribute) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530362
363 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_OF
364 + attribute + SPACE + FROM_STRING_METHOD_NAME + SPACE + INPUT + SPACE + STRING_DATA_TYPE + PERIOD
365 + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM
Bharat saraswalc0e04842016-05-12 13:16:57 +0530366 + FROM_STRING_PARAM_NAME + SPACE + INPUT + SPACE + STRING_DATA_TYPE + NEW_LINE
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530367 + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + OBJECT + SPACE + OF + SPACE + attribute + NEW_LINE
368 + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
369 }
370
371 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530372 * Generates javaDocs for typedef setter method.
373 *
374 * @param attribute attribute
375 * @return javaDocs
376 */
377 private static String generateForTypeDefSetter(String attribute) {
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530378 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
Bharat saraswal2f11f652016-03-25 18:19:46 +0530379 + JAVA_DOC_SETTERS_COMMON + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
Bharat saraswale2d51d62016-03-23 19:40:35 +0530380 + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530381 + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530382 }
383
384 /**
Bharat saraswald72411a2016-04-19 01:00:16 +0530385 * Generates javaDocs for the impl class.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530386 *
387 * @param className class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530388 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530389 */
Bharat saraswal33dfa012016-05-17 19:59:16 +0530390 private static String generateForClass(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530391 return NEW_LINE + JAVA_DOC_FIRST_LINE + IMPL_CLASS_JAVA_DOC + className + PERIOD + NEW_LINE + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530392 }
393
394 /**
Bharat saraswald72411a2016-04-19 01:00:16 +0530395 * Generates javaDocs for enum.
396 *
397 * @param className enum class name
398 * @return javaDocs
399 */
400 private static String generateForEnum(String className) {
401 return NEW_LINE + NEW_LINE + JAVA_DOC_FIRST_LINE + ENUM_CLASS_JAVADOC + className + PERIOD + NEW_LINE
402 + JAVA_DOC_END_LINE;
403 }
404
405 /**
406 * Generates javaDocs for the builder class.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530407 *
408 * @param className class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530409 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530410 */
411 private static String generateForBuilderClass(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530412 return NEW_LINE + JAVA_DOC_FIRST_LINE + BUILDER_CLASS_JAVA_DOC + className + PERIOD + NEW_LINE
413 + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530414 }
415
416 /**
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530417 * Generates javaDocs for the op param class.
418 *
419 * @param className class name
420 * @return javaDocs
421 */
422 private static String generateForOpParamClass(String className) {
423 return NEW_LINE + JAVA_DOC_FIRST_LINE + OP_PARAM_JAVA_DOC + className + PERIOD + NEW_LINE
424 + JAVA_DOC_END_LINE;
425 }
426
427 /**
Bharat saraswald72411a2016-04-19 01:00:16 +0530428 * Generates javaDoc for the interface.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530429 *
430 * @param interfaceName interface name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530431 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530432 */
433 private static String generateForInterface(String interfaceName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530434 return NEW_LINE + JAVA_DOC_FIRST_LINE + INTERFACE_JAVA_DOC + interfaceName + PERIOD + NEW_LINE
435 + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530436 }
437
438 /**
Bharat saraswald72411a2016-04-19 01:00:16 +0530439 * Generates javaDoc for the builder interface.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530440 *
441 * @param builderforName builder for name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530442 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530443 */
444 private static String generateForBuilderInterface(String builderforName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530445 return JAVA_DOC_FIRST_LINE + BUILDER_INTERFACE_JAVA_DOC + builderforName + PERIOD + NEW_LINE
446 + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530447 }
448
449 /**
Bharat saraswald72411a2016-04-19 01:00:16 +0530450 * Generates javaDocs for package-info.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530451 *
452 * @param packageName package name
Bharat saraswalc0e04842016-05-12 13:16:57 +0530453 * @param isChildNode is it child node
Bharat saraswal870c56f2016-02-20 21:57:16 +0530454 * @return javaDocs
455 */
Bharat saraswalc0e04842016-05-12 13:16:57 +0530456 private static String generateForPackage(String packageName, boolean isChildNode) {
457 String javaDoc = JAVA_DOC_FIRST_LINE + PACKAGE_INFO_JAVADOC + packageName;
458 if (isChildNode) {
459 javaDoc = javaDoc + PACKAGE_INFO_JAVADOC_OF_CHILD;
460 }
461 return javaDoc + PERIOD + NEW_LINE + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530462 }
463
464 /**
Bharat saraswald72411a2016-04-19 01:00:16 +0530465 * Generates javaDocs for default constructor.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530466 *
Bharat saraswal6ef0b762016-04-05 12:45:45 +0530467 * @param className class name
Bharat saraswal870c56f2016-02-20 21:57:16 +0530468 * @return javaDocs
469 */
Bharat saraswal6ef0b762016-04-05 12:45:45 +0530470 private static String generateForDefaultConstructors(String className) {
471 return FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR + className
472 + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530473 }
474
475 /**
Bharat saraswald72411a2016-04-19 01:00:16 +0530476 * Generates javaDocs for constructor with parameters.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530477 *
Bharat saraswal870c56f2016-02-20 21:57:16 +0530478 * @param className class name
479 * @return javaDocs
480 */
481 private static String generateForConstructors(String className) {
Bharat saraswalc0e04842016-05-12 13:16:57 +0530482 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR
483 + className + IMPL + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
484 + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + BUILDER.toLowerCase() + OBJECT + SPACE + BUILDER_OBJECT
485 + className + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530486 }
487
488 /**
Bharat saraswald72411a2016-04-19 01:00:16 +0530489 * Generates javaDocs for build.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530490 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530491 * @param buildName builder name
Bharat saraswal870c56f2016-02-20 21:57:16 +0530492 * @return javaDocs
493 */
494 private static String generateForBuild(String buildName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530495 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_BUILD
Bharat saraswal2f11f652016-03-25 18:19:46 +0530496 + buildName + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION
Bharat saraswale2d51d62016-03-23 19:40:35 +0530497 + JAVA_DOC_RETURN + JAVA_DOC_BUILD_RETURN + buildName + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION
498 + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530499 }
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530500
501 /**
502 * Generates javaDocs for type constructor.
503 *
504 * @param attribute attribute string
505 * @return javaDocs for type constructor
506 */
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530507 public static String generateForTypeConstructor(String attribute) {
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530508 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530509 + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION
510 + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute + NEW_LINE
Vidyashree Rama7142d9c2016-04-26 15:06:06 +0530511 + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530512 }
Bharat saraswalb551aae2016-07-14 15:18:20 +0530513
514 /**
515 * Generates javaDocs for add augmentation method.
516 *
517 * @return javaDocs
518 */
519 public static String generateForAddAugmentation() {
520 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
521 + JAVA_DOC_SETTERS_COMMON + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + NEW_LINE +
522 FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + VALUE + SPACE +
523 VALUE + SPACE + OF + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + NEW_LINE + FOUR_SPACE_INDENTATION
524 + JAVA_DOC_PARAM + CLASS + OBJECT_STRING + SPACE +
525 VALUE + SPACE + OF + SPACE + AUGMENTED + CLASS + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
526 }
527
Bharat saraswale707f032016-07-14 23:33:55 +0530528 /**
529 * Returns javadoc for get augmentation method.
530 *
531 * @return javadoc for get augmentation method
532 */
Bharat saraswalb551aae2016-07-14 15:18:20 +0530533 public static String generateForGetAugmentation() {
534 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
535 + JAVA_DOC_GETTERS + getSmallCase(YANG_AUGMENTED_INFO) + PERIOD + NEW_LINE +
536 FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + CLASS +
537 OBJECT_STRING + SPACE + VALUE + SPACE + OF + SPACE + AUGMENTED + CLASS + NEW_LINE +
538 FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + VALUE + SPACE +
539 OF + SPACE + YANG_AUGMENTED_INFO + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
540 }
541
542 /**
Bharat saraswale707f032016-07-14 23:33:55 +0530543 * Returns javadoc for validator method.
544 *
545 * @return javadoc for validator method
546 */
547 public static String generateForValidatorMethod() {
548 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION +
549 JAVA_DOC_FOR_VALIDATOR + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK +
550 FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + MIN_RANGE + SPACE + MIN_RANGE + SPACE + OF + SPACE +
551 VALUE + NEW_LINE +
552 FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + MAX_RANGE + SPACE + MAX_RANGE + SPACE + OF + SPACE + VALUE +
553 NEW_LINE +
554 FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + NEW_LINE +
555 FOUR_SPACE_INDENTATION + JAVA_DOC_FOR_VALIDATOR_RETURN + NEW_LINE + FOUR_SPACE_INDENTATION +
556 JAVA_DOC_END_LINE;
557 }
558
559 /**
Bharat saraswalb551aae2016-07-14 15:18:20 +0530560 * JavaDocs types.
561 */
562 public enum JavaDocType {
563
564 /**
565 * For class.
566 */
567 IMPL_CLASS,
568
569 /**
570 * For builder class.
571 */
572 BUILDER_CLASS,
573
574 /**
575 * For interface.
576 */
577 INTERFACE,
578
579 /**
580 * For builder interface.
581 */
582 BUILDER_INTERFACE,
583
584 /**
585 * For package-info.
586 */
587 PACKAGE_INFO,
588
589 /**
590 * For getters.
591 */
592 GETTER_METHOD,
593
594 /**
595 * For rpc service.
596 */
597 RPC_INTERFACE,
598
599 /**
600 * For rpc manager.
601 */
602 RPC_MANAGER,
603
604 /**
605 * For event.
606 */
607 EVENT,
608
609 /**
610 * For event listener.
611 */
612 EVENT_LISTENER,
613
614 /**
615 * For setters.
616 */
617 SETTER_METHOD,
618
619 /**
620 * For type def's setters.
621 */
622 TYPE_DEF_SETTER_METHOD,
623
624 /**
625 * For of method.
626 */
627 OF_METHOD,
628
629 /**
630 * For default constructor.
631 */
632 DEFAULT_CONSTRUCTOR,
633
634 /**
635 * For constructor.
636 */
637 CONSTRUCTOR,
638
639 /**
640 * For from method.
641 */
642 FROM_METHOD,
643
644 /**
645 * For type constructor.
646 */
647 TYPE_CONSTRUCTOR,
648
649 /**
650 * For build.
651 */
652 BUILD_METHOD,
653
654 /**
655 * For enum.
656 */
657 ENUM_CLASS,
658
659 /**
660 * For enum's attributes.
661 */
662 ENUM_ATTRIBUTE,
663
664 /**
665 * For manager setters.
666 */
667 MANAGER_SETTER_METHOD,
668
669 /**
670 * For event subject.
671 */
Shankara-Huaweib9999eb2016-07-14 16:53:09 +0530672 EVENT_SUBJECT_CLASS,
673
674 /**
675 * For operation.
676 */
677 OPERATION_CLASS,
678
679 /**
680 * For operation builder.
681 */
682 OPERATION_BUILDER_CLASS
Bharat saraswalb551aae2016-07-14 15:18:20 +0530683 }
Bharat saraswal870c56f2016-02-20 21:57:16 +0530684}