blob: 982cbc4ccce08c831e7205e171afd6d569bcd726 [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;
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;
Bharat saraswale2d51d62016-03-23 19:40:35 +053033import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_END_LINE;
34import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_FIRST_LINE;
35import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_GETTERS;
36import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_OF;
37import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_PARAM;
38import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_RETURN;
39import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_SETTERS;
40import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_SETTERS_COMMON;
41import static org.onosproject.yangutils.utils.UtilConstants.LIST;
42import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Bharat saraswal2f11f652016-03-25 18:19:46 +053043import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE_ASTERISK;
Bharat saraswale2d51d62016-03-23 19:40:35 +053044import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
45import static org.onosproject.yangutils.utils.UtilConstants.OF;
46import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE_INFO_JAVADOC;
47import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
48import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
49import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
50
Bharat saraswal870c56f2016-02-20 21:57:16 +053051/**
Bharat saraswald9822e92016-04-05 15:13:44 +053052 * Represents javadoc for the generated classes.
Bharat saraswal870c56f2016-02-20 21:57:16 +053053 */
54public final class JavaDocGen {
55
56 /**
Bharat saraswald9822e92016-04-05 15:13:44 +053057 * Creates an instance of java doc gen.
Bharat saraswal870c56f2016-02-20 21:57:16 +053058 */
59 private JavaDocGen() {
60 }
61
62 /**
63 * JavaDocs types.
64 */
65 public static enum JavaDocType {
66
67 /**
68 * For class.
69 */
70 IMPL_CLASS,
71
72 /**
73 * For builder class.
74 */
75 BUILDER_CLASS,
76
77 /**
78 * For interface.
79 */
80 INTERFACE,
81
82 /**
83 * For builder interface.
84 */
85 BUILDER_INTERFACE,
86
87 /**
88 * For package-info.
89 */
90 PACKAGE_INFO,
91
92 /**
93 * For getters.
94 */
Bharat saraswale2d51d62016-03-23 19:40:35 +053095 GETTER_METHOD,
Bharat saraswal870c56f2016-02-20 21:57:16 +053096
97 /**
98 * For setters.
99 */
Bharat saraswale2d51d62016-03-23 19:40:35 +0530100 SETTER_METHOD,
Bharat saraswal870c56f2016-02-20 21:57:16 +0530101
102 /**
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530103 * For type def's setters.
104 */
Bharat saraswale2d51d62016-03-23 19:40:35 +0530105 TYPE_DEF_SETTER_METHOD,
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530106
107 /**
108 * For type def's constructor.
109 */
110 TYPE_DEF_CONSTRUCTOR,
111
112 /**
113 * For of method.
114 */
Bharat saraswale2d51d62016-03-23 19:40:35 +0530115 OF_METHOD,
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530116
117 /**
Bharat saraswal870c56f2016-02-20 21:57:16 +0530118 * For default constructor.
119 */
120 DEFAULT_CONSTRUCTOR,
121
122 /**
123 * For constructor.
124 */
125 CONSTRUCTOR,
126
127 /**
128 * For build.
129 */
Bharat saraswale2d51d62016-03-23 19:40:35 +0530130 BUILD_METHOD
Bharat saraswal870c56f2016-02-20 21:57:16 +0530131 }
132
133 /**
134 * Returns java docs.
135 *
136 * @param type java doc type
137 * @param name name of the YangNode
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530138 * @param isList is list attribute
139 * @return javadocs.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530140 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530141 public static String getJavaDoc(JavaDocType type, String name, boolean isList) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530142
janani bde4ffab2016-04-15 16:18:30 +0530143 name = JavaIdentifierSyntax.getSmallCase(JavaIdentifierSyntax.getCamelCase(name, null));
Bharat saraswale2d51d62016-03-23 19:40:35 +0530144 String javaDoc = UtilConstants.EMPTY_STRING;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530145 if (type.equals(JavaDocType.IMPL_CLASS)) {
146 javaDoc = generateForImplClass(name);
147 } else if (type.equals(JavaDocType.BUILDER_CLASS)) {
148 javaDoc = generateForBuilderClass(name);
149 } else if (type.equals(JavaDocType.INTERFACE)) {
150 javaDoc = generateForInterface(name);
151 } else if (type.equals(JavaDocType.BUILDER_INTERFACE)) {
152 javaDoc = generateForBuilderInterface(name);
153 } else if (type.equals(JavaDocType.PACKAGE_INFO)) {
154 javaDoc = generateForPackage(name);
Bharat saraswale2d51d62016-03-23 19:40:35 +0530155 } else if (type.equals(JavaDocType.GETTER_METHOD)) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530156 javaDoc = generateForGetters(name, isList);
Bharat saraswale2d51d62016-03-23 19:40:35 +0530157 } else if (type.equals(JavaDocType.TYPE_DEF_SETTER_METHOD)) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530158 javaDoc = generateForTypeDefSetter(name);
159 } else if (type.equals(JavaDocType.TYPE_DEF_CONSTRUCTOR)) {
160 javaDoc = generateForTypeDefConstructor(name);
Bharat saraswale2d51d62016-03-23 19:40:35 +0530161 } else if (type.equals(JavaDocType.SETTER_METHOD)) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530162 javaDoc = generateForSetters(name, isList);
Bharat saraswale2d51d62016-03-23 19:40:35 +0530163 } else if (type.equals(JavaDocType.OF_METHOD)) {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530164 javaDoc = generateForOf(name);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530165 } else if (type.equals(JavaDocType.DEFAULT_CONSTRUCTOR)) {
Bharat saraswal6ef0b762016-04-05 12:45:45 +0530166 javaDoc = generateForDefaultConstructors(name);
Bharat saraswale2d51d62016-03-23 19:40:35 +0530167 } else if (type.equals(JavaDocType.BUILD_METHOD)) {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530168 javaDoc = generateForBuild(name);
b.janani68c55e12016-02-24 12:23:03 +0530169 } else {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530170 javaDoc = generateForConstructors(name);
171 }
172 return javaDoc;
173 }
174
175 /**
176 * Generate javaDocs for getter method.
177 *
178 * @param attribute attribute
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530179 * @param isList is list attribute
Bharat saraswal870c56f2016-02-20 21:57:16 +0530180 * @return javaDocs
181 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530182 private static String generateForGetters(String attribute, boolean isList) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530183
184 String getter = NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
Bharat saraswal2f11f652016-03-25 18:19:46 +0530185 + JAVA_DOC_GETTERS + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
Bharat saraswale2d51d62016-03-23 19:40:35 +0530186 + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530187 if (isList) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530188 String listAttribute = LIST.toLowerCase() + SPACE + OF + SPACE;
Vinod Kumar S38046502016-03-23 15:30:27 +0530189 getter = getter + listAttribute;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530190 } else {
191 getter = getter + VALUE + SPACE + OF + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530192 }
193
Bharat saraswale2d51d62016-03-23 19:40:35 +0530194 getter = getter + attribute + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530195 return getter;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530196 }
197
198 /**
199 * Generates javaDocs for setter method.
200 *
201 * @param attribute attribute
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530202 * @param isList is list attribute
Bharat saraswal870c56f2016-02-20 21:57:16 +0530203 * @return javaDocs
204 */
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530205 private static String generateForSetters(String attribute, boolean isList) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530206
207 String setter = NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
Bharat saraswal2f11f652016-03-25 18:19:46 +0530208 + JAVA_DOC_SETTERS + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
Bharat saraswale2d51d62016-03-23 19:40:35 +0530209 + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + attribute + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530210 if (isList) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530211 String listAttribute = LIST.toLowerCase() + SPACE + OF + SPACE;
Vinod Kumar S38046502016-03-23 15:30:27 +0530212 setter = setter + listAttribute;
213 } else {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530214 setter = setter + VALUE + SPACE + OF + SPACE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530215 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530216 setter = setter + attribute + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + BUILDER_OBJECT + attribute
217 + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530218 return setter;
219 }
220
221 /**
222 * Generates javaDocs for of method.
223 *
224 * @param attribute attribute
225 * @return javaDocs
226 */
227 private static String generateForOf(String attribute) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530228 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_OF
Bharat saraswal2f11f652016-03-25 18:19:46 +0530229 + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION
Bharat saraswale2d51d62016-03-23 19:40:35 +0530230 + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute + NEW_LINE
231 + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + OBJECT + SPACE + OF + SPACE + attribute + NEW_LINE
232 + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530233 }
234
235 /**
236 * Generates javaDocs for typedef setter method.
237 *
238 * @param attribute attribute
239 * @return javaDocs
240 */
241 private static String generateForTypeDefSetter(String attribute) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530242 return (NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
Bharat saraswal2f11f652016-03-25 18:19:46 +0530243 + JAVA_DOC_SETTERS_COMMON + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
Bharat saraswale2d51d62016-03-23 19:40:35 +0530244 + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute
245 + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530246 }
247
248 /**
249 * Generates javaDocs for typedef constructor.
250 *
251 * @param attribute attribute
252 * @return javaDocs
253 */
254 private static String generateForTypeDefConstructor(String attribute) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530255 return (NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR
Bharat saraswal2f11f652016-03-25 18:19:46 +0530256 + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION
Bharat saraswale2d51d62016-03-23 19:40:35 +0530257 + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute + NEW_LINE
258 + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE);
Bharat saraswal870c56f2016-02-20 21:57:16 +0530259 }
260
261 /**
262 * Generate javaDocs for the impl class.
263 *
264 * @param className class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530265 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530266 */
267 private static String generateForImplClass(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530268 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 +0530269 }
270
271 /**
272 * Generate javaDocs for the builder class.
273 *
274 * @param className class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530275 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530276 */
277 private static String generateForBuilderClass(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530278 return NEW_LINE + JAVA_DOC_FIRST_LINE + BUILDER_CLASS_JAVA_DOC + className + PERIOD + NEW_LINE
279 + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530280 }
281
282 /**
283 * Generate javaDoc for the interface.
284 *
285 * @param interfaceName interface name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530286 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530287 */
288 private static String generateForInterface(String interfaceName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530289 return NEW_LINE + JAVA_DOC_FIRST_LINE + INTERFACE_JAVA_DOC + interfaceName + PERIOD + NEW_LINE
290 + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530291 }
292
293 /**
294 * Generate javaDoc for the builder interface.
295 *
296 * @param builderforName builder for name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530297 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530298 */
299 private static String generateForBuilderInterface(String builderforName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530300 return JAVA_DOC_FIRST_LINE + BUILDER_INTERFACE_JAVA_DOC + builderforName + PERIOD + NEW_LINE
301 + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530302 }
303
304 /**
305 * Generate javaDocs for package-info.
306 *
307 * @param packageName package name
308 * @return javaDocs
309 */
310 private static String generateForPackage(String packageName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530311 return JAVA_DOC_FIRST_LINE + PACKAGE_INFO_JAVADOC + packageName + PERIOD + NEW_LINE + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530312 }
313
314 /**
315 * Generate javaDocs for default constructor.
316 *
Bharat saraswal6ef0b762016-04-05 12:45:45 +0530317 * @param className class name
Bharat saraswal870c56f2016-02-20 21:57:16 +0530318 * @return javaDocs
319 */
Bharat saraswal6ef0b762016-04-05 12:45:45 +0530320 private static String generateForDefaultConstructors(String className) {
321 return FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR + className
322 + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530323 }
324
325 /**
326 * Generate javaDocs for constructor with parameters.
327 *
Bharat saraswal870c56f2016-02-20 21:57:16 +0530328 * @param className class name
329 * @return javaDocs
330 */
331 private static String generateForConstructors(String className) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530332 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE
333 + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR + className + IMPL + PERIOD + NEW_LINE
Bharat saraswal2f11f652016-03-25 18:19:46 +0530334 + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM
335 + BUILDER.toLowerCase() + OBJECT + SPACE + BUILDER_OBJECT + className + NEW_LINE
Bharat saraswale2d51d62016-03-23 19:40:35 +0530336 + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530337 }
338
339 /**
340 * Generate javaDocs for build.
341 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530342 * @param buildName builder name
Bharat saraswal870c56f2016-02-20 21:57:16 +0530343 * @return javaDocs
344 */
345 private static String generateForBuild(String buildName) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530346 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_BUILD
Bharat saraswal2f11f652016-03-25 18:19:46 +0530347 + buildName + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION
Bharat saraswale2d51d62016-03-23 19:40:35 +0530348 + JAVA_DOC_RETURN + JAVA_DOC_BUILD_RETURN + buildName + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION
349 + JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530350 }
351}