multiFileYangTranslator

Change-Id: I2adfef3acaec4bd74ba2c487404d2c655b800988
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/datamodel/utils/YangDataModelFactory.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/datamodel/utils/YangDataModelFactory.java
index 686360e..aff53c4 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/datamodel/utils/YangDataModelFactory.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/datamodel/utils/YangDataModelFactory.java
@@ -20,38 +20,42 @@
 import org.onosproject.yangutils.datamodel.YangChoice;
 import org.onosproject.yangutils.datamodel.YangContainer;
 import org.onosproject.yangutils.datamodel.YangGrouping;
+import org.onosproject.yangutils.datamodel.YangInput;
 import org.onosproject.yangutils.datamodel.YangLeaf;
+import org.onosproject.yangutils.datamodel.YangLeafList;
 import org.onosproject.yangutils.datamodel.YangList;
 import org.onosproject.yangutils.datamodel.YangModule;
+import org.onosproject.yangutils.datamodel.YangNotification;
+import org.onosproject.yangutils.datamodel.YangOutput;
+import org.onosproject.yangutils.datamodel.YangRpc;
 import org.onosproject.yangutils.datamodel.YangSubModule;
+import org.onosproject.yangutils.datamodel.YangType;
 import org.onosproject.yangutils.datamodel.YangTypeDef;
 import org.onosproject.yangutils.datamodel.YangUnion;
 import org.onosproject.yangutils.datamodel.YangUses;
