[ONOS-4636]YANG Grouping linking bug fix + YANG Code review comment fix

Change-Id: I68ee8dd08266a02593e217cef1a9bb010037d673
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
index 0b951db..0ecc49e 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
@@ -83,7 +83,6 @@
 import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
 import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
 import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
-import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILDER_CLASS;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILDER_INTERFACE;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.ENUM_CLASS;
@@ -94,6 +93,7 @@
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.INTERFACE;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.RPC_INTERFACE;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.RPC_MANAGER;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.insertDataIntoJavaFile;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.parsePkg;
 
@@ -111,10 +111,10 @@
     /**
      * Returns a file object for generated file.
      *
-     * @param filePath file package path
-     * @param fileName file name
+     * @param fileName  file name
+     * @param filePath  file package path
      * @param extension file extension
-     * @param handle cached file handle
+     * @param handle    cached file handle
      * @return file object
      */
     public static File getFileObject(String filePath, String fileName, String extension, JavaFileInfo handle) {
@@ -125,7 +125,7 @@
     /**
      * Returns data stored in temporary files.
      *
-     * @param generatedTempFiles temporary file types
+     * @param generatedTempFiles    temporary file types
      * @param tempJavaFragmentFiles temp java fragment files
      * @return data stored in temporary files
      * @throws IOException when failed to get the data from temporary file handle
@@ -253,11 +253,11 @@
     /**
      * Initiates generation of file based on generated file type.
      *
-     * @param file generated file
-     * @param className generated file class name
-     * @param genType generated file type
-     * @param imports imports for the file
-     * @param pkg generated file package
+     * @param file         generated file
+     * @param className    generated file class name
+     * @param genType      generated file type
+     * @param imports      imports for the file
+     * @param pkg          generated file package
      * @param pluginConfig plugin configurations
      * @throws IOException when fails to generate a file
      */
@@ -276,17 +276,22 @@
     /**
      * Initiates generation of file based on generated file type.
      *
-     * @param file generated file
-     * @param genType generated file type
-     * @param imports imports for the file
-     * @param curNode current YANG node
+     * @param file      generated file
+     * @param genType   generated file type
+     * @param imports   imports for the file
+     * @param curNode   current YANG node
      * @param className class name
      * @throws IOException when fails to generate a file
      */
     public static void initiateJavaFileGeneration(File file, int genType, List<String> imports,
-            YangNode curNode, String className) throws IOException {
+            YangNode curNode, String className)
+            throws IOException {
 
         try {
+            if (file.exists()) {
+                throw new IOException(file.getName() + " is reused due to YANG naming");
+            }
+
             file.createNewFile();
             appendContents(file, genType, imports, curNode, className);
         } catch (IOException e) {
@@ -297,15 +302,16 @@
     /**
      * Appends all the contents into a generated java file.
      *
-     * @param file generated file
-     * @param genType generated file type
+     * @param file        generated file
+     * @param genType     generated file type
      * @param importsList list of java imports
-     * @param curNode current YANG node
-     * @param className class name
+     * @param curNode     current YANG node
+     * @param className   class name
      * @throws IOException
      */
     private static void appendContents(File file, int genType, List<String> importsList, YangNode curNode,
-            String className) throws IOException {
+            String className)
+            throws IOException {
 
         JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
 
@@ -321,39 +327,39 @@
             pkgString = parsePackageString(path, importsList);
         }
         switch (genType) {
-        case INTERFACE_MASK:
-            appendHeaderContents(file, pkgString, importsList);
-            write(file, genType, INTERFACE, curNode, className);
-            break;
-        case GENERATE_SERVICE_AND_MANAGER:
-            appendHeaderContents(file, pkgString, importsList);
-            write(file, genType, RPC_INTERFACE, curNode, className);
-            break;
-        case GENERATE_EVENT_CLASS:
-            appendHeaderContents(file, pkgString, importsList);
-            write(file, genType, EVENT, curNode, className);
-            break;
-        case GENERATE_EVENT_LISTENER_INTERFACE:
-            appendHeaderContents(file, pkgString, importsList);
-            write(file, genType, EVENT_LISTENER, curNode, className);
-            break;
-        case GENERATE_EVENT_SUBJECT_CLASS:
-            appendHeaderContents(file, pkgString, importsList);
-            write(file, genType, EVENT_SUBJECT_CLASS, curNode, className);
-            break;
-        default:
-            break;
+            case INTERFACE_MASK:
+                appendHeaderContents(file, pkgString, importsList);
+                write(file, genType, INTERFACE, curNode, className);
+                break;
+            case GENERATE_SERVICE_AND_MANAGER:
+                appendHeaderContents(file, pkgString, importsList);
+                write(file, genType, RPC_INTERFACE, curNode, className);
+                break;
+            case GENERATE_EVENT_CLASS:
+                appendHeaderContents(file, pkgString, importsList);
+                write(file, genType, EVENT, curNode, className);
+                break;
+            case GENERATE_EVENT_LISTENER_INTERFACE:
+                appendHeaderContents(file, pkgString, importsList);
+                write(file, genType, EVENT_LISTENER, curNode, className);
+                break;
+            case GENERATE_EVENT_SUBJECT_CLASS:
+                appendHeaderContents(file, pkgString, importsList);
+                write(file, genType, EVENT_SUBJECT_CLASS, curNode, className);
+                break;
+            default:
+                break;
         }
     }
 
     /**
      * Appends all the contents into a generated java file.
      *
-     * @param file generated file
-     * @param fileName generated file name
-     * @param genType generated file type
-     * @param importsList list of java imports
-     * @param pkg generated file package
+     * @param file         generated file
+     * @param fileName     generated file name
+     * @param genType      generated file type
+     * @param importsList  list of java imports
+     * @param pkg          generated file package
      * @param pluginConfig plugin configurations
      * @throws IOException when fails to append contents
      */
@@ -364,37 +370,37 @@
         String pkgString = parsePackageString(pkg, importsList);
 
         switch (genType) {
-        case IMPL_CLASS_MASK:
-            write(file, fileName, genType, IMPL_CLASS, pluginConfig);
-            break;
-        case BUILDER_INTERFACE_MASK:
-            write(file, fileName, genType, BUILDER_INTERFACE, pluginConfig);
-            break;
-        case GENERATE_TYPEDEF_CLASS:
-            appendHeaderContents(file, pkgString, importsList);
-            write(file, fileName, genType, IMPL_CLASS, pluginConfig);
-            break;
-        case BUILDER_CLASS_MASK:
-            appendHeaderContents(file, pkgString, importsList);
-            write(file, fileName, genType, BUILDER_CLASS, pluginConfig);
-            break;
-        case GENERATE_UNION_CLASS:
-            appendHeaderContents(file, pkgString, importsList);
-            write(file, fileName, genType, IMPL_CLASS, pluginConfig);
-            break;
-        case GENERATE_ENUM_CLASS:
-            appendHeaderContents(file, pkgString, importsList);
-            write(file, fileName, genType, ENUM_CLASS, pluginConfig);
-            break;
-        default:
-            break;
+            case IMPL_CLASS_MASK:
+                write(file, fileName, genType, IMPL_CLASS, pluginConfig);
+                break;
+            case BUILDER_INTERFACE_MASK:
+                write(file, fileName, genType, BUILDER_INTERFACE, pluginConfig);
+                break;
+            case GENERATE_TYPEDEF_CLASS:
+                appendHeaderContents(file, pkgString, importsList);
+                write(file, fileName, genType, IMPL_CLASS, pluginConfig);
+                break;
+            case BUILDER_CLASS_MASK:
+                appendHeaderContents(file, pkgString, importsList);
+                write(file, fileName, genType, BUILDER_CLASS, pluginConfig);
+                break;
+            case GENERATE_UNION_CLASS:
+                appendHeaderContents(file, pkgString, importsList);
+                write(file, fileName, genType, IMPL_CLASS, pluginConfig);
+                break;
+            case GENERATE_ENUM_CLASS:
+                appendHeaderContents(file, pkgString, importsList);
+                write(file, fileName, genType, ENUM_CLASS, pluginConfig);
+                break;
+            default:
+                break;
         }
     }
 
     /**
      * Removes base directory path from package and generates package string for file.
      *
-     * @param javaPkg generated java package
+     * @param javaPkg     generated java package
      * @param importsList list of imports
      * @return package string
      */
@@ -416,8 +422,8 @@
      * Appends other contents to interface, builder and typedef classes.
      * for example : ONOS copyright, imports and package.
      *
-     * @param file generated file
-     * @param pkg generated package
+     * @param file        generated file
+     * @param pkg         generated package
      * @param importsList list of imports
      * @throws IOException when fails to append contents
      */
@@ -443,11 +449,11 @@
     /**
      * Writes data to the specific generated file.
      *
-     * @param file generated file
-     * @param genType generated file type
+     * @param file        generated file
+     * @param genType     generated file type
      * @param javaDocType java doc type
-     * @param curNode current YANG node
-     * @param fileName file name
+     * @param curNode     current YANG node
+     * @param fileName    file name
      * @throws IOException when fails to write into a file
      */
     private static void write(File file, int genType, JavaDocType javaDocType, YangNode curNode, String fileName)
@@ -470,10 +476,10 @@
     /**
      * Writes data to the specific generated file.
      *
-     * @param file generated file
-     * @param fileName file name
-     * @param genType generated file type
-     * @param javaDocType java doc type
+     * @param file         generated file
+     * @param fileName     file name
+     * @param genType      generated file type
+     * @param javaDocType  java doc type
      * @param pluginConfig plugin configurations
      * @throws IOException
      */