blob: 635acf10212087ea74c773b9d1ae46ed57a5762d [file] [log] [blame]
/*
* Copyright 2016 Open Networking Laboratory
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.yangutils.utils.io.impl;
import org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax;
import org.onosproject.yangutils.utils.UtilConstants;
/**
* Provides javadoc for the generated classes.
*/
public final class JavaDocGen {
/**
* Default Constructor.
*/
private JavaDocGen() {
}
/**
* JavaDocs types.
*/
public static enum JavaDocType {
/**
* For class.
*/
IMPL_CLASS,
/**
* For builder class.
*/
BUILDER_CLASS,
/**
* For interface.
*/
INTERFACE,
/**
* For builder interface.
*/
BUILDER_INTERFACE,
/**
* For package-info.
*/
PACKAGE_INFO,
/**
* For getters.
*/
GETTER,
/**
* For setters.
*/
SETTER,
/**
* For default constructor.
*/
DEFAULT_CONSTRUCTOR,
/**
* For constructor.
*/
CONSTRUCTOR,
/**
* For build.
*/
BUILD
}
/**
* Returns java docs.
*
* @param type java doc type
* @param name name of the YangNode
* @return javadocs.
*/
public static String getJavaDoc(JavaDocType type, String name) {
name = JavaIdentifierSyntax.getCamelCase(name);
String javaDoc = "";
if (type.equals(JavaDocType.IMPL_CLASS)) {
javaDoc = generateForImplClass(name);
} else if (type.equals(JavaDocType.BUILDER_CLASS)) {
javaDoc = generateForBuilderClass(name);
} else if (type.equals(JavaDocType.INTERFACE)) {
javaDoc = generateForInterface(name);
} else if (type.equals(JavaDocType.BUILDER_INTERFACE)) {
javaDoc = generateForBuilderInterface(name);
} else if (type.equals(JavaDocType.PACKAGE_INFO)) {
javaDoc = generateForPackage(name);
} else if (type.equals(JavaDocType.GETTER)) {
javaDoc = generateForGetters(name);
} else if (type.equals(JavaDocType.SETTER)) {
javaDoc = generateForSetters(name);
} else if (type.equals(JavaDocType.DEFAULT_CONSTRUCTOR)) {
javaDoc = generateForDefaultConstructors();
} else if (type.equals(JavaDocType.BUILD)) {
javaDoc = generateForBuild(name);
} else if (type.equals(JavaDocType.CONSTRUCTOR)) {
javaDoc = generateForConstructors(name);
}
return javaDoc;
}
/**
* Generate javaDocs for getter method.
*
* @param attribute attribute
* @return javaDocs
*/
private static String generateForGetters(String attribute) {
return (UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
+ UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_GETTERS + attribute
+ UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
+ UtilConstants.NEW_LINE_ESTRIC + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_RETURN
+ attribute + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
+ UtilConstants.JAVA_DOC_END_LINE);
}
/**
* Generates javaDocs for setter method.
*
* @param attribute attribute
* @return javaDocs
*/
private static String generateForSetters(String attribute) {
return (UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
+ UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_SETTERS + attribute
+ UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
+ UtilConstants.NEW_LINE_ESTRIC + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_PARAM
+ attribute + UtilConstants.SPACE + attribute + UtilConstants.NEW_LINE
+ UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_RETURN + UtilConstants.BUILDER_OBJECT
+ attribute + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
+ UtilConstants.JAVA_DOC_END_LINE);
}
/**
* Generate javaDocs for the impl class.
*
* @param className class name
* @return javaDocs.
*/
private static String generateForImplClass(String className) {
return (UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.IMPL_CLASS_JAVA_DOC + className + UtilConstants.PERIOD
+ UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE);
}
/**
* Generate javaDocs for the builder class.
*
* @param className class name
* @return javaDocs.
*/
private static String generateForBuilderClass(String className) {
return (UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.BUILDER_CLASS_JAVA_DOC
+ className + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE);
}
/**
* Generate javaDoc for the interface.
*
* @param interfaceName interface name
* @return javaDocs.
*/
private static String generateForInterface(String interfaceName) {
return (UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.INTERFACE_JAVA_DOC
+ interfaceName + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE);
}
/**
* Generate javaDoc for the builder interface.
*
* @param builderforName builder for name
* @return javaDocs.
*/
private static String generateForBuilderInterface(String builderforName) {
return (UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.BUILDER_INTERFACE_JAVA_DOC + builderforName
+ UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE);
}
/**
* Generate javaDocs for package-info.
*
* @param packageName package name
* @return javaDocs
*/
private static String generateForPackage(String packageName) {
return (UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.PACKAGE_INFO_JAVADOC + packageName
+ UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE);
}
/**
* Generate javaDocs for default constructor.
*
* @return javaDocs
*/
private static String generateForDefaultConstructors() {
return (UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_DEFAULT_CONSTRUCTOR
+ UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE);
}
/**
* Generate javaDocs for constructor with parameters.
*
* @param params list of parameters
* @param className class name
* @return javaDocs
*/
private static String generateForConstructors(String className) {
return (UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.FOUR_SPACE_INDENTATION
+ UtilConstants.JAVA_DOC_SETTERS + className + UtilConstants.PERIOD + UtilConstants.NEW_LINE
+ UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.NEW_LINE_ESTRIC
+ UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_PARAM
+ (className.substring(0, 1).toLowerCase() + className.substring(1)) + UtilConstants.OBJECT
+ UtilConstants.SPACE + UtilConstants.BUILDER_OBJECT + UtilConstants.SPACE + className
+ UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE);
}
/**
* Generate javaDocs for build.
*
* @return javaDocs
*/
private static String generateForBuild(String buildName) {
return (UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
+ UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_BUILD + buildName + UtilConstants.PERIOD
+ UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.NEW_LINE_ESTRIC
+ UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_RETURN
+ UtilConstants.JAVA_DOC_BUILD_RETURN + buildName + UtilConstants.PERIOD + UtilConstants.NEW_LINE
+ UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE);
}
}