blob: c76ecad3392f063b3527ad59bd62c05426dcf19f [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
19import org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax;
Bharat saraswal870c56f2016-02-20 21:57:16 +053020
Bharat saraswale2d51d62016-03-23 19:40:35 +053021import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
22import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_CLASS_JAVA_DOC;
23import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_INTERFACE_JAVA_DOC;
24import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_OBJECT;
25import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
26import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
27import static org.onosproject.yangutils.utils.UtilConstants.IMPL_CLASS_JAVA_DOC;
28import static org.onosproject.yangutils.utils.UtilConstants.INTERFACE_JAVA_DOC;
29import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_BUILD;
30import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_BUILD_RETURN;
31import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_CONSTRUCTOR;
Bharat saraswale2d51d62016-03-23 19:40:35 +053032import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_END_LINE;
33import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_FIRST_LINE;
34import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_GETTERS;
35import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_OF;
36import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_PARAM;
37import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_RETURN;
38import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_SETTERS;
39import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_SETTERS_COMMON;
40import static org.onosproject.yangutils.utils.UtilConstants.LIST;
41import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Bharat saraswal2f11f652016-03-25 18:19:46 +053042import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE_ASTERISK;
Bharat saraswale2d51d62016-03-23 19:40:35 +053043import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
44import static org.onosproject.yangutils.utils.UtilConstants.OF;
45import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE_INFO_JAVADOC;
46import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
47import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
48import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
49
Bharat saraswal870c56f2016-02-20 21:57:16 +053050/**
Bharat saraswald9822e92016-04-05 15:13:44 +053051 * Represents javadoc for the generated classes.
Bharat saraswal870c56f2016-02-20 21:57:16 +053052 */
53public final class JavaDocGen {
54
55 /**
Bharat saraswald9822e92016-04-05 15:13:44 +053056 * Creates an instance of java doc gen.
Bharat saraswal870c56f2016-02-20 21:57:16 +053057 */
58 private JavaDocGen() {
59 }
60
61 /**
62 * JavaDocs types.
63 */
Vidyashree Rama74453712016-04-18 12:29:39 +053064 public enum JavaDocType {
Bharat saraswal870c56f2016-02-20 21:57:16 +053065
66 /**
67 * For class.
68 */
69 IMPL_CLASS,
70
71 /**
72 * For builder class.
73 */
74 BUILDER_CLASS,
75
76 /**
77 * For interface.
78 */
79 INTERFACE,
80
81 /**
82 * For builder interface.
83 */
84 BUILDER_INTERFACE,
85
86 /**
87 * For package-info.
88 */
89 PACKAGE_INFO,
90
91 /**
92 * For getters.
93 */
Bharat saraswale2d51d62016-03-23 19:40:35 +053094 GETTER_METHOD,
Bharat saraswal870c56f2016-02-20 21:57:16 +053095
96 /**
97 * For setters.
98 */
Bharat saraswale2d51d62016-03-23 19:40:35 +053099 SETTER_METHOD,
Bharat saraswal870c56f2016-02-20 21:57:16 +0530100
101 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530102 * For type def's setters.
103 */
Bharat saraswale2d51d62016-03-23 19:40:35 +0530104 TYPE_DEF_SETTER_METHOD,
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530105
106 /**
107 * For type def's constructor.
108 */
109 TYPE_DEF_CONSTRUCTOR,
110
111 /**
112 * For of method.
113 */
Bharat saraswale2d51d62016-03-23 19:40:35 +0530114 OF_METHOD,
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530115
116 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530117 * For default constructor.
118 */
119 DEFAULT_CONSTRUCTOR,
120
121 /**
122 * For constructor.
123 */
124 CONSTRUCTOR,
125
126 /**
127 * For build.
128 */
Bharat saraswale2d51d62016-03-23 19:40:35 +0530129 BUILD_METHOD
Bharat saraswal870c56f2016-02-20 21:57:16 +0530130 }
131
132 /**
133 * Returns java docs.
134 *
135 * @param type java doc type
136 * @param name name of the YangNode
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530137 * @param isList is list attribute
138 * @return javadocs.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530139 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530140 public static String getJavaDoc(JavaDocType type, String name, boolean isList) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530141
janani bde4ffab2016-04-15 16:18:30 +0530142 name = JavaIdentifierSyntax.getSmallCase(JavaIdentifierSyntax.getCamelCase(name, null));
Vidyashree Rama74453712016-04-18 12:29:39 +0530143 String javaDoc;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530144 if (type.equals(JavaDocType.IMPL_CLASS)) {
145 javaDoc = generateForImplClass(name);
146 } else if (type.equals(JavaDocType.BUILDER_CLASS)) {
147 javaDoc = generateForBuilderClass(name);
148 } else if (type.equals(JavaDocType.INTERFACE)) {
149 javaDoc = generateForInterface(name);
150 } else if (type.equals(JavaDocType.BUILDER_INTERFACE)) {
151 javaDoc = generateForBuilderInterface(name);
152 } else if (type.equals(JavaDocType.PACKAGE_INFO)) {
153 javaDoc = generateForPackage(name);
Bharat saraswale2d51d62016-03-23 19:40:35 +0530154 } else if (type.equals(JavaDocType.GETTER_METHOD)) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530155 javaDoc = generateForGetters(name, isList);
Bharat saraswale2d51d62016-03-23 19:40:35 +0530156 } else if (type.equals(JavaDocType.TYPE_DEF_SETTER_METHOD)) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530157 javaDoc = generateForTypeDefSetter(name);
158 } else if (type.equals(JavaDocType.TYPE_DEF_CONSTRUCTOR)) {
159 javaDoc = generateForTypeDefConstructor(name);
Bharat saraswale2d51d62016-03-23 19:40:35 +0530160 } else if (type.equals(JavaDocType.SETTER_METHOD)) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530161 javaDoc = generateForSetters(name, isList);
Bharat saraswale2d51d62016-03-23 19:40:35 +0530162 } else if (type.equals(JavaDocType.OF_METHOD)) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530163 javaDoc = generateForOf(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530164 } else if (type.equals(JavaDocType.DEFAULT_CONSTRUCTOR)) {
Bharat saraswal6ef0b762016-04-05 12:45:45 +0530165 javaDoc = generateForDefaultConstructors(name);
Bharat saraswale2d51d62016-03-23 19:40:35 +0530166 } else if (type.equals(JavaDocType.BUILD_METHOD)) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530167 javaDoc = generateForBuild(name);
b.janani68c55e12016-02-24 12:23:03 +0530168 } else {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530169 javaDoc = generateForConstructors(name);
170 }
171 return javaDoc;
172 }
173
174 /**
175 * Generate javaDocs for getter method.
176 *
177 * @param attribute attribute
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530178 * @param isList is list attribute
Bharat saraswal870c56f2016-02-20 21:57:16 +0530179 * @return javaDocs
180 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530181 private static String generateForGetters(String attribute, boolean isList) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530182
183 String getter = NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
Bharat saraswal2f11f652016-03-25 18:19:46 +0530184 + JAVA_DOC_GETTERS + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
Bharat saraswale2d51d62016-03-23 19:40:35 +0530185 + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530186 if (isList) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530187 String listAttribute = LIST.toLowerCase() + SPACE + OF + SPACE;
Vinod Kumar S38046502016-03-23 15:30:27 +0530188 getter = getter + listAttribute;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530189 } else {
190 getter = getter + VALUE + SPACE + OF + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530191 }
192
Bharat saraswale2d51d62016-03-23 19:40:35 +0530193 getter = getter + attribute + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530194 return getter;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530195 }
196
197 /**
198 * Generates javaDocs for setter method.
199 *
200 * @param attribute attribute
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530201 * @param isList is list attribute
Bharat saraswal870c56f2016-02-20 21:57:16 +0530202 * @return javaDocs
203 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530204 private static String generateForSetters(String attribute, boolean isList) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530205
206 String setter = NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
Bharat saraswal2f11f652016-03-25 18:19:46 +0530207 + JAVA_DOC_SETTERS + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
Bharat saraswale2d51d62016-03-23 19:40:35 +0530208 + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + attribute + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530209 if (isList) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530210 String listAttribute = LIST.toLowerCase() + SPACE + OF + SPACE;
Vinod Kumar S38046502016-03-23 15:30:27 +0530211 setter = setter + listAttribute;
212 } else {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530213 setter = setter + VALUE + SPACE + OF + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530214 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530215 setter = setter + attribute + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + BUILDER_OBJECT + attribute
216 + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530217 return setter;
218 }
219
220 /**
221 * Generates javaDocs for of method.
222 *
223 * @param attribute attribute
224 * @return javaDocs
225 */
226 private static String generateForOf(String attribute) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530227 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_OF
Bharat saraswal2f11f652016-03-25 18:19:46 +0530228 + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION
Bharat saraswale2d51d62016-03-23 19:40:35 +0530229 + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute + NEW_LINE
230 + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + OBJECT + SPACE + OF + SPACE + attribute + NEW_LINE
231 + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530232 }
233
234 /**
235 * Generates javaDocs for typedef setter method.
236 *
237 * @param attribute attribute
238 * @return javaDocs
239 */
240 private static String generateForTypeDefSetter(String attribute) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530241 return (NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
Bharat saraswal2f11f652016-03-25 18:19:46 +0530242 + JAVA_DOC_SETTERS_COMMON + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
Bharat saraswale2d51d62016-03-23 19:40:35 +0530243 + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute
244 + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530245 }
246
247 /**
248 * Generates javaDocs for typedef constructor.
249 *
250 * @param attribute attribute
251 * @return javaDocs
252 */
253 private static String generateForTypeDefConstructor(String attribute) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530254 return (NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR
Bharat saraswal2f11f652016-03-25 18:19:46 +0530255 + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION
Bharat saraswale2d51d62016-03-23 19:40:35 +0530256 + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute + NEW_LINE
257 + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530258 }
259
260 /**
261 * Generate javaDocs for the impl class.
262 *
263 * @param className class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530264 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530265 */
266 private static String generateForImplClass(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530267 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 +0530268 }
269
270 /**
271 * Generate javaDocs for the builder class.
272 *
273 * @param className class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530274 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530275 */
276 private static String generateForBuilderClass(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530277 return NEW_LINE + JAVA_DOC_FIRST_LINE + BUILDER_CLASS_JAVA_DOC + className + PERIOD + NEW_LINE
278 + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530279 }
280
281 /**
282 * Generate javaDoc for the interface.
283 *
284 * @param interfaceName interface name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530285 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530286 */
287 private static String generateForInterface(String interfaceName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530288 return NEW_LINE + JAVA_DOC_FIRST_LINE + INTERFACE_JAVA_DOC + interfaceName + PERIOD + NEW_LINE
289 + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530290 }
291
292 /**
293 * Generate javaDoc for the builder interface.
294 *
295 * @param builderforName builder for name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530296 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530297 */
298 private static String generateForBuilderInterface(String builderforName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530299 return JAVA_DOC_FIRST_LINE + BUILDER_INTERFACE_JAVA_DOC + builderforName + PERIOD + NEW_LINE
300 + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530301 }
302
303 /**
304 * Generate javaDocs for package-info.
305 *
306 * @param packageName package name
307 * @return javaDocs
308 */
309 private static String generateForPackage(String packageName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530310 return JAVA_DOC_FIRST_LINE + PACKAGE_INFO_JAVADOC + packageName + PERIOD + NEW_LINE + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530311 }
312
313 /**
314 * Generate javaDocs for default constructor.
315 *
Bharat saraswal6ef0b762016-04-05 12:45:45 +0530316 * @param className class name
Bharat saraswal870c56f2016-02-20 21:57:16 +0530317 * @return javaDocs
318 */
Bharat saraswal6ef0b762016-04-05 12:45:45 +0530319 private static String generateForDefaultConstructors(String className) {
320 return FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR + className
321 + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530322 }
323
324 /**
325 * Generate javaDocs for constructor with parameters.
326 *
Bharat saraswal870c56f2016-02-20 21:57:16 +0530327 * @param className class name
328 * @return javaDocs
329 */
330 private static String generateForConstructors(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530331 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE
332 + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR + className + IMPL + PERIOD + NEW_LINE
Bharat saraswal2f11f652016-03-25 18:19:46 +0530333 + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM
334 + BUILDER.toLowerCase() + OBJECT + SPACE + BUILDER_OBJECT + className + NEW_LINE
Bharat saraswale2d51d62016-03-23 19:40:35 +0530335 + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530336 }
337
338 /**
339 * Generate javaDocs for build.
340 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530341 * @param buildName builder name
Bharat saraswal870c56f2016-02-20 21:57:16 +0530342 * @return javaDocs
343 */
344 private static String generateForBuild(String buildName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530345 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_BUILD
Bharat saraswal2f11f652016-03-25 18:19:46 +0530346 + buildName + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION
Bharat saraswale2d51d62016-03-23 19:40:35 +0530347 + JAVA_DOC_RETURN + JAVA_DOC_BUILD_RETURN + buildName + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION
348 + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530349 }
350}