Adding builder and operation type in generated interfaces

Change-Id: I0c3ed6f01a8f933ad91ce1a46aeebc62029ca47a
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotificationTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotificationTranslator.java
index 88a9070..daffc7a 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotificationTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotificationTranslator.java
@@ -16,8 +16,6 @@
 
 package org.onosproject.yangutils.translator.tojava.javamodel;
 
-import java.io.IOException;
-
 import org.onosproject.yangutils.datamodel.RpcNotificationContainer;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaNotification;
@@ -33,9 +31,15 @@
 import org.onosproject.yangutils.translator.tojava.utils.JavaExtendsListHolder;
 import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
+import java.io.IOException;
+
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
 import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeOfAugmentableNode;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorErrorType.FAIL_AT_ENTRY;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorErrorType.FAIL_AT_EXIT;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorErrorType.INVALID_NODE;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorUtils.getErrorMsg;
 import static org.onosproject.yangutils.utils.UtilConstants.EVENT_LISTENER_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.EVENT_STRING;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
@@ -59,7 +63,6 @@
      * Creates an instance of java Notification.
      */
     public YangJavaNotificationTranslator() {
-        super();
         setJavaFileInfo(new JavaFileInfoTranslator());
         getJavaFileInfo().setGeneratedFileTypes(GENERATE_INTERFACE_WITH_BUILDER);
     }
@@ -73,11 +76,7 @@
     public JavaFileInfoTranslator getJavaFileInfo() {
 
         if (javaFileInfo == null) {
-            throw new TranslatorException("Missing java info in java datamodel node " +
-                                                  getName() + " in " +
-                                                  getLineNumber() + " at " +
-                                                  getCharPosition()
-                                                  + " in " + getFileName());
+            throw new TranslatorException(getErrorMsg(INVALID_NODE, this));
         }
         return (JavaFileInfoTranslator) javaFileInfo;
     }
@@ -124,9 +123,12 @@
             throws TranslatorException {
 
         /*
-         * As part of the notification support the following files needs to be generated.
-         * 1) Subject of the notification(event), this is simple interface with builder class.
-         * 2) Event class extending "AbstractEvent" and defining event type enum.
+         * As part of the notification support the following files needs to be
+         * generated.
+         * 1) Subject of the notification(event), this is simple interface with
+         * builder class.
+         * 2) Event class extending "AbstractEvent" and defining event type
+         * enum.
          * 3) Event listener interface extending "EventListener".
          *
          * The manager class needs to extend the ListenerRegistry.
@@ -138,36 +140,34 @@
             generateCodeOfAugmentableNode(this, yangPlugin);
             addNotificationToExtendsList();
         } catch (IOException e) {
-            throw new TranslatorException(
-                    "Failed to prepare generate code entry for notification node " +
-                            getName() + " in " +
-                            getLineNumber() + " at " +
-                            getCharPosition()
-                            + " in " + getFileName() + " " + e.getLocalizedMessage());
+            throw new TranslatorException(getErrorMsg(FAIL_AT_ENTRY, this,
+                                                      e.getLocalizedMessage()));
         }
     }
 
     /*Adds current notification info to the extends list so its parents service*/
     private void addNotificationToExtendsList() {
         YangNode parent = getParent();
-        TempJavaServiceFragmentFiles tempJavaServiceFragmentFiles = ((TempJavaCodeFragmentFilesContainer) parent)
-                .getTempJavaCodeFragmentFiles()
-                .getServiceTempFiles();
-        JavaExtendsListHolder holder = tempJavaServiceFragmentFiles.getJavaExtendsListHolder();
-        JavaQualifiedTypeInfoTranslator event = new JavaQualifiedTypeInfoTranslator();
+        TempJavaServiceFragmentFiles tempFiles =
+                ((TempJavaCodeFragmentFilesContainer) parent).getTempJavaCodeFragmentFiles()
+                        .getServiceTempFiles();
+        JavaExtendsListHolder holder = tempFiles.getJavaExtendsListHolder();
+        JavaQualifiedTypeInfoTranslator event =
+                new JavaQualifiedTypeInfoTranslator();
 
         String parentInfo = getCapitalCase(((JavaFileInfoContainer) parent)
-                                                   .getJavaFileInfo().getJavaName());
+                                                   .getJavaFileInfo()
+                                                   .getJavaName());
         event.setClassInfo(parentInfo + EVENT_STRING);
         event.setPkgInfo(getJavaFileInfo().getPackage());
-        holder.addToExtendsList(event, parent, tempJavaServiceFragmentFiles);
+        holder.addToExtendsList(event, parent, tempFiles);
 
-        JavaQualifiedTypeInfoTranslator eventListener = new JavaQualifiedTypeInfoTranslator();
+        JavaQualifiedTypeInfoTranslator eventListener =
+                new JavaQualifiedTypeInfoTranslator();
 
         eventListener.setClassInfo(parentInfo + EVENT_LISTENER_STRING);
         eventListener.setPkgInfo(getJavaFileInfo().getPackage());
-        holder.addToExtendsList(eventListener, parent, tempJavaServiceFragmentFiles);
-
+        holder.addToExtendsList(eventListener, parent, tempFiles);
     }
 
     /**
@@ -177,36 +177,34 @@
     public void generateCodeExit()
             throws TranslatorException {
         try {
-            getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
+            getTempJavaCodeFragmentFiles().generateJavaFile(
+                    GENERATE_INTERFACE_WITH_BUILDER, this);
         } catch (IOException e) {
-            throw new TranslatorException("Failed to generate code for notification node " +
-                                                  getName() + " in " +
-                                                  getLineNumber() + " at " +
-                                                  getCharPosition()
-                                                  + " in " + getFileName() + " " + e.getLocalizedMessage());
+            throw new TranslatorException(getErrorMsg(FAIL_AT_EXIT, this,
+                                                      e.getLocalizedMessage()));
         }
     }
 
     @Override
     public void setNameSpaceAndAddToParentSchemaMap() {
         // Get parent namespace.
-        if (this.getParent() != null) {
-            String nameSpace = this.getParent().getNameSpace();
+        if (getParent() != null) {
+            String nameSpace = getParent().getNameSpace();
             // Set namespace for self node.
             setNameSpace(nameSpace);
             // Process addition of leaf to the child schema map of parent.
             processAdditionOfSchemaNodeToParentMap(getName(), getNameSpace());
             // Obtain the notification name as per enum in notification.
-            String enumName = getEnumJavaAttribute(getJavaFileInfo().getJavaName()).toUpperCase();
+            String enumName = getEnumJavaAttribute(getName().toUpperCase());
 
-            ((RpcNotificationContainer) this.getParent()).addToNotificationEnumMap(enumName, this);
+            ((RpcNotificationContainer) getParent())
+                    .addToNotificationEnumMap(enumName, this);
 
         }
         /*
          * Check if node contains leaf/leaf-list, if yes add namespace for leaf
          * and leaf list.
          */
-        this.setLeafNameSpaceAndAddToParentSchemaMap();
-
+        setLeafNameSpaceAndAddToParentSchemaMap();
     }
 }