[ONOS-5232] Update generated code

Change-Id: I9c25d9f2888fbee78fddf10d02a3fa94f7ce46e0
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
index 3910a78..5671dd7 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
@@ -23,38 +23,39 @@
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.TempJavaServiceFragmentFiles;
 import org.onosproject.yangutils.utils.UtilConstants.Operation;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
 import java.util.List;
 
 import static java.util.Collections.sort;
+import static org.onosproject.yangutils.translator.tojava.utils.BracketType.OPEN_CLOSE_BRACKET;
+import static org.onosproject.yangutils.translator.tojava.utils.BracketType.OPEN_CLOSE_BRACKET_WITH_VALUE;
+import static org.onosproject.yangutils.translator.tojava.utils.BracketType.OPEN_CLOSE_DIAMOND;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.brackets;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getDefaultDefinition;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getImportString;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.signatureClose;
 import static org.onosproject.yangutils.utils.UtilConstants.ARRAY_LIST;
 import static org.onosproject.yangutils.utils.UtilConstants.CLASS_STRING;
-import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
-import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
 import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
 import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
 import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
 import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.ENUM;
 import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
 import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.HASH_MAP;
-import static org.onosproject.yangutils.utils.UtilConstants.IMPORT;
 import static org.onosproject.yangutils.utils.UtilConstants.INT;
 import static org.onosproject.yangutils.utils.UtilConstants.INT_MAX_RANGE_ATTR;
 import static org.onosproject.yangutils.utils.UtilConstants.INT_MIN_RANGE_ATTR;
 import static org.onosproject.yangutils.utils.UtilConstants.LIST;
-import static org.onosproject.yangutils.utils.UtilConstants.LISTENER_SERVICE;
 import static org.onosproject.yangutils.utils.UtilConstants.LONG_MAX_RANGE_ATTR;
 import static org.onosproject.yangutils.utils.UtilConstants.LONG_MIN_RANGE_ATTR;
 import static org.onosproject.yangutils.utils.UtilConstants.MAP;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
 import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
-import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
-import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
 import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
 import static org.onosproject.yangutils.utils.UtilConstants.PROTECTED;
@@ -63,7 +64,7 @@
 import static org.onosproject.yangutils.utils.UtilConstants.QUEUE;
 import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
 import static org.onosproject.yangutils.utils.UtilConstants.SCHEMA_NAME;
-import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
+import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLON;
 import static org.onosproject.yangutils.utils.UtilConstants.SET;
 import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MAX_RANGE_ATTR;
 import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MIN_RANGE_ATTR;
@@ -76,11 +77,11 @@
 import static org.onosproject.yangutils.utils.UtilConstants.UINT_MIN_RANGE_ATTR;
 import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MAX_RANGE_ATTR;
 import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MIN_RANGE_ATTR;
