[ONOS-4073] YANG enum translator implementation.

Change-Id: I129eaec0c8f81c674a994a579650f18499340052
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataType.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataType.java
index 64fdf04..e28fa4e 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataType.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataType.java
@@ -18,6 +18,7 @@
 
 import org.onosproject.yangutils.datamodel.YangDataTypes;
 import org.onosproject.yangutils.datamodel.YangDerivedInfo;
+import org.onosproject.yangutils.datamodel.YangEnumeration;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangType;
 import org.onosproject.yangutils.datamodel.YangTypeDef;
@@ -25,6 +26,7 @@
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.HasJavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
+import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaEnumeration;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaTypeDef;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaUnion;
 
@@ -186,7 +188,8 @@
                 case BOOLEAN:
                     return BOOLEAN_WRAPPER;
                 case ENUMERATION:
-                    //TODO: ENUMERATION.
+                    return getCaptialCase(
+                            getCamelCase(((YangJavaEnumeration) yangType.getDataTypeExtendedInfo()).getName(), null));
                 case BITS:
                     //TODO:BITS
                 case BINARY:
@@ -205,7 +208,7 @@
                 case DERIVED:
                     return getCaptialCase(getCamelCase(yangType.getDataTypeName(), null));
                 default:
-                    return null;
+                    throw new TranslatorException("given data type is not supported.");
             }
         } else {
             switch (type) {
@@ -216,7 +219,8 @@
                 case STRING:
                     return STRING_DATA_TYPE;
                 case ENUMERATION:
-                    //TODO: ENUMERATION.
+                    return getCaptialCase(
+                            getCamelCase(((YangJavaEnumeration) yangType.getDataTypeExtendedInfo()).getName(), null));
                 case BITS:
                     //TODO:BITS
                 case BINARY:
@@ -269,7 +273,7 @@
                 case DECIMAL64:
                     //TODO: DECIMAL64.
                 case ENUMERATION:
-                    //TODO: ENUMERATION.
+                    return getEnumsPackage(yangType);
                 case BITS:
                     //TODO:BITS
                 case BINARY:
@@ -287,7 +291,7 @@
                 case DERIVED:
                     return getTypDefsPackage(yangType);
                 default:
-                    return null;
+                    throw new TranslatorException("given data type is not supported.");
             }
         } else {
             switch (type) {
@@ -298,7 +302,7 @@
                 case STRING:
                     return JAVA_LANG;
                 case ENUMERATION:
-                    //TODO: ENUMERATION.
+                    return getEnumsPackage(yangType);
                 case BITS:
                     //TODO:BITS
                 case BINARY:
@@ -364,6 +368,24 @@
     }
 
     /**
+     * Returns YANG enumeration's java package.
+     *
+     * @param type YANG type
+     * @return YANG enumeration's java package
+     */
+    private static String getEnumsPackage(YangType<?> type) {
+
+        if (!(type.getDataTypeExtendedInfo() instanceof YangEnumeration)) {
+            throw new TranslatorException("type should have been enumeration.");
+        }
+        YangJavaEnumeration enumeration = (YangJavaEnumeration) type.getDataTypeExtendedInfo();
+        if (enumeration.getJavaFileInfo().getPackage() == null) {
+            return getPackageFromParent(enumeration.getParent());
+        }
+        return enumeration.getJavaFileInfo().getPackage();
+    }
+
+    /**
      * Returns package from parent node.
      *
      * @param parent parent YANG node