-import org.onosproject.yangutils.datamodel.YangNotification;
-import org.onosproject.yangutils.datamodel.YangRpc;
-import org.onosproject.yangutils.datamodel.YangInput;
-import org.onosproject.yangutils.datamodel.YangOutput;
+import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaAugment;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaCase;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaChoice;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaContainer;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaEnumeration;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaGrouping;
+import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaInput;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaLeaf;
+import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaLeafList;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaList;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModule;
+import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaNotification;
+import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaOutput;
+import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaRpc;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaSubModule;
+import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaType;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaTypeDef;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaUnion;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaUses;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaNotification;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaRpc;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaInput;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaOutput;
-import org.onosproject.yangutils.translator.exception.TranslatorException;
 
 /**
- *Represents factory to create data model objects based on the target file type.
+ * Represents factory to create data model objects based on the target file type.
  */
 public final class YangDataModelFactory {
 
@@ -65,7 +69,7 @@
      * Based on the target language generate the inherited data model node.
      *
      * @param targetLanguage target language in which YANG mapping needs to be
-     *            generated
+     * generated
      * @return the corresponding inherited node based on the target language
      */
     public static YangModule getYangModuleNode(GeneratedLanguage targetLanguage) {
@@ -83,7 +87,7 @@
      * Returns based on the target language generate the inherited data model node.
      *
      * @param targetLanguage target language in which YANG mapping needs to be
-     *            generated
+     * generated
      * @return the corresponding inherited node based on the target language
      */
     public static YangAugment getYangAugmentNode(GeneratedLanguage targetLanguage) {
@@ -101,7 +105,7 @@
      * Returns based on the target language generate the inherited data model node.
      *
      * @param targetLanguage target language in which YANG mapping needs to be
-     *            generated
+     * generated
      * @return the corresponding inherited node based on the target language
      */
     public static YangCase getYangCaseNode(GeneratedLanguage targetLanguage) {
@@ -119,7 +123,7 @@
      * Returns based on the target language generate the inherited data model node.
      *
      * @param targetLanguage target language in which YANG mapping needs to be
-     *            generated
+     * generated
      * @return the corresponding inherited node based on the target language
      */
     public static YangChoice getYangChoiceNode(GeneratedLanguage targetLanguage) {
@@ -137,7 +141,7 @@
      * Returns based on the target language generate the inherited data model node.
      *
      * @param targetLanguage target language in which YANG mapping needs to be
-     *            generated
+     * generated
      * @return the corresponding inherited node based on the target language
      */
     public static YangContainer getYangContainerNode(GeneratedLanguage targetLanguage) {
@@ -155,7 +159,7 @@
      * Returns based on the target language generate the inherited data model node.
      *
      * @param targetLanguage target language in which YANG mapping needs to be
-     *            generated
+     * generated
      * @return the corresponding inherited node based on the target language
      */
     public static YangGrouping getYangGroupingNode(GeneratedLanguage targetLanguage) {
@@ -173,7 +177,7 @@
      * Returns based on the target language generate the inherited data model node.
      *
      * @param targetLanguage target language in which YANG mapping needs to be
-     *            generated
+     * generated
      * @return the corresponding inherited node based on the target language
      */
     public static YangList getYangListNode(GeneratedLanguage targetLanguage) {
@@ -191,7 +195,7 @@
      * Returns based on the target language generate the inherited data model node.
      *
      * @param targetLanguage target language in which YANG mapping needs to be
-     *            generated
+     * generated
      * @return the corresponding inherited node based on the target language
      */
     public static YangSubModule getYangSubModuleNode(GeneratedLanguage targetLanguage) {
@@ -209,7 +213,7 @@
      * Returns based on the target language generate the inherited data model node.
      *
      * @param targetLanguage target language in which YANG mapping needs to be
-     *            generated
+     * generated
      * @return the corresponding inherited node based on the target language
      */
     public static YangTypeDef getYangTypeDefNode(GeneratedLanguage targetLanguage) {
@@ -227,7 +231,7 @@
      * Returns based on the target language generate the inherited data model node.
      *
      * @param targetLanguage target language in which YANG mapping needs to be
-     *                       generated
+     * generated
      * @return the corresponding inherited node based on the target language
      */
     public static YangUnion getYangUnionNode(GeneratedLanguage targetLanguage) {
@@ -245,7 +249,7 @@
      * Returns based on the target language generate the inherited data model node.
      *
      * @param targetLanguage target language in which YANG mapping needs to be
-     *                       generated
+     * generated
      * @return the corresponding inherited node based on the target language
      */
     public static YangUses getYangUsesNode(GeneratedLanguage targetLanguage) {
@@ -263,7 +267,7 @@
      * Returns based on the target language generate the inherited data model node.
      *
      * @param targetLanguage target language in which YANG mapping needs to be
-     *            generated
+     * generated
      * @return the corresponding inherited node based on the target language
      */
     public static YangNotification getYangNotificationNode(GeneratedLanguage targetLanguage) {
@@ -281,7 +285,7 @@
      * Returns based on the target language generate the inherited data model node.
      *
      * @param targetLanguage target language in which YANG mapping needs to be
-     *            generated
+     * generated
      * @return the corresponding inherited node based on the target language
      */
     public static YangLeaf getYangLeaf(GeneratedLanguage targetLanguage) {
@@ -294,11 +298,30 @@
             }
         }
     }
+
     /**
      * Returns based on the target language generate the inherited data model node.
      *
      * @param targetLanguage target language in which YANG mapping needs to be
-     *            generated
+     * generated
+     * @return the corresponding inherited node based on the target language
+     */
+    public static YangLeafList getYangLeafList(GeneratedLanguage targetLanguage) {
+        switch (targetLanguage) {
+            case JAVA_GENERATION: {
+                return new YangJavaLeafList();
+            }
+            default: {
+                throw new RuntimeException("Only YANG to Java is supported.");
+            }
+        }
+    }
+
+    /**
+     * Returns based on the target language generate the inherited data model node.
+     *
+     * @param targetLanguage target language in which YANG mapping needs to be
+     * generated
      * @return the corresponding inherited node based on the target language
      */
     public static YangRpc getYangRpcNode(GeneratedLanguage targetLanguage) {
@@ -316,7 +339,7 @@
      * Returns based on the target language generate the inherited data model node.
      *
      * @param targetLanguage target language in which YANG mapping needs to be
-     *            generated
+     * generated
      * @return the corresponding inherited node based on the target language
      */
     public static YangInput getYangInputNode(GeneratedLanguage targetLanguage) {
@@ -334,7 +357,7 @@
      * Returns based on the target language generate the inherited data model node.
      *
      * @param targetLanguage target language in which YANG mapping needs to be
-     *            generated
+     * generated
      * @return the corresponding inherited node based on the target language
      */
     public static YangOutput getYangOutputNode(GeneratedLanguage targetLanguage) {
@@ -352,7 +375,7 @@
      * Returns based on the target language generate the inherited data model node.
      *
      * @param targetLanguage target language in which YANG mapping needs to be
-     *            generated
+     * generated
      * @return the corresponding inherited node based on the target language
      */
     public static YangJavaEnumeration getYangEnumerationNode(GeneratedLanguage targetLanguage) {
@@ -365,4 +388,21 @@
             }
         }
     }
+    /**
+     * Returns based on the target language generate the inherited data model node.
+     *
+     * @param targetLanguage target language in which YANG mapping needs to be
+     * generated
+     * @return the corresponding inherited node based on the target language
+     */
+    public static YangType getYangType(GeneratedLanguage targetLanguage) {
+        switch (targetLanguage) {
+            case JAVA_GENERATION: {
+                return new YangJavaType();
+            }
+            default: {
+                throw new RuntimeException("Only YANG to Java is supported.");
+            }
+        }
+    }
 }