[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/translator/tojava/utils/JavaIdentifierSyntax.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
new file mode 100644
index 0000000..94bcfeb
--- /dev/null
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
@@ -0,0 +1,166 @@
+/*
+ * 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.translator.tojava.utils;
+
+import java.util.ArrayList;
+
+import org.onosproject.yangutils.utils.UtilConstants;
+
+/**
+ * Utility Class for translating the name from YANG to java convention.
+ */
+public final class JavaIdentifierSyntax {
+
+    /**
+     * Util class, with static functions only.
+     */
+    private JavaIdentifierSyntax() {
+    }
+
+    /**
+     * Get the root package string.
+     *
+     * @param version YANG version.
+     * @param nameSpace name space of the module.
+     * @param revision revision of the module defined
+     * @return returns the root package string.
+     */
+    public static String getRootPackage(byte version, String nameSpace, String revision) {
+
+        String pkg;
+        pkg = UtilConstants.DEFAULT_BASE_PKG;
+        pkg = pkg + UtilConstants.PERIOD;
+        pkg = pkg + getYangVersion(version);
+        pkg = pkg + UtilConstants.PERIOD;
+        pkg = pkg + getPkgFromNameSpace(nameSpace);
+        pkg = pkg + UtilConstants.PERIOD;
+        pkg = pkg + getYangRevisionStr(revision);
+
+        return pkg;
+    }
+
+    /**
+     * Returns version.
+     *
+     * @param ver YANG version.
+     * @return version
+     */
+    private static String getYangVersion(byte ver) {
+        return "v" + ver;
+    }
+
+    /**
+     * Get package name from name space.
+     *
+     * @param nameSpace name space of YANG module
+     *  @return java package name as per java rules.
+     */
+    public static String getPkgFromNameSpace(String nameSpace) {
+        ArrayList<String> pkgArr = new ArrayList<String>();
+        nameSpace = nameSpace.replace("\"", "");
+
+        String[] nameSpaceArr = nameSpace.split(UtilConstants.COLAN);
+
+        for (String nameSpaceString : nameSpaceArr) {
+            pkgArr.add(nameSpaceString);
+        }
+        return getPkgFrmArr(pkgArr);
+    }
+
+    /**
+     * Returns revision string array.
+     *
+     * @param date YANG module revision
+     * @return revision string
+     */
+    public static String getYangRevisionStr(String date) {
+        String[] revisionArr = date.split(UtilConstants.HYPHEN);
+
+        String rev = "rev";
+        for (String element : revisionArr) {
+            Integer val = Integer.parseInt(element);
+            if (val < 10) {
+                rev = rev + "0";
+            }
+            rev = rev + val;
+        }
+        return rev;
+    }
+
+    /**
+     * Returns the package string.
+     *
+     * @param pkgArr package array
+     * @return package string
+     */
+    public static String getPkgFrmArr(ArrayList<String> pkgArr) {
+
+        String pkg = "";
+        int size = pkgArr.size();
+        int i = 0;
+        for (String member : pkgArr) {
+            pkg = pkg + member;
+            if (i != size - 1) {
+                pkg = pkg + UtilConstants.PERIOD;
+            }
+            i++;
+        }
+        return pkg;
+    }
+
+    /**
+     * Get the package from parent's package and string.
+     *
+     * @param parentPkg parent's package.
+     * @param childName child's name.
+     * @return package string.
+     */
+    public static String getPackageFromParent(String parentPkg, String childName) {
+        return parentPkg + UtilConstants.PERIOD + getSubPkgFromName(childName);
+    }
+
+    /**
+     * Get package sub name from YANG identifier name.
+     *
+     * @param name YANG identifier name.
+     * @return java package sub name as per java rules.
+     */
+    public static String getSubPkgFromName(String name) {
+        ArrayList<String> pkgArr = new ArrayList<String>();
+        String[] nameArr = name.split(UtilConstants.COLAN);
+
+        for (String nameString : nameArr) {
+            pkgArr.add(nameString);
+        }
+        return getPkgFrmArr(pkgArr);
+    }
+
+    /**
+     * Translate the YANG identifier name to java identifier.
+     *
+     * @param yangIdentifier identifier in YANG file.
+     * @return corresponding java identifier
+     */
+    public static String getCamelCase(String yangIdentifier) {
+        String[] strArray = yangIdentifier.split(UtilConstants.HYPHEN);
+        String camelCase = strArray[0];
+        for (int i = 1; i < strArray.length; i++) {
+            camelCase = camelCase + (strArray[i].substring(0, 1).toUpperCase() + strArray[i].substring(1));
+        }
+        return camelCase;
+    }
+}