YANG Translator optimization

Change-Id: Ie6a6b9d371a4fc5fd973cf56d6f3c7b44a3146ba
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 138b7d4..97b4758 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
@@ -16,8 +16,12 @@
 
 package org.onosproject.yangutils.translator.tojava.utils;
 
+import java.util.Set;
+import java.util.TreeSet;
+
 import org.onosproject.yangutils.datamodel.YangDataTypes;
 import org.onosproject.yangutils.datamodel.YangType;
+import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
 import org.onosproject.yangutils.utils.UtilConstants;
 
 /**
@@ -25,6 +29,8 @@
  */
 public final class AttributesJavaDataType {
 
+    private static Set<JavaQualifiedTypeInfo> importInfo = new TreeSet<>();
+
     /**
      * Default constructor.
      */
@@ -32,6 +38,24 @@
     }
 
     /**
+     * Returns import info.
+     *
+     * @return import info
+     */
+    public static Set<JavaQualifiedTypeInfo> getImportInfo() {
+        return importInfo;
+    }
+
+    /**
+     * Adds import info to the import info set.
+     *
+     * @param importData import info
+     */
+    public static void addImportInfo(JavaQualifiedTypeInfo importData) {
+        getImportInfo().add(importData);
+    }
+
+    /**
      * Returns java type.
      *
      * @param yangType YANG type
@@ -134,7 +158,8 @@
             } else if (type.equals(YangDataTypes.INSTANCE_IDENTIFIER)) {
                 //TODO:INSTANCE_IDENTIFIER
             } else if (type.equals(YangDataTypes.DERIVED)) {
-                //TODO:DERIVED
+                return JavaIdentifierSyntax
+                        .getCaptialCase(JavaIdentifierSyntax.getCamelCase(yangType.getDataTypeName()));
             }
         } else {
             if (type.equals(YangDataTypes.UINT64)) {
@@ -160,7 +185,8 @@
             } else if (type.equals(YangDataTypes.INSTANCE_IDENTIFIER)) {
                 //TODO:INSTANCE_IDENTIFIER
             } else if (type.equals(YangDataTypes.DERIVED)) {
-                //TODO:DERIVED
+                return JavaIdentifierSyntax
+                        .getCaptialCase(JavaIdentifierSyntax.getCamelCase(yangType.getDataTypeName()));
             }
         }
         return null;
@@ -171,9 +197,10 @@
      *
      * @param yangType YANG type
      * @param isListAttr if the attribute is of list type
+     * @param classInfo java import class info
      * @return java import package
      */
-    public static String getJavaImportPackage(YangType<?> yangType, boolean isListAttr) {
+    public static String getJavaImportPackage(YangType<?> yangType, boolean isListAttr, String classInfo) {
         YangDataTypes type = yangType.getDataType();
 
         if (isListAttr) {
@@ -208,7 +235,11 @@
             } else if (type.equals(YangDataTypes.INSTANCE_IDENTIFIER)) {
                 //TODO:INSTANCE_IDENTIFIER
             } else if (type.equals(YangDataTypes.DERIVED)) {
-                //TODO:DERIVED
+                for (JavaQualifiedTypeInfo imports : getImportInfo()) {
+                    if (imports.getClassInfo().equals(classInfo)) {
+                        return imports.getPkgInfo();
+                    }
+                }
             }
         } else {
 
@@ -235,7 +266,11 @@
             } else if (type.equals(YangDataTypes.INSTANCE_IDENTIFIER)) {
                 //TODO:INSTANCE_IDENTIFIER
             } else if (type.equals(YangDataTypes.DERIVED)) {
-                //TODO:DERIVED
+                for (JavaQualifiedTypeInfo imports : getImportInfo()) {
+                    if (imports.getClassInfo().equals(classInfo)) {
+                        return imports.getPkgInfo();
+                    }
+                }
             }
         }
         return null;