[ONOS-3906],[ONOS-3910] Implementation of YANG module and leaf/leaf-list translator.
Change-Id: If1a8a991ffafa14b51211f97c435176ee1bf856f
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
new file mode 100644
index 0000000..635acf1
--- /dev/null
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
@@ -0,0 +1,250 @@
+/*
+ * 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);
+ }
+}