-import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
+import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO_LOWER_CASE;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.ENUM_ATTRIBUTE;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.enumJavaDocForInnerClass;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
 
 /**
  * Represents utility class to generate the java snippet.
@@ -113,8 +114,8 @@
      * list
      */
     static String getImportText(JavaQualifiedTypeInfoTranslator importInfo) {
-        return IMPORT + importInfo.getPkgInfo() + PERIOD +
-                importInfo.getClassInfo() + SEMI_COLAN + NEW_LINE;
+        return getImportString(importInfo.getPkgInfo(), importInfo
+                .getClassInfo());
     }
 
     /**
@@ -134,7 +135,7 @@
                                                     boolean isList,
                                                     String accessType,
                                                     YangCompilerAnnotation annotation) {
-        StringBuilder attrDef = new StringBuilder();
+        StringBuilder attrDef = new StringBuilder(FOUR_SPACE_INDENTATION);
         attrDef.append(accessType).append(SPACE);
 
         if (!isList) {
@@ -143,7 +144,7 @@
             }
 
             attrDef.append(attrType).append(SPACE)
-                    .append(attrName).append(SEMI_COLAN)
+                    .append(attrName).append(SEMI_COLON)
                     .append(NEW_LINE);
         } else {
             // Add starting definition.
@@ -204,28 +205,17 @@
         if (annotation != null &&
                 annotation.getYangAppDataStructure() != null) {
             attrDef.append(DIAMOND_CLOSE_BRACKET).append(SPACE)
-                    .append(attrName).append(SEMI_COLAN)
+                    .append(attrName).append(SEMI_COLON)
                     .append(NEW_LINE);
-            // TODO refactor SEMI_COLAN, when refactoring in method generator.
         } else {
             attrDef.append(DIAMOND_CLOSE_BRACKET).append(SPACE).append(attrName)
                     .append(SPACE).append(EQUAL).append(SPACE).append(NEW)
-                    .append(SPACE).append(ARRAY_LIST).append(SEMI_COLAN)
+                    .append(SPACE).append(ARRAY_LIST).append(SEMI_COLON)
                     .append(NEW_LINE);
         }
     }
 
     /**
-     * Returns based on the file type and the YANG name of the file, generate
-     * the class / interface definition close.
-     *
-     * @return corresponding textual java code information
-     */
-    public static String getJavaClassDefClose() {
-        return CLOSE_CURLY_BRACKET;
-    }
-
-    /**
      * Returns string for enum's attribute.
      *
      * @param name  name of attribute
@@ -234,9 +224,10 @@
      */
     public static String generateEnumAttributeString(String name, int value) {
         String enumName = getEnumJavaAttribute(name);
-        return NEW_LINE + enumJavaDocForInnerClass(name) +
-                EIGHT_SPACE_INDENTATION + enumName.toUpperCase() +
-                OPEN_PARENTHESIS + value + CLOSE_PARENTHESIS + COMMA + NEW_LINE;
+        return enumJavaDocForInnerClass(name) + EIGHT_SPACE_INDENTATION +
+                enumName.toUpperCase() + brackets(OPEN_CLOSE_BRACKET_WITH_VALUE,
+                                                  value + EMPTY_STRING, null) +
+                COMMA + NEW_LINE;
     }
 
     /**
@@ -244,17 +235,15 @@
      *
      * @param name   name of attribute
      * @param value  value of the enum
-     * @param config plugin configurations
      * @return string for enum's attribute
      */
