[ONOS-4303, ONOS-4508, ONOS-4509, ONOS-4510, ONOS-4351]notification,rpc,union,sub-module,augment

Change-Id: Ibeed9ff965c13fd66743c1080cb1350d93a3a435
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java
index a1bb801..f24391c 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java
@@ -18,18 +18,22 @@
 
 import java.io.IOException;
 
-import org.onosproject.yangutils.datamodel.YangTypeContainer;
 import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.datamodel.YangTypeHolder;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ENUM_CLASS;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_CLASS;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_RPC_INTERFACE;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPE_CLASS;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.getExtendsList;
 
 /**
  * Represents implementation of java code fragments temporary implementations.
+ * Contains fragment file object of different types of java file.
+ * Uses required object(s) to generate the target java file(s).
  */
 public class TempJavaCodeFragmentFiles {
 
@@ -54,6 +58,17 @@
     private TempJavaEnumerationFragmentFiles enumerationTempFiles;
 
     /**
+     * Has the temporary files required for generated event classes.
+     */
+    private TempJavaEventFragmentFiles eventTempFiles;
+
+    /**
+     * Has the temporary files required for generated event listenerclasses.
+     */
+    private TempJavaEventListenerFragmentFiles eventListenerTempFiles;
+
+
+    /**
      * Creates an instance of temporary java code fragment.
      *
      * @param javaFileInfo generated java file info
@@ -80,9 +95,17 @@
             setEnumerationTempFiles(new TempJavaEnumerationFragmentFiles(javaFileInfo));
         }
 
-        if ((javaFileInfo.getGeneratedFileTypes() & GENERATE_RPC_INTERFACE) != 0) {
+        if ((javaFileInfo.getGeneratedFileTypes() & GENERATE_SERVICE_AND_MANAGER) != 0) {
             setServiceTempFiles(new TempJavaServiceFragmentFiles(javaFileInfo));
         }
+
+        if ((javaFileInfo.getGeneratedFileTypes() & GENERATE_EVENT_CLASS) != 0) {
+            setEventTempFiles(new TempJavaEventFragmentFiles(javaFileInfo));
+        }
+
+        if ((javaFileInfo.getGeneratedFileTypes() & GENERATE_EVENT_LISTENER_INTERFACE) != 0) {
+            setEventListenerTempFiles(new TempJavaEventListenerFragmentFiles(javaFileInfo));
+        }
     }
 
     /**
@@ -161,6 +184,43 @@
     }
 
     /**
+     * Retrieves the temp file handle for event file generation.
+     *
+     * @return temp file handle for event file generation
+     */
+    public TempJavaEventFragmentFiles getEventTempFiles() {
+        return eventTempFiles;
+    }
+
+    /**
+     * Sets temp file handle for event file generation.
+     *
+     * @param eventTempFiles temp file handle for event file generation
+     */
+    public void setEventTempFiles(TempJavaEventFragmentFiles eventTempFiles) {
+        this.eventTempFiles = eventTempFiles;
+    }
+
+    /**
+     * Retrieves the temp file handle for event listener file generation.
+     *
+     * @return temp file handle for event listener file generation
+     */
+    public TempJavaEventListenerFragmentFiles getEventListenerTempFiles() {
+        return eventListenerTempFiles;
+    }
+
+    /**
+     * Sets temp file handle for event listener file generation.
+     *
+     * @param eventListenerTempFiles temp file handle for event listener file generation
+     */
+    public void setEventListenerTempFiles(
+            TempJavaEventListenerFragmentFiles eventListenerTempFiles) {
+        this.eventListenerTempFiles = eventListenerTempFiles;
+    }
+
+    /**
      * Constructs java code exit.
      *
      * @param fileType generated file type
@@ -170,17 +230,42 @@
     public void generateJavaFile(int fileType, YangNode curNode)
             throws IOException {
 
-        if (getBeanTempFiles() != null) {
+        if ((fileType & GENERATE_INTERFACE_WITH_BUILDER) != 0) {
             getBeanTempFiles().generateJavaFile(fileType, curNode);
         }
 
         /**
          * Creates user defined data type class file.
          */
-        if (getTypeTempFiles() != null) {
+        if ((fileType & GENERATE_TYPE_CLASS) != 0) {
             getTypeTempFiles().generateJavaFile(fileType, curNode);
         }
 
+
+        if (fileType == GENERATE_SERVICE_AND_MANAGER) {
+
+            getServiceTempFiles().generateJavaFile(GENERATE_SERVICE_AND_MANAGER, curNode);
+
+
+        }
+
+        if ((fileType & GENERATE_EVENT_CLASS) != 0) {
+            /**
+             * Creates event class file.
+             */
+            if (getEventTempFiles() != null) {
+                getEventTempFiles().generateJavaFile(fileType, curNode);
+            }
+        }
+
+        if ((fileType & GENERATE_EVENT_LISTENER_INTERFACE) != 0) {
+            /**
+             * Creates event listener class file.
+             */
+            getEventListenerTempFiles().generateJavaFile(fileType, curNode);
+        }
+
+        freeTemporaryResources(false);
     }
 
     /**
@@ -208,35 +293,16 @@
     }
 
     /**
-     * Adds all the leaves in the current data model node as part of the
-     * generated temporary file.
-     *
-     * @param curNode java file info of the generated file
-     * @throws IOException IO operation fail
-     */
-    public void addCurNodeLeavesInfoToTempFiles(YangNode curNode)
-            throws IOException {
-
-        if (getBeanTempFiles() != null) {
-            getBeanTempFiles().addCurNodeLeavesInfoToTempFiles(curNode);
-        }
-
-    }
-
-    /**
      * Add all the type in the current data model node as part of the
      * generated temporary file.
      *
-     * @param yangTypeContainer YANG java data model node which has type info, eg union / typedef
+     * @param yangTypeHolder YANG java data model node which has type info, eg union / typedef
      * @throws IOException IO operation fail
      */
-    public void addTypeInfoToTempFiles(YangTypeContainer yangTypeContainer)
+    public void addTypeInfoToTempFiles(YangTypeHolder yangTypeHolder)
             throws IOException {
-
-        if (getTypeTempFiles() != null) {
-            getTypeTempFiles()
-                    .addTypeInfoToTempFiles(yangTypeContainer);
-        }
+        getTypeTempFiles()
+                .addTypeInfoToTempFiles(yangTypeHolder);
     }
 
     /**
@@ -307,19 +373,27 @@
      * all open file handles include temporary files and java files.
      * @throws IOException when failed to delete the temporary files
      */
-    public void close(boolean isErrorOccurred)
+    public void freeTemporaryResources(boolean isErrorOccurred)
             throws IOException {
 
         if (getBeanTempFiles() != null) {
-            getBeanTempFiles().close(isErrorOccurred);
+            getBeanTempFiles().freeTemporaryResources(isErrorOccurred);
         }
 
         if (getTypeTempFiles() != null) {
-            getTypeTempFiles().close(isErrorOccurred);
+            getTypeTempFiles().freeTemporaryResources(isErrorOccurred);
         }
 
         if (getEnumerationTempFiles() != null) {
-            getEnumerationTempFiles().close(isErrorOccurred);
+            getEnumerationTempFiles().freeTemporaryResources(isErrorOccurred);
+        }
+
+        if (getEventTempFiles() != null) {
+            getEventTempFiles().freeTemporaryResources(isErrorOccurred);
+        }
+
+        if (getEventListenerTempFiles() != null) {
+            getEventListenerTempFiles().freeTemporaryResources(isErrorOccurred);
         }
     }