blob: 72bedf9e8b455da7430b70fe28dc2997c1af7a8c [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) {
159 attribute = UtilConstants.LIST.toLowerCase() + UtilConstants.SPACE + UtilConstants.OF + UtilConstants.SPACE
160 + attribute;
161 }
162
163 getter = getter + attribute + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530164 + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530165 return getter;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530166 }
167
168 /**
169 * Generates javaDocs for setter method.
170 *
171 * @param attribute attribute
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530172 * @param isList is list attribute
Bharat saraswal870c56f2016-02-20 21:57:16 +0530173 * @return javaDocs
174 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530175 private static String generateForSetters(String attribute, boolean isList) {
176 String setter = UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
177 + UtilConstants.JAVA_DOC_FIRST_LINE
Bharat saraswal870c56f2016-02-20 21:57:16 +0530178 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_SETTERS + attribute
179 + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
180 + UtilConstants.NEW_LINE_ESTRIC + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_PARAM
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530181 + attribute + UtilConstants.SPACE;
182 if (isList) {
183 attribute = UtilConstants.LIST.toLowerCase() + UtilConstants.SPACE + UtilConstants.OF + UtilConstants.SPACE
184 + attribute;
185 }
186
187 setter = setter + attribute + UtilConstants.NEW_LINE
Bharat saraswal870c56f2016-02-20 21:57:16 +0530188 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_RETURN + UtilConstants.BUILDER_OBJECT
189 + attribute + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530190 + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530191 return setter;
192 }
193
194 /**
195 * Generates javaDocs for of method.
196 *
197 * @param attribute attribute
198 * @return javaDocs
199 */
200 private static String generateForOf(String attribute) {
201 return UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
202 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_OF + attribute
203 + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
204 + UtilConstants.NEW_LINE_ESTRIC + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_PARAM
205 + UtilConstants.VALUE + UtilConstants.SPACE + UtilConstants.VALUE + UtilConstants.NEW_LINE
206 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_RETURN + UtilConstants.OBJECT
207 + UtilConstants.SPACE + UtilConstants.OF + UtilConstants.SPACE + attribute + UtilConstants.NEW_LINE
208 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE;
209 }
210
211 /**
212 * Generates javaDocs for typedef setter method.
213 *
214 * @param attribute attribute
215 * @return javaDocs
216 */
217 private static String generateForTypeDefSetter(String attribute) {
218 return (UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
219 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_SETTERS_COMMON + attribute
220 + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
221 + UtilConstants.NEW_LINE_ESTRIC + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_PARAM
222 + UtilConstants.VALUE + UtilConstants.SPACE + UtilConstants.VALUE + UtilConstants.NEW_LINE
223 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE);
224 }
225
226 /**
227 * Generates javaDocs for typedef constructor.
228 *
229 * @param attribute attribute
230 * @return javaDocs
231 */
232 private static String generateForTypeDefConstructor(String attribute) {
233 return (UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
234 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_CONSTRUCTOR + attribute
235 + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
236 + UtilConstants.NEW_LINE_ESTRIC + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_PARAM
237 + UtilConstants.VALUE + UtilConstants.SPACE + UtilConstants.VALUE + UtilConstants.NEW_LINE
238 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530239 }
240
241 /**
242 * Generate javaDocs for the impl class.
243 *
244 * @param className class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530245 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530246 */
247 private static String generateForImplClass(String className) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530248 return UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.IMPL_CLASS_JAVA_DOC + className + UtilConstants.PERIOD
249 + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530250 }
251
252 /**
253 * Generate javaDocs for the builder class.
254 *
255 * @param className class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530256 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530257 */
258 private static String generateForBuilderClass(String className) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530259 return UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.BUILDER_CLASS_JAVA_DOC
260 + className + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530261 }
262
263 /**
264 * Generate javaDoc for the interface.
265 *
266 * @param interfaceName interface name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530267 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530268 */
269 private static String generateForInterface(String interfaceName) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530270 return UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.INTERFACE_JAVA_DOC
271 + interfaceName + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530272 }
273
274 /**
275 * Generate javaDoc for the builder interface.
276 *
277 * @param builderforName builder for name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530278 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530279 */
280 private static String generateForBuilderInterface(String builderforName) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530281 return UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.BUILDER_INTERFACE_JAVA_DOC + builderforName
282 + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530283 }
284
285 /**
286 * Generate javaDocs for package-info.
287 *
288 * @param packageName package name
289 * @return javaDocs
290 */
291 private static String generateForPackage(String packageName) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530292 return UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.PACKAGE_INFO_JAVADOC + packageName
293 + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530294 }
295
296 /**
297 * Generate javaDocs for default constructor.
298 *
299 * @return javaDocs
300 */
301 private static String generateForDefaultConstructors() {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530302 return UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_DEFAULT_CONSTRUCTOR
303 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530304 }
305
306 /**
307 * Generate javaDocs for constructor with parameters.
308 *
Bharat saraswal870c56f2016-02-20 21:57:16 +0530309 * @param className class name
310 * @return javaDocs
311 */
312 private static String generateForConstructors(String className) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530313 return UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.FOUR_SPACE_INDENTATION
Bharat saraswal594bc6d2016-02-22 22:15:21 +0530314 + UtilConstants.JAVA_DOC_CONSTRUCTOR + className + UtilConstants.IMPL + UtilConstants.PERIOD
315 + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.NEW_LINE_ESTRIC
Bharat saraswal870c56f2016-02-20 21:57:16 +0530316 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_PARAM
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530317 + className.substring(0, 1).toLowerCase() + className.substring(1) + UtilConstants.OBJECT
Bharat saraswal870c56f2016-02-20 21:57:16 +0530318 + UtilConstants.SPACE + UtilConstants.BUILDER_OBJECT + UtilConstants.SPACE + className
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530319 + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530320 }
321
322 /**
323 * Generate javaDocs for build.
324 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530325 * @param buildName builder name
Bharat saraswal870c56f2016-02-20 21:57:16 +0530326 * @return javaDocs
327 */
328 private static String generateForBuild(String buildName) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530329 return UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
Bharat saraswal870c56f2016-02-20 21:57:16 +0530330 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_BUILD + buildName + UtilConstants.PERIOD
331 + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.NEW_LINE_ESTRIC
332 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_RETURN
333 + UtilConstants.JAVA_DOC_BUILD_RETURN + buildName + UtilConstants.PERIOD + UtilConstants.NEW_LINE
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530334 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530335 }
336}