blob: 922348a15e839a6699b231e3720015089e958461 [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
22/**
23 * Provides javadoc for the generated classes.
24 */
25public final class JavaDocGen {
26
27 /**
28 * Default Constructor.
29 */
30 private JavaDocGen() {
31 }
32
33 /**
34 * JavaDocs types.
35 */
36 public static enum JavaDocType {
37
38 /**
39 * For class.
40 */
41 IMPL_CLASS,
42
43 /**
44 * For builder class.
45 */
46 BUILDER_CLASS,
47
48 /**
49 * For interface.
50 */
51 INTERFACE,
52
53 /**
54 * For builder interface.
55 */
56 BUILDER_INTERFACE,
57
58 /**
59 * For package-info.
60 */
61 PACKAGE_INFO,
62
63 /**
64 * For getters.
65 */
66 GETTER,
67
68 /**
69 * For setters.
70 */
71 SETTER,
72
73 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +053074 * For type def's setters.
75 */
76 TYPE_DEF_SETTER,
77
78 /**
79 * For type def's constructor.
80 */
81 TYPE_DEF_CONSTRUCTOR,
82
83 /**
84 * For of method.
85 */
86 OF,
87
88 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +053089 * For default constructor.
90 */
91 DEFAULT_CONSTRUCTOR,
92
93 /**
94 * For constructor.
95 */
96 CONSTRUCTOR,
97
98 /**
99 * For build.
100 */
101 BUILD
102 }
103
104 /**
105 * Returns java docs.
106 *
107 * @param type java doc type
108 * @param name name of the YangNode
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530109 * @param isList is list attribute
110 * @return javadocs.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530111 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530112 public static String getJavaDoc(JavaDocType type, String name, boolean isList) {
113 name = JavaIdentifierSyntax.getLowerCase(JavaIdentifierSyntax.getCamelCase(name));
Bharat saraswal870c56f2016-02-20 21:57:16 +0530114 String javaDoc = "";
115 if (type.equals(JavaDocType.IMPL_CLASS)) {
116 javaDoc = generateForImplClass(name);
117 } else if (type.equals(JavaDocType.BUILDER_CLASS)) {
118 javaDoc = generateForBuilderClass(name);
119 } else if (type.equals(JavaDocType.INTERFACE)) {
120 javaDoc = generateForInterface(name);
121 } else if (type.equals(JavaDocType.BUILDER_INTERFACE)) {
122 javaDoc = generateForBuilderInterface(name);
123 } else if (type.equals(JavaDocType.PACKAGE_INFO)) {
124 javaDoc = generateForPackage(name);
125 } else if (type.equals(JavaDocType.GETTER)) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530126 javaDoc = generateForGetters(name, isList);
127 } else if (type.equals(JavaDocType.TYPE_DEF_SETTER)) {
128 javaDoc = generateForTypeDefSetter(name);
129 } else if (type.equals(JavaDocType.TYPE_DEF_CONSTRUCTOR)) {
130 javaDoc = generateForTypeDefConstructor(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530131 } else if (type.equals(JavaDocType.SETTER)) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530132 javaDoc = generateForSetters(name, isList);
133 } else if (type.equals(JavaDocType.OF)) {
134 javaDoc = generateForOf(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530135 } else if (type.equals(JavaDocType.DEFAULT_CONSTRUCTOR)) {
136 javaDoc = generateForDefaultConstructors();
137 } else if (type.equals(JavaDocType.BUILD)) {
138 javaDoc = generateForBuild(name);
b.janani68c55e12016-02-24 12:23:03 +0530139 } else {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530140 javaDoc = generateForConstructors(name);
141 }
142 return javaDoc;
143 }
144
145 /**
146 * Generate javaDocs for getter method.
147 *
148 * @param attribute attribute
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530149 * @param isList is list attribute
Bharat saraswal870c56f2016-02-20 21:57:16 +0530150 * @return javaDocs
151 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530152 private static String generateForGetters(String attribute, boolean isList) {
153 String getter = UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
154 + UtilConstants.JAVA_DOC_FIRST_LINE
Bharat saraswal870c56f2016-02-20 21:57:16 +0530155 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_GETTERS + attribute
156 + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530157 + UtilConstants.NEW_LINE_ESTRIC + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_RETURN;
158 if (isList) {
Vinod Kumar S38046502016-03-23 15:30:27 +0530159 String listAttribute = UtilConstants.LIST.toLowerCase() + UtilConstants.SPACE + UtilConstants.OF
160 + UtilConstants.SPACE;
161 getter = getter + listAttribute;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530162 }
163
164 getter = getter + attribute + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530165 + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530166 return getter;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530167 }
168
169 /**
170 * Generates javaDocs for setter method.
171 *
172 * @param attribute attribute
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530173 * @param isList is list attribute
Bharat saraswal870c56f2016-02-20 21:57:16 +0530174 * @return javaDocs
175 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530176 private static String generateForSetters(String attribute, boolean isList) {
177 String setter = UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
178 + UtilConstants.JAVA_DOC_FIRST_LINE
Bharat saraswal870c56f2016-02-20 21:57:16 +0530179 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_SETTERS + attribute
180 + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
Vinod Kumar S38046502016-03-23 15:30:27 +0530181 + UtilConstants.NEW_LINE_ESTRIC + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_PARAM;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530182 if (isList) {
Vinod Kumar S38046502016-03-23 15:30:27 +0530183 setter = setter + attribute + UtilConstants.SUFIX_S + UtilConstants.SPACE;
184 String listAttribute = UtilConstants.LIST.toLowerCase() + UtilConstants.SPACE + UtilConstants.OF
185 + UtilConstants.SPACE;
186 setter = setter + listAttribute;
187 } else {
188 setter = setter + attribute + UtilConstants.SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530189 }
190
Vinod Kumar S38046502016-03-23 15:30:27 +0530191 setter = setter + attribute + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
192 + UtilConstants.JAVA_DOC_RETURN + UtilConstants.BUILDER_OBJECT + attribute + UtilConstants.NEW_LINE
193 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530194 return setter;
195 }
196
197 /**
198 * Generates javaDocs for of method.
199 *
200 * @param attribute attribute
201 * @return javaDocs
202 */
203 private static String generateForOf(String attribute) {
204 return UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
205 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_OF + attribute
206 + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
207 + UtilConstants.NEW_LINE_ESTRIC + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_PARAM
208 + UtilConstants.VALUE + UtilConstants.SPACE + UtilConstants.VALUE + UtilConstants.NEW_LINE
209 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_RETURN + UtilConstants.OBJECT
210 + UtilConstants.SPACE + UtilConstants.OF + UtilConstants.SPACE + attribute + UtilConstants.NEW_LINE
211 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE;
212 }
213
214 /**
215 * Generates javaDocs for typedef setter method.
216 *
217 * @param attribute attribute
218 * @return javaDocs
219 */
220 private static String generateForTypeDefSetter(String attribute) {
Vinod Kumar S38046502016-03-23 15:30:27 +0530221 return UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530222 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_SETTERS_COMMON + attribute
223 + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
224 + UtilConstants.NEW_LINE_ESTRIC + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_PARAM
225 + UtilConstants.VALUE + UtilConstants.SPACE + UtilConstants.VALUE + UtilConstants.NEW_LINE
Vinod Kumar S38046502016-03-23 15:30:27 +0530226 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530227 }
228
229 /**
230 * Generates javaDocs for typedef constructor.
231 *
232 * @param attribute attribute
233 * @return javaDocs
234 */
235 private static String generateForTypeDefConstructor(String attribute) {
Vinod Kumar S38046502016-03-23 15:30:27 +0530236 return UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530237 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_CONSTRUCTOR + attribute
238 + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
239 + UtilConstants.NEW_LINE_ESTRIC + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_PARAM
240 + UtilConstants.VALUE + UtilConstants.SPACE + UtilConstants.VALUE + UtilConstants.NEW_LINE
Vinod Kumar S38046502016-03-23 15:30:27 +0530241 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530242 }
243
244 /**
245 * Generate javaDocs for the impl class.
246 *
247 * @param className class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530248 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530249 */
250 private static String generateForImplClass(String className) {
Bharat saraswal8f2a6c52016-03-09 18:34:56 +0530251 return UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.IMPL_CLASS_JAVA_DOC
252 + className + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530253 }
254
255 /**
256 * Generate javaDocs for the builder class.
257 *
258 * @param className class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530259 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530260 */
261 private static String generateForBuilderClass(String className) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530262 return UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.BUILDER_CLASS_JAVA_DOC
263 + className + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530264 }
265
266 /**
267 * Generate javaDoc for the interface.
268 *
269 * @param interfaceName interface name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530270 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530271 */
272 private static String generateForInterface(String interfaceName) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530273 return UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.INTERFACE_JAVA_DOC
274 + interfaceName + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530275 }
276
277 /**
278 * Generate javaDoc for the builder interface.
279 *
280 * @param builderforName builder for name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530281 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530282 */
283 private static String generateForBuilderInterface(String builderforName) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530284 return UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.BUILDER_INTERFACE_JAVA_DOC + builderforName
285 + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530286 }
287
288 /**
289 * Generate javaDocs for package-info.
290 *
291 * @param packageName package name
292 * @return javaDocs
293 */
294 private static String generateForPackage(String packageName) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530295 return UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.PACKAGE_INFO_JAVADOC + packageName
296 + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530297 }
298
299 /**
300 * Generate javaDocs for default constructor.
301 *
302 * @return javaDocs
303 */
304 private static String generateForDefaultConstructors() {
Vinod Kumar S38046502016-03-23 15:30:27 +0530305 return UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
306 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_DEFAULT_CONSTRUCTOR
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530307 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530308 }
309
310 /**
311 * Generate javaDocs for constructor with parameters.
312 *
Bharat saraswal870c56f2016-02-20 21:57:16 +0530313 * @param className class name
314 * @return javaDocs
315 */
316 private static String generateForConstructors(String className) {
Bharat saraswal8f2a6c52016-03-09 18:34:56 +0530317 return UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
318 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_CONSTRUCTOR + className
319 + UtilConstants.IMPL + UtilConstants.PERIOD + UtilConstants.NEW_LINE
320 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.NEW_LINE_ESTRIC
Bharat saraswal870c56f2016-02-20 21:57:16 +0530321 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_PARAM
Vinod Kumar S38046502016-03-23 15:30:27 +0530322 + UtilConstants.BUILDER.toLowerCase() + UtilConstants.OBJECT + UtilConstants.SPACE
323 + UtilConstants.BUILDER_OBJECT + UtilConstants.SPACE + className + UtilConstants.NEW_LINE
324 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530325 }
326
327 /**
328 * Generate javaDocs for build.
329 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530330 * @param buildName builder name
Bharat saraswal870c56f2016-02-20 21:57:16 +0530331 * @return javaDocs
332 */
333 private static String generateForBuild(String buildName) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530334 return UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
Bharat saraswal870c56f2016-02-20 21:57:16 +0530335 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_BUILD + buildName + UtilConstants.PERIOD
336 + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.NEW_LINE_ESTRIC
337 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_RETURN
338 + UtilConstants.JAVA_DOC_BUILD_RETURN + buildName + UtilConstants.PERIOD + UtilConstants.NEW_LINE
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530339 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530340 }
341}