[ONOS-3906],[ONOS-3910] Implementation of YANG module and leaf/leaf-list translator.
Change-Id: If1a8a991ffafa14b51211f97c435176ee1bf856f
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
new file mode 100644
index 0000000..5998342
--- /dev/null
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
@@ -0,0 +1,146 @@
+/*
+ * 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.List;
+import java.util.SortedSet;
+
+import org.onosproject.yangutils.datamodel.YangType;
+import org.onosproject.yangutils.translator.GeneratedFileType;
+import org.onosproject.yangutils.translator.tojava.GeneratedMethodTypes;
+import org.onosproject.yangutils.translator.tojava.ImportInfo;
+import org.onosproject.yangutils.utils.UtilConstants;
+
+/**
+ * Utility class to generate the java snippet.
+ */
+public final class JavaCodeSnippetGen {
+
+ /**
+ * Default constructor.
+ */
+ private JavaCodeSnippetGen() {
+ }
+
+ /**
+ * Get the java file header comment.
+ *
+ * @return the java file header comment.
+ */
+ public static String getFileHeaderComment() {
+
+ /**
+ * TODO return the file header.
+ */
+ return null;
+ }
+
+ /**
+ * reorder the import list based on the ONOS import rules.
+ *
+ * @param importInfo the set of classes/interfaces to be imported.
+ * @return string of import info.
+ */
+ public List<ImportInfo> sortImportOrder(SortedSet<ImportInfo> importInfo) {
+ /* TODO: reorder the import list based on the ONOS import rules. */
+ return null;
+ }
+
+ /**
+ * Get the textual java code information corresponding to the import list.
+ *
+ * @param importInfo sorted list of import info.
+ * @return the textual java code information corresponding to the import
+ * list.
+ */
+ public static String getImportText(List<ImportInfo> importInfo) {
+ /*
+ * TODO: get the textual java code information corresponding to the
+ * import list
+ */
+ return null;
+ }
+
+ /**
+ * Based on the file type and the YANG name of the file, generate the class
+ * / interface definition start.
+ *
+ * @param genFileTypes type of file being generated.
+ * @param yangName YANG name.
+ * @return corresponding textual java code information.
+ */
+ public static String getJavaClassDefStart(GeneratedFileType genFileTypes, String yangName) {
+ /*
+ * get the camel case name for java class / interface.
+ */
+ yangName = JavaIdentifierSyntax.getCamelCase(yangName);
+ return ClassDefinitionGenerator.generateClassDefinition(genFileTypes, yangName);
+ }
+
+ /**
+ * Get the textual java code for attribute definition in class.
+ *
+ * @param genFileTypes type of file being generated.
+ * @param yangName YANG name of the the attribute.
+ * @param type type of the the attribute.
+ * @return the textual java code for attribute definition in class.
+ */
+ public static String getJavaAttributeInfo(GeneratedFileType genFileTypes, String yangName, YangType<?> type) {
+ yangName = JavaIdentifierSyntax.getCamelCase(yangName);
+ return UtilConstants.PRIVATE + UtilConstants.SPACE + type.getDataTypeName() + UtilConstants.SPACE + yangName
+ + UtilConstants.SEMI_COLAN;
+ }
+
+ /**
+ * Based on the file type and method type(s) and the YANG name of the
+ * method, generate the method definitions(s).
+ *
+ * @param genFileTypes type of file being generated
+ * @param yangName name if the attribute whose getter / setter is required.
+ * @param methodTypes getter and / or setter type of method indicator.
+ * @param returnType type return type of the method.
+ * @return based on the file type and method type(s) the method
+ * definitions(s).
+ */
+ public static String getJavaMethodInfo(GeneratedFileType genFileTypes, String yangName,
+ GeneratedMethodTypes methodTypes, YangType<?> returnType) {
+
+ yangName = JavaIdentifierSyntax.getCamelCase(yangName);
+ return MethodsGenerator.constructMethodInfo(genFileTypes, yangName, methodTypes, returnType);
+ }
+
+ /**
+ * Based on the file type and the YANG name of the file, generate the class
+ * / interface definition close.
+ *
+ * @param genFileTypes type of file being generated.
+ * @param yangName YANG name.
+ * @return corresponding textual java code information.
+ */
+ public static String getJavaClassDefClose(GeneratedFileType genFileTypes, String yangName) {
+
+ if (genFileTypes.equals(GeneratedFileType.INTERFACE)) {
+
+ return UtilConstants.CLOSE_CURLY_BRACKET;
+ } else if (genFileTypes.equals(GeneratedFileType.BUILDER_CLASS)) {
+
+ return UtilConstants.CLOSE_CURLY_BRACKET;
+ }
+ return null;
+ }
+
+}