-    public static String generateEnumAttributeStringWithSchemaName(String name,
-                                                                   int value,
-                                                                   YangPluginConfig config) {
+    public static String generateEnumAttributeStringWithSchemaName(
+            String name, int value) {
         String enumName = getEnumJavaAttribute(name);
-        return NEW_LINE + getJavaDoc(ENUM_ATTRIBUTE, name, false, config, null) +
-                FOUR_SPACE_INDENTATION + enumName.toUpperCase() +
-                OPEN_PARENTHESIS + value + COMMA + SPACE + QUOTES + name +
-                QUOTES + CLOSE_PARENTHESIS + COMMA + NEW_LINE;
+        String str = value + COMMA + SPACE + QUOTES + name + QUOTES;
+        return getJavaDoc(ENUM_ATTRIBUTE, name, false, null) +
+                FOUR_SPACE_INDENTATION + enumName.toUpperCase() + brackets(
+                OPEN_CLOSE_BRACKET_WITH_VALUE, str, null) + COMMA + NEW_LINE;
     }
 
     /**
@@ -274,8 +263,8 @@
      * @return event enum start
      */
     static String getEventEnumTypeStart() {
-        return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + ENUM + SPACE + TYPE +
-                SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+        return NEW_LINE + FOUR_SPACE_INDENTATION +
+                getDefaultDefinition(ENUM, TYPE, PUBLIC);
     }
 
     /**
@@ -284,25 +273,16 @@
      * @param curNode   currentYangNode.
      * @param imports   import list
      * @param operation add or remove
-     * @param classInfo class info to be added to import list
      */
     public static void addListenersImport(YangNode curNode,
                                           List<String> imports,
-                                          Operation operation,
-                                          String classInfo) {
+                                          Operation operation) {
         String thisImport;
         TempJavaServiceFragmentFiles tempFiles =
                 ((JavaCodeGeneratorInfo) curNode).getTempJavaCodeFragmentFiles()
                         .getServiceTempFiles();
-        if (classInfo.equals(LISTENER_SERVICE)) {
-            thisImport = tempFiles.getJavaImportData()
-                    .getListenerServiceImport();
-            performOperationOnImports(imports, thisImport, operation);
-        } else {
-            thisImport = tempFiles.getJavaImportData()
-                    .getListenerRegistryImport();
-            performOperationOnImports(imports, thisImport, operation);
-        }
+        thisImport = tempFiles.getJavaImportData().getListenerServiceImport();
+        performOperationOnImports(imports, thisImport, operation);
     }
 
     /**
@@ -337,10 +317,10 @@
      * @return enum's attribute
      */
     static String getEnumsValueAttribute(String className) {
-        return NEW_LINE + FOUR_SPACE_INDENTATION + PRIVATE + SPACE + INT +
-                SPACE + getSmallCase(className) + SEMI_COLAN + NEW_LINE +
-                FOUR_SPACE_INDENTATION + PRIVATE + SPACE + STRING_DATA_TYPE +
-                SPACE + SCHEMA_NAME + SEMI_COLAN + NEW_LINE;
+        return getJavaAttributeDefinition(null, INT, className,
+                                          false, PRIVATE, null) +
+                getJavaAttributeDefinition(null, STRING_DATA_TYPE, SCHEMA_NAME,
+                                           false, PRIVATE, null);
     }
 
     /**
@@ -349,14 +329,24 @@
      * @return attribute for augmentation
      */
     static String addAugmentationAttribute() {
-        return NEW_LINE + FOUR_SPACE_INDENTATION + PROTECTED + SPACE + MAP +
-                DIAMOND_OPEN_BRACKET + CLASS_STRING + DIAMOND_OPEN_BRACKET +
+        String[] array = {NEW_LINE, SEMI_COLON};
+        return trimAtLast(getJavaAttributeDefinition(
+                null, getAugmentMapTypeString(),
+                YANG_AUGMENTED_INFO_LOWER_CASE + MAP, false, PROTECTED,
+                null), array) + SPACE + EQUAL + SPACE + NEW + SPACE +
+                HASH_MAP + brackets(OPEN_CLOSE_DIAMOND, null, null) + brackets(
+                OPEN_CLOSE_BRACKET, null, null) + signatureClose();
+    }
+
+    /**
+     * Returns augment map return type.
+     *
+     * @return augment map return type
+     */
+    static String getAugmentMapTypeString() {
+        return MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING + DIAMOND_OPEN_BRACKET +
                 QUESTION_MARK + DIAMOND_CLOSE_BRACKET + COMMA + SPACE +
-                OBJECT_STRING + DIAMOND_CLOSE_BRACKET + SPACE +
-                getSmallCase(YANG_AUGMENTED_INFO) + MAP + SPACE + EQUAL +
-                SPACE + NEW + SPACE + HASH_MAP + DIAMOND_OPEN_BRACKET +
-                DIAMOND_CLOSE_BRACKET + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
-                SEMI_COLAN;
+                OBJECT_STRING + DIAMOND_CLOSE_BRACKET;
     }
 
     /**
@@ -369,13 +359,13 @@
     static String addStaticAttributeIntRange(String modifier,
                                              boolean addFirst) {
         if (addFirst) {
-            return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE +
-                    INT_MIN_RANGE_ATTR + FOUR_SPACE_INDENTATION + modifier +
-                    SPACE + INT_MAX_RANGE_ATTR;
+            return getTypeConflictAttributeStrings(modifier,
+                                                   INT_MIN_RANGE_ATTR,
+                                                   INT_MAX_RANGE_ATTR);
         }
-        return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE +
-                UINT_MIN_RANGE_ATTR + FOUR_SPACE_INDENTATION + modifier +
-                SPACE + UINT_MAX_RANGE_ATTR;
+        return getTypeConflictAttributeStrings(modifier,
+                                               UINT_MIN_RANGE_ATTR,
+                                               UINT_MAX_RANGE_ATTR);
     }
 
     /**
@@ -388,13 +378,13 @@
     static String addStaticAttributeLongRange(String modifier,
                                               boolean addFirst) {
         if (addFirst) {
-            return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE +
-                    LONG_MIN_RANGE_ATTR + FOUR_SPACE_INDENTATION +
-                    modifier + SPACE + LONG_MAX_RANGE_ATTR;
+            return getTypeConflictAttributeStrings(modifier,
+                                                   LONG_MIN_RANGE_ATTR,
+                                                   LONG_MAX_RANGE_ATTR);
         }
-        return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE +
-                ULONG_MIN_RANGE_ATTR + FOUR_SPACE_INDENTATION + modifier +
-                SPACE + ULONG_MAX_RANGE_ATTR;
+        return getTypeConflictAttributeStrings(modifier,
+                                               ULONG_MIN_RANGE_ATTR,
+                                               ULONG_MAX_RANGE_ATTR);
     }
 
     /**
@@ -407,13 +397,29 @@
     static String addStaticAttributeShortRange(String modifier,
                                                boolean addFirst) {
         if (addFirst) {
-            return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE +
-                    SHORT_MIN_RANGE_ATTR + FOUR_SPACE_INDENTATION + modifier +
-                    SPACE + SHORT_MAX_RANGE_ATTR;
+            return getTypeConflictAttributeStrings(modifier,
+                                                   SHORT_MIN_RANGE_ATTR,
+                                                   SHORT_MAX_RANGE_ATTR);
         }
+        return getTypeConflictAttributeStrings(modifier,
+                                               UINT8_MIN_RANGE_ATTR,
+                                               UINT8_MAX_RANGE_ATTR);
+    }
+
+    /**
+     * Returns attribute for conflicting type in union.
+     *
+     * @param modifier modifier
+     * @param attr1    attribute one
+     * @param att2     attribute two
+     * @return attribute for conflicting type in union
+     */
+    private static String getTypeConflictAttributeStrings(String modifier,
+                                                          String attr1,
+                                                          String att2) {
         return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE +
-                UINT8_MIN_RANGE_ATTR + FOUR_SPACE_INDENTATION + modifier +
-                SPACE + UINT8_MAX_RANGE_ATTR;
+                attr1 + FOUR_SPACE_INDENTATION + modifier +
+                SPACE + att2;
     }
 
     /**
@@ -422,10 +428,11 @@
      * @return operation type enum
      */
     static String getOperationTypeEnum() {
-        return "\n" +
-                "    /**\n" +
-                "     * Specify the node specific operation in protocols like NETCONF.\n" +
-                "     * Applicable in protocol edit operation, not applicable in query operation\n" +
+        return "    /**\n" +
+                "     * Specify the node specific operation in protocols " +
+                "like NETCONF.\n" +
+                "     * Applicable in protocol edit operation, not applicable" +
+                " in query operation\n" +
                 "     */\n" +
                 "    public enum OnosYangNodeOperationType {\n" +
                 "        MERGE,\n" +
@@ -473,6 +480,7 @@
      * @return augment info map
      */
     static String getYangAugmentedMapObjectForConstruct() {
-        return "        this.yangAugmentedInfoMap = builderObject.yangAugmentedInfoMap();\n";
+        return "        this.yangAugmentedInfoMap = builderObject" +
+                ".yangAugmentedInfoMap();\n";
     }
 }