[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;
+ }
+}