blob: c2f170c1d24d32cf037d7ed519b8de41b56197c3 [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 /**
74 * For default constructor.
75 */
76 DEFAULT_CONSTRUCTOR,
77
78 /**
79 * For constructor.
80 */
81 CONSTRUCTOR,
82
83 /**
84 * For build.
85 */
86 BUILD
87 }
88
89 /**
90 * Returns java docs.
91 *
92 * @param type java doc type
93 * @param name name of the YangNode
Vinod Kumar Sc4216002016-03-03 19:55:30 +053094 * @return javadocs
Bharat saraswal870c56f2016-02-20 21:57:16 +053095 */
96 public static String getJavaDoc(JavaDocType type, String name) {
97 name = JavaIdentifierSyntax.getCamelCase(name);
98 String javaDoc = "";
99 if (type.equals(JavaDocType.IMPL_CLASS)) {
100 javaDoc = generateForImplClass(name);
101 } else if (type.equals(JavaDocType.BUILDER_CLASS)) {
102 javaDoc = generateForBuilderClass(name);
103 } else if (type.equals(JavaDocType.INTERFACE)) {
104 javaDoc = generateForInterface(name);
105 } else if (type.equals(JavaDocType.BUILDER_INTERFACE)) {
106 javaDoc = generateForBuilderInterface(name);
107 } else if (type.equals(JavaDocType.PACKAGE_INFO)) {
108 javaDoc = generateForPackage(name);
109 } else if (type.equals(JavaDocType.GETTER)) {
110 javaDoc = generateForGetters(name);
111 } else if (type.equals(JavaDocType.SETTER)) {
112 javaDoc = generateForSetters(name);
113 } else if (type.equals(JavaDocType.DEFAULT_CONSTRUCTOR)) {
114 javaDoc = generateForDefaultConstructors();
115 } else if (type.equals(JavaDocType.BUILD)) {
116 javaDoc = generateForBuild(name);
b.janani68c55e12016-02-24 12:23:03 +0530117 } else {
Bharat saraswal870c56f2016-02-20 21:57:16 +0530118 javaDoc = generateForConstructors(name);
119 }
120 return javaDoc;
121 }
122
123 /**
124 * Generate javaDocs for getter method.
125 *
126 * @param attribute attribute
127 * @return javaDocs
128 */
129 private static String generateForGetters(String attribute) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530130 return UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
Bharat saraswal870c56f2016-02-20 21:57:16 +0530131 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_GETTERS + attribute
132 + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
133 + UtilConstants.NEW_LINE_ESTRIC + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_RETURN
134 + attribute + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530135 + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530136 }
137
138 /**
139 * Generates javaDocs for setter method.
140 *
141 * @param attribute attribute
142 * @return javaDocs
143 */
144 private static String generateForSetters(String attribute) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530145 return UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
Bharat saraswal870c56f2016-02-20 21:57:16 +0530146 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_SETTERS + attribute
147 + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
148 + UtilConstants.NEW_LINE_ESTRIC + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_PARAM
149 + attribute + UtilConstants.SPACE + attribute + UtilConstants.NEW_LINE
150 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_RETURN + UtilConstants.BUILDER_OBJECT
151 + attribute + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530152 + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530153 }
154
155 /**
156 * Generate javaDocs for the impl class.
157 *
158 * @param className class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530159 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530160 */
161 private static String generateForImplClass(String className) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530162 return UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.IMPL_CLASS_JAVA_DOC + className + UtilConstants.PERIOD
163 + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530164 }
165
166 /**
167 * Generate javaDocs for the builder class.
168 *
169 * @param className class name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530170 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530171 */
172 private static String generateForBuilderClass(String className) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530173 return UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.BUILDER_CLASS_JAVA_DOC + className
174 + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530175 }
176
177 /**
178 * Generate javaDoc for the interface.
179 *
180 * @param interfaceName interface name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530181 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530182 */
183 private static String generateForInterface(String interfaceName) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530184 return UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.INTERFACE_JAVA_DOC + interfaceName
185 + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530186 }
187
188 /**
189 * Generate javaDoc for the builder interface.
190 *
191 * @param builderforName builder for name
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530192 * @return javaDocs
Bharat saraswal870c56f2016-02-20 21:57:16 +0530193 */
194 private static String generateForBuilderInterface(String builderforName) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530195 return UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.BUILDER_INTERFACE_JAVA_DOC + builderforName
196 + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530197 }
198
199 /**
200 * Generate javaDocs for package-info.
201 *
202 * @param packageName package name
203 * @return javaDocs
204 */
205 private static String generateForPackage(String packageName) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530206 return UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.PACKAGE_INFO_JAVADOC + packageName
207 + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530208 }
209
210 /**
211 * Generate javaDocs for default constructor.
212 *
213 * @return javaDocs
214 */
215 private static String generateForDefaultConstructors() {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530216 return UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_DEFAULT_CONSTRUCTOR
217 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530218 }
219
220 /**
221 * Generate javaDocs for constructor with parameters.
222 *
Bharat saraswal870c56f2016-02-20 21:57:16 +0530223 * @param className class name
224 * @return javaDocs
225 */
226 private static String generateForConstructors(String className) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530227 return UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.FOUR_SPACE_INDENTATION
Bharat saraswal594bc6d2016-02-22 22:15:21 +0530228 + UtilConstants.JAVA_DOC_CONSTRUCTOR + className + UtilConstants.IMPL + UtilConstants.PERIOD
229 + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.NEW_LINE_ESTRIC
Bharat saraswal870c56f2016-02-20 21:57:16 +0530230 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_PARAM
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530231 + className.substring(0, 1).toLowerCase() + className.substring(1) + UtilConstants.OBJECT
Bharat saraswal870c56f2016-02-20 21:57:16 +0530232 + UtilConstants.SPACE + UtilConstants.BUILDER_OBJECT + UtilConstants.SPACE + className
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530233 + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530234 }
235
236 /**
237 * Generate javaDocs for build.
238 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530239 * @param buildName builder name
Bharat saraswal870c56f2016-02-20 21:57:16 +0530240 * @return javaDocs
241 */
242 private static String generateForBuild(String buildName) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530243 return UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
Bharat saraswal870c56f2016-02-20 21:57:16 +0530244 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_BUILD + buildName + UtilConstants.PERIOD
245 + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.NEW_LINE_ESTRIC
246 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_RETURN
247 + UtilConstants.JAVA_DOC_BUILD_RETURN + buildName + UtilConstants.PERIOD + UtilConstants.NEW_LINE
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530248 + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530249 }
250}