[ONOS-4073] YANG enum translator implementation.

Change-Id: I129eaec0c8f81c674a994a579650f18499340052
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
index db3ff8f..4b9d7b5 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
@@ -53,9 +53,24 @@
     public static final String BUILDER_INTERFACE_JAVA_DOC = " * Builder for ";
 
     /**
+     * JavaDocs for enum class.
+     */
+    public static final String ENUM_CLASS_JAVADOC = " * Represents ENUM data of ";
+
+    /**
+     * JavaDocs for enum attribute.
+     */
+    public static final String ENUM_ATTRIBUTE_JAVADOC = " * Represents ";
+
+    /**
      * JavaDocs for package info class.
      */
-    public static final String PACKAGE_INFO_JAVADOC = " * Implementation of YANG file ";
+    public static final String PACKAGE_INFO_JAVADOC = " * Implementation of YANG node ";
+
+    /**
+     * JavaDocs for package info class.
+     */
+    public static final String PACKAGE_INFO_JAVADOC_OF_CHILD = "'s children nodes";
 
     /**
      * JavaDocs's first line.
@@ -283,6 +298,11 @@
     public static final String VALUE = "value";
 
     /**
+     * Static attribute for enumValue syntax.
+     */
+    public static final String ENUM_VALUE = "enumValue";
+
+    /**
      * Static attribute for suffix s.
      */
     public static final String SUFFIX_S = "s";
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/CopyrightHeader.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/CopyrightHeader.java
index 0a385ac..5833de2 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/CopyrightHeader.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/CopyrightHeader.java
@@ -23,6 +23,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.util.Calendar;
 
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
 
@@ -33,6 +34,8 @@
 
     private static final int EOF = -1;
     private static final String COPYRIGHT_HEADER_FILE = "CopyrightHeader.txt";
+    private static final String COPYRIGHTS_FIRST_LINE = "/*\n * Copyright " + Calendar.getInstance().get(Calendar.YEAR)
+            + "-present Open Networking Laboratory\n";
     private static final String TEMP_FILE = "temp.txt";
     private static ClassLoader classLoader = CopyrightHeader.class.getClassLoader();
 
@@ -82,6 +85,7 @@
             OutputStream out = new FileOutputStream(temp);
 
             int index;
+            out.write(COPYRIGHTS_FIRST_LINE.getBytes());
             while ((index = stream.read()) != EOF) {
                 out.write(index);
             }
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
index a1cae8e..0ecaaa1 100644
--- 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
@@ -22,6 +22,8 @@
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_CLASS_JAVA_DOC;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_INTERFACE_JAVA_DOC;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_OBJECT;
+import static org.onosproject.yangutils.utils.UtilConstants.ENUM_ATTRIBUTE_JAVADOC;
+import static org.onosproject.yangutils.utils.UtilConstants.ENUM_CLASS_JAVADOC;
 import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
 import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
@@ -135,7 +137,17 @@
         /**
          * For build.
          */
-        BUILD_METHOD
+        BUILD_METHOD,
+
+        /**
+         * For enum.
+         */
+        ENUM_CLASS,
+
+        /**
+         * For enum's attributes.
+         */
+        ENUM_ATTRIBUTE
     }
 
     /**
@@ -176,6 +188,10 @@
             javaDoc = generateForTypeConstructor(name);
         } else if (type.equals(JavaDocType.UNION_FROM_METHOD)) {
             javaDoc = generateForUnionFrom(name);
+        } else if (type.equals(JavaDocType.ENUM_CLASS)) {
+            javaDoc = generateForEnum(name);
+        } else if (type.equals(JavaDocType.ENUM_ATTRIBUTE)) {
+            javaDoc = generateForEnumAttr(name);
         } else {
             javaDoc = generateForConstructors(name);
         }
@@ -183,7 +199,18 @@
     }
 
     /**
-     * Generate javaDocs for getter method.
+     * Generates javaDocs for enum's attributes.
+     *
+     * @param name attribute name
+     * @return javaDocs
+     */
+    private static String generateForEnumAttr(String name) {
+        return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + ENUM_ATTRIBUTE_JAVADOC
+                + name + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
+    }
+
+    /**
+     * Generates javaDocs for getter method.
      *
      * @param attribute attribute
      * @param isList    is list attribute
@@ -272,20 +299,7 @@
     }
 
     /**
-     * Generates javaDocs for typedef constructor.
-     *
-     * @param attribute attribute
-     * @return javaDocs
-     */
-    private static String generateForTypeDefConstructor(String attribute) {
-        return (NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR
-                + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION
-                + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute + NEW_LINE
-                + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE);
-    }
-
-    /**
-     * Generate javaDocs for the impl class.
+     * Generates javaDocs for the impl class.
      *
      * @param className class name
      * @return javaDocs
@@ -295,7 +309,18 @@
     }
 
     /**
-     * Generate javaDocs for the builder class.
+     * Generates javaDocs for enum.
+     *
+     * @param className enum class name
+     * @return javaDocs
+     */
+    private static String generateForEnum(String className) {
+        return NEW_LINE + NEW_LINE + JAVA_DOC_FIRST_LINE + ENUM_CLASS_JAVADOC + className + PERIOD + NEW_LINE
+                + JAVA_DOC_END_LINE;
+    }
+
+    /**
+     * Generates javaDocs for the builder class.
      *
      * @param className class name
      * @return javaDocs
@@ -306,7 +331,7 @@
     }
 
     /**
-     * Generate javaDoc for the interface.
+     * Generates javaDoc for the interface.
      *
      * @param interfaceName interface name
      * @return javaDocs
@@ -317,7 +342,7 @@
     }
 
     /**
-     * Generate javaDoc for the builder interface.
+     * Generates javaDoc for the builder interface.
      *
      * @param builderforName builder for name
      * @return javaDocs
@@ -328,7 +353,7 @@
     }
 
     /**
-     * Generate javaDocs for package-info.
+     * Generates javaDocs for package-info.
      *
      * @param packageName package name
      * @return javaDocs
@@ -338,7 +363,7 @@
     }
 
     /**
-     * Generate javaDocs for default constructor.
+     * Generates javaDocs for default constructor.
      *
      * @param className class name
      * @return javaDocs
@@ -349,7 +374,7 @@
     }
 
     /**
-     * Generate javaDocs for constructor with parameters.
+     * Generates javaDocs for constructor with parameters.
      *
      * @param className class name
      * @return javaDocs
@@ -363,7 +388,7 @@
     }
 
     /**
-     * Generate javaDocs for build.
+     * Generates javaDocs for build.
      *
      * @param buildName builder name
      * @return javaDocs
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
index c15d580..baf6929 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
@@ -44,6 +44,7 @@
 import static org.onosproject.yangutils.utils.UtilConstants.YANG_RESOURCES;
 import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.appendFileContents;
 import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.updateFileHandle;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.PACKAGE_INFO;
 import static org.slf4j.LoggerFactory.getLogger;
 
@@ -96,7 +97,7 @@
             BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
 
             bufferedWriter.write(CopyrightHeader.getCopyrightHeader());
-            bufferedWriter.write(JavaDocGen.getJavaDoc(PACKAGE_INFO, classInfo, false));
+            bufferedWriter.write(getJavaDoc(PACKAGE_INFO, classInfo, false));
             bufferedWriter.write(PACKAGE + SPACE + pack + SEMI_COLAN);
 
             bufferedWriter.close();