[ONOS-5232] bits enum class generation modifications and code refactoring.

Change-Id: I67fb31c586802e9cf682aa6e707475ad8fdc096f
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
index 2033d2d..ed14647 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
@@ -17,8 +17,8 @@
 package org.onosproject.yangutils.translator.tojava.utils;
 
 import org.onosproject.yangutils.datamodel.RpcNotificationContainer;
+import org.onosproject.yangutils.datamodel.YangAugment;
 import org.onosproject.yangutils.datamodel.YangAugmentableNode;
-import org.onosproject.yangutils.datamodel.YangCase;
 import org.onosproject.yangutils.datamodel.YangChoice;
 import org.onosproject.yangutils.datamodel.YangDerivedInfo;
 import org.onosproject.yangutils.datamodel.YangEnumeration;
@@ -27,7 +27,6 @@
 import org.onosproject.yangutils.datamodel.YangType;
 import org.onosproject.yangutils.datamodel.YangTypeDef;
 import org.onosproject.yangutils.datamodel.YangUnion;
-import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfo;
 import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
 import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
@@ -83,9 +82,7 @@
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_INTERFACE_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.TO_STRING_IMPL_MASK;
 import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.getCurNodeAsAttributeInTarget;
-import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.getQualifierInfoForCasesParent;
 import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.isGetSetOfRootNodeRequired;
-import static org.onosproject.yangutils.translator.tojava.utils.BitsJavaInfoHandler.generateBitsFile;
 import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.FOUR_SPACE;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getEnumsValueAttribute;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getEventEnumTypeStart;
@@ -96,6 +93,7 @@
 import static org.onosproject.yangutils.translator.tojava.utils.MethodBodyTypes.ENUM_METHOD_INT_VALUE;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodBodyTypes.ENUM_METHOD_STRING_VALUE;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.builderMethod;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.generateBuildMethodInAugmentClass;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAddAugmentInfoMethodImpl;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAddAugmentInfoMethodInterface;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAugmentsDataMethodForService;
@@ -125,7 +123,6 @@
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getYangAugmentInfoInterface;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.isLeafValueSetInterface;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.isSelectLeafSetInterface;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.processSubtreeFilteringInterface;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.setSelectLeafSetInterface;
 import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getInterfaceLeafIdEnumMethods;
 import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getIsSelectLeafSet;
@@ -233,6 +230,7 @@
             insertDataIntoJavaFile(file, getOperationTypeEnum());
         }
         List<String> methods = new ArrayList<>();
+
         if (attrPresent) {
             // Add getter methods to interface file.
             try {
@@ -260,18 +258,6 @@
                 !(curNode instanceof YangChoice)) {
             methods.add(getYangAugmentInfoInterface());
         }
-        if (curNode.isOpTypeReq()) {
-            if (curNode instanceof YangCase) {
-                YangNode caseParent = curNode.getParent();
-                JavaQualifiedTypeInfo qualifiedTypeInfo =
-                        getQualifierInfoForCasesParent(caseParent,
-                                                       fileInfo.getPluginConfig());
-                methods.add(processSubtreeFilteringInterface(
-                        qualifiedTypeInfo.getClassInfo()));
-            } else {
-                methods.add(processSubtreeFilteringInterface(className));
-            }
-        }
 
         if (leavesPresent) {
             methods.add(isLeafValueSetInterface());
@@ -449,6 +435,9 @@
         methods.add(((TempJavaCodeFragmentFilesContainer) curNode)
                             .getTempJavaCodeFragmentFiles()
                             .addBuildMethodImpl());
+        if (curNode instanceof YangAugment) {
+            methods.add(generateBuildMethodInAugmentClass(className));
+        }
         methods.add(addDefaultConstructor(curNode, PUBLIC, BUILDER));
 
         //Add methods in builder class.
@@ -491,9 +480,11 @@
 
         String className = getCapitalCase(fileInfo.getJavaName());
         String opParamClassName = className;
+        String name = DEFAULT_CAPS + className;
         String path;
         if (curNode instanceof RpcNotificationContainer) {
             opParamClassName = className + OP_PARAM;
+            name = opParamClassName;
             rootNode = true;
             path = fileInfo.getPluginConfig().getCodeGenDir() +
                     fileInfo.getPackageFilePath();
@@ -530,10 +521,10 @@
                     // add is filter content match.
                     augmentableSubTreeFiltering = getAugmentableSubTreeFiltering();
                 }
-                methods.add(getProcessSubtreeFilteringStart(curNode, config) +
+                methods.add(getProcessSubtreeFilteringStart(curNode) +
                                     getProcessSubtreeFunctionBody(curNode) +
                                     augmentableSubTreeFiltering +
-                                    getProcessSubTreeFilteringEnd());
+                                    getProcessSubTreeFilteringEnd(name, curNode));
 
                 if (curNode instanceof YangLeavesHolder) {
                     if (((YangLeavesHolder) curNode).getListOfLeaf() != null &&
@@ -630,11 +621,6 @@
             methods.add(getToStringMethodOpen() + getDataFromTempFileHandle(
                     TO_STRING_IMPL_MASK, getBeanFiles(curNode), path) +
                                 getToStringMethodClose());
-
-            for (BitsJavaInfoHandler handler : getBeanFiles(curNode)
-                    .getBitsHandler()) {
-                generateBitsFile(handler.getAttr(), handler.getYangType(), curNode);
-            }
         } catch (IOException e) {
             throw new IOException(getErrorMsg(className, IMPL_CLASS));
         }
@@ -707,7 +693,7 @@
                                                       getTypeFiles(curNode), path)));
 
             // To string method.
-            addTypedefToString(curNode, methods, path);
+            addTypedefToString(curNode, methods);
 
             JavaCodeGeneratorInfo javaGenInfo = (JavaCodeGeneratorInfo) curNode;
 
@@ -748,25 +734,17 @@
      *
      * @param curNode current node
      * @param methods list of methods string
-     * @param path    file path
      * @throws IOException a violation in IO rule
      */
     private static void addTypedefToString(YangNode curNode,
-                                           List<String> methods, String path)
+                                           List<String> methods)
             throws IOException {
         //To string method.
 
         List<YangType<?>> types = ((YangTypeDef) curNode).getTypeList();
         YangType type = types.get(0);
-        String className = ((JavaFileInfoContainer) curNode).getJavaFileInfo()
-                .getJavaName();
         methods.add(getToStringForType(getCamelCase(type.getDataTypeName(),
-                                                    null), type, getCapitalCase(className)));
-        for (BitsJavaInfoHandler handler : getTypeFiles(curNode)
-                .getBitsHandler()) {
-            generateBitsFile(handler.getAttr(), handler.getYangType(), curNode);
-        }
-
+                                                    null), type));
     }
 
     /**
@@ -876,12 +854,7 @@
 
             //To string method.
             methods.add(getUnionToStringMethod(
-                    ((YangUnion) curNode).getTypeList(), getCapitalCase(className)));
-
-            for (BitsJavaInfoHandler handler : getTypeFiles(curNode)
-                    .getBitsHandler()) {
-                generateBitsFile(handler.getAttr(), handler.getYangType(), curNode);
-            }
+                    ((YangUnion) curNode).getTypeList()));
 
             //From string method.
             methods.add(getFromStringMethodSignature(className) +