blob: c3ff0a3048016bb783e7982c5b4ce59bda274c5f [file] [log] [blame]
Bharat saraswal870c56f2016-02-20 21:57:16 +05301/*
2 * Copyright 2016 Open Networking Laboratory
3 *
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
19import org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax;
20import org.onosproject.yangutils.utils.UtilConstants;
21
Bharat saraswale2d51d62016-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;
26import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
27import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
28import static org.onosproject.yangutils.utils.UtilConstants.IMPL_CLASS_JAVA_DOC;
29import static org.onosproject.yangutils.utils.UtilConstants.INTERFACE_JAVA_DOC;
30import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_BUILD;
31import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_BUILD_RETURN;
32import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_CONSTRUCTOR;
33import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_DEFAULT_CONSTRUCTOR;
34import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_END_LINE;
35import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_FIRST_LINE;
36import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_GETTERS;
37import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_OF;
38import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_PARAM;
39import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_RETURN;
40import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_SETTERS;
41import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_SETTERS_COMMON;
42import static org.onosproject.yangutils.utils.UtilConstants.LIST;
43import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Bharat saraswal2f11f652016-03-25 18:19:46 +053044import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE_ASTERISK;
Bharat saraswale2d51d62016-03-23 19:40:35 +053045import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
46import static org.onosproject.yangutils.utils.UtilConstants.OF;
47import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE_INFO_JAVADOC;
48import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
49import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
50import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
51
Bharat saraswal870c56f2016-02-20 21:57:16 +053052/**
53 * Provides javadoc for the generated classes.
54 */
55public final class JavaDocGen {
56
57 /**
58 * Default Constructor.
59 */
60 private JavaDocGen() {
61 }
62
63 /**
64 * JavaDocs types.
65 */
66 public static enum JavaDocType {
67
68 /**
69 * For class.
70 */
71 IMPL_CLASS,
72
73 /**
74 * For builder class.
75 */
76 BUILDER_CLASS,
77
78 /**
79 * For interface.
80 */
81 INTERFACE,
82
83 /**
84 * For builder interface.
85 */
86 BUILDER_INTERFACE,
87
88 /**
89 * For package-info.
90 */
91 PACKAGE_INFO,
92
93 /**
94 * For getters.
95 */
Bharat saraswale2d51d62016-03-23 19:40:35 +053096 GETTER_METHOD,
Bharat saraswal870c56f2016-02-20 21:57:16 +053097
98 /**
99 * For setters.
100 */
Bharat saraswale2d51d62016-03-23 19:40:35 +0530101 SETTER_METHOD,
Bharat saraswal870c56f2016-02-20 21:57:16 +0530102
103 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530104 * For type def's setters.
105 */
Bharat saraswale2d51d62016-03-23 19:40:35 +0530106 TYPE_DEF_SETTER_METHOD,
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530107
108 /**
109 * For type def's constructor.
110 */
111 TYPE_DEF_CONSTRUCTOR,
112
113 /**
114 * For of method.
115 */
Bharat saraswale2d51d62016-03-23 19:40:35 +0530116 OF_METHOD,
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530117
118 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530119 * For default constructor.
120 */
121 DEFAULT_CONSTRUCTOR,
122
123 /**
124 * For constructor.
125 */
126 CONSTRUCTOR,
127
128 /**
129 * For build.
130 */
Bharat saraswale2d51d62016-03-23 19:40:35 +0530131 BUILD_METHOD
Bharat saraswal870c56f2016-02-20 21:57:16 +0530132 }
133
134 /**
135 * Returns java docs.
136 *
137 * @param type java doc type
138 * @param name name of the YangNode
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530139 * @param isList is list attribute
140 * @return javadocs.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530141 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530142 public static String getJavaDoc(JavaDocType type, String name, boolean isList) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530143
Bharat saraswal2f11f652016-03-25 18:19:46 +0530144 name = JavaIdentifierSyntax.getSmallCase(JavaIdentifierSyntax.getCamelCase(name));
Bharat saraswale2d51d62016-03-23 19:40:35 +0530145 String javaDoc = UtilConstants.EMPTY_STRING;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530146 if (type.equals(JavaDocType.IMPL_CLASS)) {
147 javaDoc = generateForImplClass(name);
148 } else if (type.equals(JavaDocType.BUILDER_CLASS)) {
149 javaDoc = generateForBuilderClass(name);
150 } else if (type.equals(JavaDocType.INTERFACE)) {
151 javaDoc = generateForInterface(name);
152 } else if (type.equals(JavaDocType.BUILDER_INTERFACE)) {
153 javaDoc = generateForBuilderInterface(name);
154 } else if (type.equals(JavaDocType.PACKAGE_INFO)) {
155 javaDoc = generateForPackage(name);
Bharat saraswale2d51d62016-03-23 19:40:35 +0530156 } else if (type.equals(JavaDocType.GETTER_METHOD)) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530157 javaDoc = generateForGetters(name, isList);
Bharat saraswale2d51d62016-03-23 19:40:35 +0530158 } else if (type.equals(JavaDocType.TYPE_DEF_SETTER_METHOD)) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530159 javaDoc = generateForTypeDefSetter(name);
160 } else if (type.equals(JavaDocType.TYPE_DEF_CONSTRUCTOR)) {
161 javaDoc = generateForTypeDefConstructor(name);
Bharat saraswale2d51d62016-03-23 19:40:35 +0530162 } else if (type.equals(JavaDocType.SETTER_METHOD)) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530163 javaDoc = generateForSetters(name, isList);
Bharat saraswale2d51d62016-03-23 19:40:35 +0530164 } else if (type.equals(JavaDocType.OF_METHOD)) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530165 javaDoc = generateForOf(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530166 } else if (type.equals(JavaDocType.DEFAULT_CONSTRUCTOR)) {
167 javaDoc = generateForDefaultConstructors();
Bharat saraswale2d51d62016-03-23 19:40:35 +0530168 } else if (type.equals(JavaDocType.BUILD_METHOD)) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530169 javaDoc = generateForBuild(name);
b.janani68c55e12016-02-24 12:23:03 +0530170 } else {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530171 javaDoc = generateForConstructors(name);
172 }
173 return javaDoc;
174 }
175
176 /**
177 * Generate javaDocs for getter method.
178 *
179 * @param attribute attribute
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530180 * @param isList is list attribute
Bharat saraswal870c56f2016-02-20 21:57:16 +0530181 * @return javaDocs
182 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530183 private static String generateForGetters(String attribute, boolean isList) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530184
185 String getter = NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
Bharat saraswal2f11f652016-03-25 18:19:46 +0530186 + JAVA_DOC_GETTERS + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
Bharat saraswale2d51d62016-03-23 19:40:35 +0530187 + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530188 if (isList) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530189 String listAttribute = LIST.toLowerCase() + SPACE + OF + SPACE;
Vinod Kumar S38046502016-03-23 15:30:27 +0530190 getter = getter + listAttribute;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530191 } else {
192 getter = getter + VALUE + SPACE + OF + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530193 }
194
Bharat saraswale2d51d62016-03-23 19:40:35 +0530195 getter = getter + attribute + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530196 return getter;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530197 }
198
199 /**
200 * Generates javaDocs for setter method.
201 *
202 * @param attribute attribute
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530203 * @param isList is list attribute
Bharat saraswal870c56f2016-02-20 21:57:16 +0530204 * @return javaDocs
205 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530206 private static String generateForSetters(String attribute, boolean isList) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530207
208 String setter = NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
Bharat saraswal2f11f652016-03-25 18:19:46 +0530209 + JAVA_DOC_SETTERS + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
Bharat saraswale2d51d62016-03-23 19:40:35 +0530210 + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + attribute + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530211 if (isList) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530212 String listAttribute = LIST.toLowerCase() + SPACE + OF + SPACE;
Vinod Kumar S38046502016-03-23 15:30:27 +0530213 setter = setter + listAttribute;
214 } else {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530215 setter = setter + VALUE + SPACE + OF + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530216 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530217 setter = setter + attribute + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + BUILDER_OBJECT + attribute
218 + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530219 return setter;
220 }
221
222 /**
223 * Generates javaDocs for of method.
224 *
225 * @param attribute attribute
226 * @return javaDocs
227 */
228 private static String generateForOf(String attribute) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530229
230 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_OF
Bharat saraswal2f11f652016-03-25 18:19:46 +0530231 + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION
Bharat saraswale2d51d62016-03-23 19:40:35 +0530232 + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute + NEW_LINE
233 + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + OBJECT + SPACE + OF + SPACE + attribute + NEW_LINE
234 + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530235 }
236
237 /**
238 * Generates javaDocs for typedef setter method.
239 *
240 * @param attribute attribute
241 * @return javaDocs
242 */
243 private static String generateForTypeDefSetter(String attribute) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530244
245 return (NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
Bharat saraswal2f11f652016-03-25 18:19:46 +0530246 + JAVA_DOC_SETTERS_COMMON + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
Bharat saraswale2d51d62016-03-23 19:40:35 +0530247 + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute
248 + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530249 }
250
251 /**
252 * Generates javaDocs for typedef constructor.
253 *
254 * @param attribute attribute
255 * @return javaDocs
256 */
257 private static String generateForTypeDefConstructor(String attribute) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530258
259 return (NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR
Bharat saraswal2f11f652016-03-25 18:19:46 +0530260 + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION
Bharat saraswale2d51d62016-03-23 19:40:35 +0530261 + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute + NEW_LINE
262 + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530263 }
264
265 /**
266 * Generate javaDocs for the impl class.
267 *
268 * @param className class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530269 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530270 */
271 private static String generateForImplClass(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530272
273 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 +0530274 }
275
276 /**
277 * Generate javaDocs for the builder class.
278 *
279 * @param className class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530280 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530281 */
282 private static String generateForBuilderClass(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530283
284 return NEW_LINE + JAVA_DOC_FIRST_LINE + BUILDER_CLASS_JAVA_DOC + className + PERIOD + NEW_LINE
285 + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530286 }
287
288 /**
289 * Generate javaDoc for the interface.
290 *
291 * @param interfaceName interface name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530292 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530293 */
294 private static String generateForInterface(String interfaceName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530295
296 return NEW_LINE + JAVA_DOC_FIRST_LINE + INTERFACE_JAVA_DOC + interfaceName + PERIOD + NEW_LINE
297 + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530298 }
299
300 /**
301 * Generate javaDoc for the builder interface.
302 *
303 * @param builderforName builder for name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530304 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530305 */
306 private static String generateForBuilderInterface(String builderforName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530307
308 return JAVA_DOC_FIRST_LINE + BUILDER_INTERFACE_JAVA_DOC + builderforName + PERIOD + NEW_LINE
309 + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530310 }
311
312 /**
313 * Generate javaDocs for package-info.
314 *
315 * @param packageName package name
316 * @return javaDocs
317 */
318 private static String generateForPackage(String packageName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530319
320 return JAVA_DOC_FIRST_LINE + PACKAGE_INFO_JAVADOC + packageName + PERIOD + NEW_LINE + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530321 }
322
323 /**
324 * Generate javaDocs for default constructor.
325 *
326 * @return javaDocs
327 */
328 private static String generateForDefaultConstructors() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530329
330 return FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_DEFAULT_CONSTRUCTOR
331 + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530332 }
333
334 /**
335 * Generate javaDocs for constructor with parameters.
336 *
Bharat saraswal870c56f2016-02-20 21:57:16 +0530337 * @param className class name
338 * @return javaDocs
339 */
340 private static String generateForConstructors(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530341
342 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE
343 + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR + className + IMPL + PERIOD + NEW_LINE
Bharat saraswal2f11f652016-03-25 18:19:46 +0530344 + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM
345 + BUILDER.toLowerCase() + OBJECT + SPACE + BUILDER_OBJECT + className + NEW_LINE
Bharat saraswale2d51d62016-03-23 19:40:35 +0530346 + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530347 }
348
349 /**
350 * Generate javaDocs for build.
351 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530352 * @param buildName builder name
Bharat saraswal870c56f2016-02-20 21:57:16 +0530353 * @return javaDocs
354 */
355 private static String generateForBuild(String buildName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530356
357 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_BUILD
Bharat saraswal2f11f652016-03-25 18:19:46 +0530358 + buildName + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION
Bharat saraswale2d51d62016-03-23 19:40:35 +0530359 + JAVA_DOC_RETURN + JAVA_DOC_BUILD_RETURN + buildName + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION
360 + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530361 }
362}