[ONOS-5482][ONOS-5275] Yms Operation requirement Implementation in onos-yang-tools

Change-Id: I463ed105f85ca65a61ff251e5ca062903d465551
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
index 916dd42..96db5c3 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
@@ -27,9 +27,7 @@
 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;
@@ -37,7 +35,6 @@
 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.BIT_SET;
-import static org.onosproject.yangutils.utils.UtilConstants.CLASS_STRING;
 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;
@@ -53,19 +50,17 @@
 import static org.onosproject.yangutils.utils.UtilConstants.LIST;
 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_CLOSE_BRACKET_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CLOSE_DIAMOND_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
 import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
-import static org.onosproject.yangutils.utils.UtilConstants.PROTECTED;
 import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
-import static org.onosproject.yangutils.utils.UtilConstants.QUESTION_MARK;
 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.SELECT_LEAF;
 import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLON;
 import static org.onosproject.yangutils.utils.UtilConstants.SET;
 import static org.onosproject.yangutils.utils.UtilConstants.SET_VALUE_PARA;
@@ -80,7 +75,8 @@
 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_LOWER_CASE;
+import static org.onosproject.yangutils.utils.UtilConstants.VALUE_LEAF;
+import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO_MAP;
 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;
@@ -147,8 +143,20 @@
             }
 
             attrDef.append(attrType).append(SPACE)
-                    .append(attrName).append(SEMI_COLON)
-                    .append(NEW_LINE);
+                    .append(attrName);
+            //Initialize select leaf/value leaf/ augment map attribute.
+            if (attrName.equals(SELECT_LEAF) || attrName.equals(VALUE_LEAF)) {
+                attrDef.append(SPACE).append(EQUAL).append(SPACE).append(NEW)
+                        .append(SPACE).append(BIT_SET)
+                        .append(OPEN_CLOSE_BRACKET_STRING);
+            } else if (attrName.equals(YANG_AUGMENTED_INFO_MAP)) {
+                attrDef.append(SPACE).append(EQUAL).append(SPACE).append(NEW)
+                        .append(SPACE).append(HASH_MAP)
+                        .append(OPEN_CLOSE_DIAMOND_STRING)
+                        .append(OPEN_CLOSE_BRACKET_STRING);
+            }
+
+            attrDef.append(signatureClose());
         } else {
             // Add starting definition.
             addAttrStartDef(annotation, attrDef);
@@ -208,13 +216,11 @@
         if (annotation != null &&
                 annotation.getYangAppDataStructure() != null) {
             attrDef.append(DIAMOND_CLOSE_BRACKET).append(SPACE)
-                    .append(attrName).append(SEMI_COLON)
-                    .append(NEW_LINE);
+                    .append(attrName).append(signatureClose());
         } 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_COLON)
-                    .append(NEW_LINE);
+                    .append(SPACE).append(ARRAY_LIST).append(signatureClose());
         }
     }
 
@@ -327,32 +333,6 @@
     }
 
     /**
-     * Returns attribute for augmentation.
-     *
-     * @return attribute for augmentation
-     */
-    static String addAugmentationAttribute() {
-        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;
-    }
-
-    /**
      * Adds attribute for int ranges.
      *
      * @param modifier modifier for attribute
@@ -437,7 +417,7 @@
                 "     * Applicable in protocol edit operation, not applicable" +
                 " in query operation\n" +
                 "     */\n" +
-                "    public enum OnosYangNodeOperationType {\n" +
+                "    public static enum OnosYangOpType {\n" +
                 "        MERGE,\n" +
                 "        REPLACE,\n" +
                 "        CREATE,\n" +
@@ -448,36 +428,6 @@
     }
 
     /**
-     * Returns operation type enum, leaf value set attribute and select leaf
-     * attribute.
-     *
-     * @return operation attributes for value and select leaf flags
-     */
-    static String getOperationAttributes() {
-        return "    /**\n" +
-                "     * Identify the leafs whose value are explicitly set\n" +
-                "     * Applicable in protocol edit and query operation\n" +
-                "     */\n" +
-                "    private BitSet valueLeafFlags = new BitSet();\n" +
-                "\n" +
-                "    /**\n" +
-                "     * Identify the leafs to be selected, in a query operation\n" +
-                "     */\n" +
-                "    private BitSet selectLeafFlags = new BitSet();\n";
-    }
-
-    /**
-     * Returns operation type enum, leaf value set attribute and select leaf
-     * attribute for constructor.
-     *
-     * @return operation attributes for constructor
-     */
-    static String getOperationAttributeForConstructor() {
-        return "        this.valueLeafFlags = builderObject.getValueLeafFlags();\n" +
-                "        this.selectLeafFlags = builderObject.getSelectLeafFlags();\n";
-    }
-
-    /**
      * Returns attribute in constructor for yang augmented info map.
      *
      * @return augment info map