[ONOS-5232] Update generated code

Change-Id: I9c25d9f2888fbee78fddf10d02a3fa94f7ce46e0
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/StringGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/StringGenerator.java
new file mode 100644
index 0000000..6d5a14c
--- /dev/null
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/StringGenerator.java
@@ -0,0 +1,1057 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.yangutils.translator.tojava.utils;
+
+import org.onosproject.yangutils.datamodel.YangCompilerAnnotation;
+import org.onosproject.yangutils.datamodel.YangType;
+import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
+import org.onosproject.yangutils.translator.exception.TranslatorException;
+
+import java.util.Map;
+
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BOOLEAN;
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DECIMAL64;
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.EMPTY;
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT16;
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT32;
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT64;
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT8;
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT16;
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT32;
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT64;
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT8;
+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_BRACKET_WITH_VALUE_AND_RETURN_TYPE;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodClassTypes.CLASS_TYPE;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getIfConditionForAddToListMethod;
+import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.AND;
+import static org.onosproject.yangutils.utils.UtilConstants.AT;
+import static org.onosproject.yangutils.utils.UtilConstants.BIG_DECIMAL;
+import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
+import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
+import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
+import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
+import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_LOWER_CASE;
+import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
+import static org.onosproject.yangutils.utils.UtilConstants.BYTE_WRAPPER;
+import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
+import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.CLASS;
+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.COLON;
+import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
+import static org.onosproject.yangutils.utils.UtilConstants.COMPARE_TO;
+import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT_CAPS;
+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.DOUBLE;
+import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.ELSE;
+import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
+import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
+import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
+import static org.onosproject.yangutils.utils.UtilConstants.EXTEND;
+import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
+import static org.onosproject.yangutils.utils.UtilConstants.FOR;
+import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
+import static org.onosproject.yangutils.utils.UtilConstants.GET;
+import static org.onosproject.yangutils.utils.UtilConstants.IF;
+import static org.onosproject.yangutils.utils.UtilConstants.IMPLEMENTS;
+import static org.onosproject.yangutils.utils.UtilConstants.IMPORT;
+import static org.onosproject.yangutils.utils.UtilConstants.IN;
+import static org.onosproject.yangutils.utils.UtilConstants.INT;
+import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
+import static org.onosproject.yangutils.utils.UtilConstants.INT_MAX_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.INT_MIN_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.LIST;
+import static org.onosproject.yangutils.utils.UtilConstants.LONG;
+import static org.onosproject.yangutils.utils.UtilConstants.LONG_MAX_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.LONG_MIN_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.LONG_WRAPPER;
+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;
+import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.OF;
+import static org.onosproject.yangutils.utils.UtilConstants.OMIT_NULL_VALUE_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.OVERRIDE;
+import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BOOLEAN;
+import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BYTE;
+import static org.onosproject.yangutils.utils.UtilConstants.PARSE_INT;
+import static org.onosproject.yangutils.utils.UtilConstants.PARSE_LONG;
+import static org.onosproject.yangutils.utils.UtilConstants.PARSE_SHORT;
+import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
+import static org.onosproject.yangutils.utils.UtilConstants.PUT;
+import static org.onosproject.yangutils.utils.UtilConstants.QUEUE;
+import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
+import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
+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;
+import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MAX_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MIN_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
+import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
+import static org.onosproject.yangutils.utils.UtilConstants.THIS;
+import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
+import static org.onosproject.yangutils.utils.UtilConstants.TRY;
+import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_SPACE_INDENTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.UINT8_MAX_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.UINT8_MIN_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.UINT_MAX_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.UINT_MIN_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MAX_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MIN_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.VALIDATE_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
+import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO_LOWER_CASE;
+import static org.onosproject.yangutils.utils.UtilConstants.YANG_UTILS_TODO;
+import static org.onosproject.yangutils.utils.UtilConstants.ZERO;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
+
+/**
+ * Represents string generator for translator.
+ */
+@SuppressWarnings("HardcodedFileSeparator")
+public final class StringGenerator {
+
+    private StringGenerator() {
+    }
+
+    /**
+     * Returns compare to string.
+     *
+     * @return compare to string
+     */
+    static String getCompareToString() {
+        return PERIOD + COMPARE_TO;
+    }
+
+    /**
+     * Returns lesser than and equals condition.
+     *
+     * @return lesser than and equals condition
+     */
+    static String getLesserThanCondition() {
+        return SPACE + DIAMOND_OPEN_BRACKET + EQUAL + SPACE;
+    }
+
+    /**
+     * Returns greater than and equals condition.
+     *
+     * @return greater than and equals condition
+     */
+    static String getGreaterThanCondition() {
+        return SPACE + DIAMOND_CLOSE_BRACKET + EQUAL + SPACE;
+    }
+
+    /**
+     * Returns && conditional string.
+     *
+     * @param cond1 condition one
+     * @param cond2 condition two
+     * @return && conditional string
+     */
+    static String ifAndAndCondition(String cond1, String cond2) {
+        return cond1 + SPACE + AND + AND + SPACE + cond2;
+    }
+
+    /**
+     * Returns equal equal conditional string.
+     *
+     * @param cond1 condition one
+     * @param cond2 condition two
+     * @return equal equal conditional string
+     */
+    static String ifEqualEqualCondition(String cond1, String cond2) {
+        return cond1 + SPACE + EQUAL + EQUAL + SPACE + cond2;
+    }
+
+    /**
+     * Returns new instance string.
+     *
+     * @param returnType return type
+     * @param varName    variable name
+     * @param space      spaces
+     * @param value      value
+     * @return new instance string
+     */
+    static String getNewInstance(String returnType, String varName,
+                                 String space, String value) {
+        return space + returnType + SPACE + varName + SPACE + EQUAL + SPACE +
+                NEW + returnType + brackets(OPEN_CLOSE_BRACKET_WITH_VALUE,
+                                            value, null) + signatureClose();
+    }
+
+    /**
+     * Returns return string.
+     *
+     * @param value value to be returned
+     * @param space spaces
+     * @return return string
+     */
+    static String getReturnString(String value, String space) {
+        return space + RETURN + SPACE + value;
+    }
+
+    /**
+     * Returns new line string with spaces.
+     *
+     * @param space spaces
+     * @return new line string with spaces
+     */
+    static String getNewLineAndSpace(String space) {
+        return NEW_LINE + space;
+    }
+
+    /**
+     * Returns method close string.
+     *
+     * @param type indentation type
+     * @return method close string
+     */
+    static String methodClose(IndentationType type) {
+        switch (type) {
+            case EIGHT_SPACE:
+                return EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
+                        NEW_LINE;
+            case TWELVE_SPACE:
+                return TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
+                        NEW_LINE;
+            case SIXTEEN_SPACE:
+                return SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
+                        NEW_LINE;
+            case TWENTY_SPACE:
+                return TWENTY_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
+                        NEW_LINE;
+            case TWENTY_EIGHT_SPACE:
+                return FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
+                        NEW_LINE;
+            case TWENTY_FOUR_SPACE:
+                return FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
+                        NEW_LINE;
+            default:
+                return FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
+                        NEW_LINE;
+        }
+    }
+
+    /**
+     * Returns body of the method.
+     *
+     * @param type            type of method body
+     * @param paraName        parameter name
+     * @param methodName      method name
+     * @param space           space to be given before body
+     * @param prefix          prefix for internal method
+     * @param paramType       parameter type
+     * @param isBuilderSetter is for builder setter
+     * @return body of the method
+     */
+    static String methodBody(MethodBodyTypes type, String paraName,
+                             String methodName,
+                             String space, String prefix,
+                             String paramType, boolean isBuilderSetter) {
+        StringBuilder builder = new StringBuilder();
+        String body;
+        switch (type) {
+            case GETTER:
+                return getReturnString(paraName, space);
+            case SETTER:
+                body = space + THIS + PERIOD + paraName + SPACE + EQUAL + SPACE +
+                        paraName + signatureClose();
+                builder.append(body);
+                if (isBuilderSetter) {
+                    body = getReturnString(THIS + signatureClose(), space);
+                    builder.append(body);
+                }
+                return builder.toString();
+            case BUILD:
+                return getReturnString(
+                        NEW + SPACE + paraName + brackets(
+                                OPEN_CLOSE_BRACKET_WITH_VALUE, THIS, null) +
+                                signatureClose(), space);
+            case CONSTRUCTOR:
+                return space + THIS + PERIOD + paraName + SPACE +
+                        EQUAL + SPACE + BUILDER_LOWER_CASE + OBJECT + PERIOD +
+                        prefix + methodName +
+                        brackets(OPEN_CLOSE_BRACKET, null, null) +
+                        signatureClose();
+            case DEFAULT_CONSTRUCTOR:
+                return EMPTY_STRING;
+            case ADD_TO_LIST:
+                return space + getIfConditionForAddToListMethod(paraName) +
+                        space + paraName +
+                        brackets(OPEN_CLOSE_BRACKET, null, null) + PERIOD +
+                        ADD_STRING +
+                        brackets(OPEN_CLOSE_BRACKET_WITH_VALUE, VALUE, null) +
+                        signatureClose() + getReturnString(
+                        THIS + signatureClose(), space);
+            case AUGMENTED_MAP_ADD:
+                return space + YANG_AUGMENTED_INFO_LOWER_CASE + MAP +
+                        PERIOD + PUT + OPEN_PARENTHESIS + CLASS +
+                        OBJECT_STRING + COMMA + SPACE + VALUE +
+                        CLOSE_PARENTHESIS + signatureClose();
+            case AUGMENTED_MAP_GET_VALUE:
+                return getReturnString(
+                        YANG_AUGMENTED_INFO_LOWER_CASE + MAP + PERIOD + GET +
+                                brackets(OPEN_CLOSE_BRACKET_WITH_VALUE, CLASS +
+                                        OBJECT_STRING, null) + signatureClose(),
+                        space);
+            case AUGMENTED_MAP_GETTER:
+                return getReturnString(YANG_AUGMENTED_INFO_LOWER_CASE + MAP +
+                                               signatureClose(), space);
+            case MANAGER_METHODS:
+                body = space + YANG_UTILS_TODO + NEW_LINE;
+                builder.append(body);
+                if (paramType != null) {
+                    body = getReturnString(parseTypeForReturnValue(paramType),
+                                           space);
+                    builder.append(body)
+                            .append(signatureClose());
+                }
+                return builder.toString();
+            case OF_METHOD:
+                return getReturnString(
+                        NEW + SPACE + paraName + brackets(
+                                OPEN_CLOSE_BRACKET_WITH_VALUE, VALUE, null)
+                                + signatureClose(), space);
+            case TO_STRING:
+                return space + PERIOD + ADD_STRING + OPEN_PARENTHESIS + QUOTES +
+                        paraName + QUOTES + COMMA + SPACE + paraName +
+                        CLOSE_PARENTHESIS;
+            case EQUALS_METHOD:
+            default:
+                return null;
+        }
+    }
+
+    /**
+     * Returns end of line.
+     *
+     * @return end of line
+     */
+    static String signatureClose() {
+        return SEMI_COLON + NEW_LINE;
+    }
+
+    /**
+     * Returns method signature close for method class type.
+     *
+     * @param type method class type
+     * @return method signature close for method class type
+     */
+    static String methodSignatureClose(MethodClassTypes type) {
+        switch (type) {
+            case INTERFACE_TYPE:
+                return signatureClose();
+            case CLASS_TYPE:
+                return SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+            default:
+                return null;
+        }
+    }
+
+    /**
+     * Returns method param.
+     *
+     * @param type type of param
+     * @param name name of param
+     * @return method param
+     */
+    private static String methodParam(String type, String name) {
+        return type + SPACE + name;
+    }
+
+    /**
+     * Returns comma followed by a space.
+     *
+     * @return comma followed by a space
+     */
+    private static String commaWithSpace() {
+        return COMMA + SPACE;
+    }
+
+    /**
+     * Returns bracket string for the given type.
+     *
+     * @param type       bracket type
+     * @param value      value to be added in brackets
+     * @param returnType returns type to be added for value
+     * @return bracket for the given type.
+     */
+    static String brackets(BracketType type, String value,
+                           String returnType) {
+        String ret = EMPTY_STRING;
+        switch (type) {
+            case OPEN_CLOSE_BRACKET:
+                return OPEN_PARENTHESIS + CLOSE_PARENTHESIS;
+            case OPEN_CLOSE_BRACKET_WITH_VALUE:
+                return OPEN_PARENTHESIS + value + CLOSE_PARENTHESIS;
+            case OPEN_CLOSE_BRACKET_WITH_VALUE_AND_RETURN_TYPE:
+                if (returnType != null) {
+                    ret = returnType + SPACE;
+                }
+                return OPEN_PARENTHESIS + ret + value +
+                        CLOSE_PARENTHESIS;
+            case OPEN_BRACKET_WITH_VALUE:
+                ret = EMPTY_STRING;
+                if (returnType != null) {
+                    ret = returnType + SPACE;
+                }
+                return OPEN_PARENTHESIS + ret + value +
+                        COMMA;
+            case CLOSE_BRACKET_WITH_VALUE:
+                ret = EMPTY_STRING;
+                if (returnType != null) {
+                    ret = returnType + SPACE;
+                }
+                return SPACE + ret + value +
+                        CLOSE_PARENTHESIS;
+            case OPEN_CLOSE_DIAMOND:
+                return DIAMOND_OPEN_BRACKET + DIAMOND_CLOSE_BRACKET;
+            case OPEN_CLOSE_DIAMOND_WITH_VALUE:
+                return DIAMOND_OPEN_BRACKET + value + DIAMOND_CLOSE_BRACKET;
+            default:
+                return null;
+        }
+    }
+
+    /**
+     * Returns method signature for multi attribute methods.
+     *
+     * @param methodName       method name
+     * @param prefix           prefix for method
+     * @param modifier         modifier for method
+     * @param methodReturnType method's return type
+     * @param params           parameters
+     * @param type             type of method
+     * @return method signature for multi attribute methods
+     */
+    static String multiAttrMethodSignature(String methodName, String
+            prefix, String modifier, String methodReturnType,
+                                           Map<String, String> params,
+                                           MethodClassTypes type) {
+        StringBuilder methodBuilder = new StringBuilder(FOUR_SPACE_INDENTATION);
+        String method = EMPTY_STRING;
+        if (modifier != null) {
+            method = modifier + SPACE;
+        }
+        methodBuilder.append(method);
+        if (methodReturnType != null) {
+            method = methodReturnType + SPACE + prefix + methodName;
+        } else {
+            method = prefix + methodName;
+        }
+        //Append method beginning.
+        methodBuilder.append(method)
+                .append(OPEN_PARENTHESIS);
+        for (Map.Entry<String, String> param : params.entrySet()) {
+            methodBuilder.append(methodParam(param.getKey(), param.getValue()));
+            methodBuilder.append(commaWithSpace());
+        }
+        String para = methodBuilder.toString();
+        String[] array = {SPACE, COMMA};
+        para = trimAtLast(para, array);
+        methodBuilder = new StringBuilder(para)
+                .append(CLOSE_PARENTHESIS)
+                .append(methodSignatureClose(type));
+
+        return methodBuilder.toString();
+    }
+
+    /**
+     * Returns method signature for interface and implementation classes.
+     *
+     * @param methodName       name of the method
+     * @param prefix           prefix which needs to be added for method
+     * @param modifier         modifier which needs to be added for method
+     * @param paraVal          value which needs to be added as parameter
+     * @param methodReturnType returns type to be added for method
+     * @param paraReturnType   return type to be added for parameter
+     * @param type             method class type
+     * @return method signature for interface and implementation classes
+     */
+    static String methodSignature(
+            String methodName, String prefix, String modifier, String paraVal,
+            String methodReturnType, String paraReturnType,
+            MethodClassTypes type) {
+        StringBuilder methodBuilder = new StringBuilder(FOUR_SPACE_INDENTATION);
+        String method = EMPTY_STRING;
+        if (modifier != null) {
+            method = modifier + SPACE;
+        }
+        methodBuilder.append(method);
+        if (methodReturnType != null) {
+            method = methodReturnType + SPACE + prefix + methodName;
+        } else {
+            method = prefix + methodName;
+        }
+        //Append method beginning.
+        methodBuilder.append(method);
+
+        if (paraVal != null) {
+            methodBuilder.append(brackets(
+                    OPEN_CLOSE_BRACKET_WITH_VALUE_AND_RETURN_TYPE,
+                    paraVal, paraReturnType));
+        } else {
+            methodBuilder.append(brackets(OPEN_CLOSE_BRACKET, null,
+                                          null));
+        }
+
+        methodBuilder.append(methodSignatureClose(type));
+
+        return methodBuilder.toString();
+    }
+
+    /**
+     * Returns list attribute.
+     *
+     * @param attrType           attribute type
+     * @param compilerAnnotation compiler annotations
+     * @return list attribute
+     */
+
+    static String getListAttribute(String attrType,
+                                   YangCompilerAnnotation compilerAnnotation) {
+        String listAttr;
+        if (compilerAnnotation != null &&
+                compilerAnnotation.getYangAppDataStructure() != null) {
+            switch (compilerAnnotation.getYangAppDataStructure()
+                    .getDataStructure()) {
+                case QUEUE: {
+                    listAttr = QUEUE + DIAMOND_OPEN_BRACKET + attrType +
+                            DIAMOND_CLOSE_BRACKET;
+                    break;
+                }
+                case SET: {
+                    listAttr = SET + DIAMOND_OPEN_BRACKET + attrType +
+                            DIAMOND_CLOSE_BRACKET;
+                    break;
+                }
+                case LIST: {
+                    listAttr = getListString() + attrType +
+                            DIAMOND_CLOSE_BRACKET;
+                    break;
+                }
+                default: {
+                    listAttr = getListString() + attrType +
+                            DIAMOND_CLOSE_BRACKET;
+                }
+            }
+        } else {
+            listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
+        }
+        return listAttr;
+    }
+
+    /**
+     * Returns getters for value and select leaf.
+     *
+     * @return getters for value and select leaf
+     */
+    static String getGettersForValueAndSelectLeaf() {
+        return "\n" +
+                "    @Override\n" +
+                "    public boolean isLeafValueSet(LeafIdentifier leaf) {\n" +
+                "        return getValueLeafFlags().get(leaf.getLeafIndex());\n" +
+                "    }\n" +
+                "\n" +
+                "    @Override\n" +
+                "    public boolean isSelectLeaf(LeafIdentifier leaf) {\n" +
+                "        return getSelectLeafFlags().get(leaf.getLeafIndex());\n" +
+                "    }\n";
+    }
+
+    /**
+     * Returns getter methods for operation attributes.
+     *
+     * @return getter methods for operation attributes
+     */
+    static String getOperationAttributesGetters() {
+        return "\n" +
+                "    /**\n" +
+                "     * Returns the valueLeafFlags.\n" +
+                "     *\n" +
+                "     * @return value of valueLeafFlags\n" +
+                "     */\n" +
+                "    public BitSet getValueLeafFlags() {\n" +
+                "        return valueLeafFlags;\n" +
+                "    }\n" +
+                "\n" +
+                "    /**\n" +
+                "     * Returns the selectLeafFlags.\n" +
+                "     *\n" +
+                "     * @return value of selectLeafFlags\n" +
+                "     */\n" +
+                "    public BitSet getSelectLeafFlags() {\n" +
+                "        return selectLeafFlags;\n" +
+                "    }\n" +
+                "\n";
+    }
+
+    /**
+     * Returns interface leaf identifier enum method.
+     *
+     * @return interface leaf identifier enum method
+     */
+    static String getInterfaceLeafIdEnumMethods() {
+        return "\n\n        private int leafIndex;\n" +
+                "\n" +
+                "        public int getLeafIndex() {\n" +
+                "            return leafIndex;\n" +
+                "        }\n" +
+                "\n" +
+                "        LeafIdentifier(int value) {\n" +
+                "            this.leafIndex = value;\n" +
+                "        }\n" +
+                "    }\n";
+    }
+
+    /**
+     * Returns if condition string for typedef constructor.
+     *
+     * @param type     type of conflict
+     * @param addFirst true int/long need to be added first
+     * @return if condition string for typedef constructor
+     */
+    static String ifConditionForIntInTypeDefConstructor(ValidatorTypeForUnionTypes type,
+                                                        boolean addFirst) {
+        String condition =
+                EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS +
+                        VALIDATE_RANGE + OPEN_PARENTHESIS;
+
+        switch (type) {
+            case INT_TYPE_CONFLICT:
+                if (addFirst) {
+                    condition = condition + INT_MIN_RANGE + COMMA + SPACE +
+                            INT_MAX_RANGE + COMMA + SPACE + VALUE;
+                } else {
+                    condition = condition + UINT_MIN_RANGE + COMMA + SPACE +
+                            UINT_MAX_RANGE + COMMA + SPACE + VALUE;
+                }
+                break;
+            case LONG_TYPE_CONFLICT:
+                if (addFirst) {
+                    condition = condition + LONG_MIN_RANGE + COMMA + SPACE +
+                            LONG_MAX_RANGE + COMMA + SPACE + VALUE;
+                } else {
+                    condition = condition + ULONG_MIN_RANGE + COMMA + SPACE +
+                            ULONG_MAX_RANGE + COMMA + SPACE + VALUE;
+                }
+                break;
+            case SHORT_TYPE_CONFLICT:
+                if (addFirst) {
+                    condition = condition + SHORT_MIN_RANGE + COMMA + SPACE +
+                            SHORT_MAX_RANGE + COMMA + SPACE + VALUE;
+                } else {
+                    condition = condition + UINT8_MIN_RANGE + COMMA + SPACE +
+                            UINT8_MAX_RANGE + COMMA + SPACE + VALUE;
+                }
+                break;
+            default:
+                return null;
+        }
+
+        return condition + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
+                OPEN_CURLY_BRACKET + NEW_LINE;
+    }
+
+    /**
+     * Returns from string method parsed string.
+     *
+     * @param targetDataType target data type
+     * @param yangType       YANG type
+     * @return parsed string
+     */
+    static String getParseFromStringMethod(String targetDataType,
+                                           YangType<?> yangType) {
+        YangDataTypes type = yangType.getDataType();
+
+        switch (type) {
+            case INT8:
+                return BYTE_WRAPPER + PERIOD + PARSE_BYTE;
+            case INT16:
+                return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
+            case INT32:
+                return INTEGER_WRAPPER + PERIOD + PARSE_INT;
+            case INT64:
+                return LONG_WRAPPER + PERIOD + PARSE_LONG;
+            case UINT8:
+                return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
+            case UINT16:
+                return INTEGER_WRAPPER + PERIOD + PARSE_INT;
+            case UINT32:
+                return LONG_WRAPPER + PERIOD + PARSE_LONG;
+            case UINT64:
+                return NEW + SPACE + BIG_INTEGER;
+            case DECIMAL64:
+                return NEW + SPACE + BIG_DECIMAL;
+            case STRING:
+            case IDENTITYREF:
+                return EMPTY_STRING;
+            case EMPTY:
+            case BOOLEAN:
+                return BOOLEAN_WRAPPER + PERIOD + PARSE_BOOLEAN;
+            case BITS:
+            case UNION:
+            case ENUMERATION:
+            case DERIVED:
+                return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
+            default:
+                throw new TranslatorException("given data type is not " +
+                                                      "supported. " +
+                                                      yangType.getDataTypeName() +
+                                                      " in " +
+                                                      yangType.getLineNumber() +
+                                                      " at " +
+                                                      yangType.getCharPosition() +
+                                                      " in " +
+                                                      yangType.getFileName());
+        }
+    }
+
+    /**
+     * Returns sub string with catch statement for union's from string method.
+     *
+     * @return sub string with catch statement for union's from string method
+     */
+    static String getCatchSubString() {
+        return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE +
+                brackets(OPEN_CLOSE_BRACKET_WITH_VALUE_AND_RETURN_TYPE, EXCEPTION_VAR,
+                         EXCEPTION) + SPACE + OPEN_CURLY_BRACKET;
+    }
+
+    /**
+     * Returns sub string with return statement for union's from string method.
+     *
+     * @return sub string with return statement for union's from string method
+     */
+    static String getReturnOfSubString() {
+        return getReturnString(OF, EIGHT_SPACE_INDENTATION) +
+                brackets(OPEN_CLOSE_BRACKET_WITH_VALUE, TMP_VAL, null) +
+                signatureClose();
+    }
+
+    /**
+     * Returns sub string with try statement for union's from string method.
+     *
+     * @return sub string with try statement for union's from string method
+     */
+    static String getTrySubString() {
+        return TRY + SPACE + OPEN_CURLY_BRACKET;
+    }
+
+    /*
+         * Returns omit null value string.
+         *
+         * @return omit null value string
+         */
+    static String getOmitNullValueString() {
+        return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING +
+                NEW_LINE;
+    }
+
+    /**
+     * Returns collection's iterator method.
+     *
+     * @param indentation indentation
+     * @param loopVar     loop variable
+     * @param collection  collection
+     * @return collection's iterator method
+     */
+    static String getCollectionIteratorForLoopBegin(String indentation,
+                                                    String loopVar,
+                                                    String collection) {
+        return indentation + FOR + SPACE + OPEN_PARENTHESIS + loopVar + SPACE +
+                COLON + SPACE + collection + CLOSE_PARENTHESIS + SPACE +
+                OPEN_CURLY_BRACKET + NEW_LINE;
+    }
+
+    /**
+     * Returns if else condition's signature.
+     *
+     * @param indentation indentation
+     * @param condition   conditions
+     * @return if else condition's signature
+     */
+    static String getElseIfConditionBegin(String indentation,
+                                          String condition) {
+        return indentation + CLOSE_CURLY_BRACKET + SPACE + ELSE + SPACE +
+                getIfConditionBegin(EMPTY_STRING, condition);
+    }
+
+    /**
+     * Returns if condition's signature.
+     *
+     * @param indentation indentation
+     * @param condition   conditions
+     * @return if condition's signature
+     */
+    static String getIfConditionBegin(String indentation, String condition) {
+        return indentation + IF + SPACE + brackets(
+                OPEN_CLOSE_BRACKET_WITH_VALUE, condition, EMPTY_STRING) +
+                methodSignatureClose(CLASS_TYPE);
+    }
+
+    /**
+     * Returns whether the data type is of primitive data type.
+     *
+     * @param dataType data type to be checked
+     * @return true, if data type can have primitive data type, false otherwise
+     */
+    static boolean isPrimitiveDataType(YangDataTypes dataType) {
+        return dataType == INT8 ||
+                dataType == INT16 ||
+                dataType == INT32 ||
+                dataType == INT64 ||
+                dataType == UINT8 ||
+                dataType == UINT16 ||
+                dataType == UINT32 ||
+                dataType == UINT64 ||
+                dataType == DECIMAL64 ||
+                dataType == BOOLEAN ||
+                dataType == EMPTY;
+    }
+
+    /**
+     * Returns list string.
+     *
+     * @return list string
+     */
+    private static String getListString() {
+        return LIST + DIAMOND_OPEN_BRACKET;
+    }
+
+    /**
+     * Returns override string.
+     *
+     * @return override string
+     */
+    public static String getOverRideString() {
+        return NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE;
+    }
+
+    /**
+     * Returns value leaf flag setter.
+     *
+     * @param name name of leaf
+     * @return value leaf flag setter
+     */
+    static String getValueLeafSetString(String name) {
+        return "\n        valueLeafFlags.set(LeafIdentifier." +
+                name.toUpperCase() + ".getLeafIndex());\n";
+    }
+
+    /*Provides string to return for type.*/
+    private static String parseTypeForReturnValue(String type) {
+        switch (type) {
+            case BYTE:
+            case INT:
+            case SHORT:
+            case LONG:
+            case DOUBLE:
+                return ZERO;
+            case BOOLEAN_DATA_TYPE:
+                return FALSE;
+            default:
+                return null;
+        }
+    }
+
+    /**
+     * Returns check not null string.
+     *
+     * @param name attribute name
+     * @return check not null string
+     */
+    static String getCheckNotNull(String name) {
+        return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING +
+                OPEN_PARENTHESIS + name + COMMA + SPACE + name +
+                CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE;
+    }
+
+    /**
+     * Returns definition close string.
+     *
+     * @return definition close string
+     */
+    private static String defCloseString() {
+        return SPACE + OPEN_CURLY_BRACKET + NEW_LINE + NEW_LINE;
+    }
+
+    /**
+     * Returns default class definition for java file when extends a
+     * interface.
+     *
+     * @param classType class type
+     * @param name      name of class
+     * @param modifier  modifier for class
+     * @param extend    extends class name
+     * @return class definition
+     */
+    static String getDefaultDefinitionWithExtends(String classType,
+                                                  String name, String
+                                                          modifier,
+                                                  String extend) {
+        String mod = EMPTY_STRING;
+        if (modifier != null) {
+            mod = modifier + SPACE;
+        }
+        return mod + classType + SPACE + name + SPACE + EXTEND + SPACE
+                + extend + defCloseString();
+    }
+
+    /**
+     * Returns default class definition for java file when implements a
+     * interface.
+     *
+     * @param classType class type
+     * @param name      name of class
+     * @param modifier  modifier for class
+     * @param impl      implements class name
+     * @return class definition
+     */
+    static String getDefaultDefinitionWithImpl(String classType,
+                                               String name, String
+                                                       modifier,
+                                               String impl) {
+        String mod = EMPTY_STRING;
+        if (modifier != null) {
+            mod = modifier + SPACE;
+        }
+        return mod + classType + SPACE + name + SPACE + IMPLEMENTS +
+                SPACE + impl + defCloseString();
+    }
+
+    /**
+     * Returns default class definition for java file.
+     *
+     * @param classType class type
+     * @param name      name of class
+     * @param modifier  modifier for class
+     * @return class definition
+     */
+    static String getDefaultDefinition(String classType,
+                                       String name, String modifier) {
+        String mod = EMPTY_STRING;
+        if (modifier != null) {
+            mod = modifier + SPACE;
+        }
+        return mod + classType + SPACE + name + defCloseString();
+    }
+
+    /**
+     * Returns string for service class.
+     *
+     * @param name1 name of even listener class
+     * @param name2 name of even class
+     * @return listener service string for service class
+     */
+    static String getEventExtendsString(String name1, String type,
+                                        String name2) {
+        StringBuilder builder = new StringBuilder();
+        builder.append(type).append(DIAMOND_OPEN_BRACKET).append(name1)
+                .append(COMMA).append(SPACE).append(name2).append
+                (DIAMOND_CLOSE_BRACKET);
+        return builder.toString();
+    }
+
+    /**
+     * Returns import string.
+     *
+     * @param pkg package
+     * @param cls class
+     * @return import string
+     */
+    public static String getImportString(String pkg, String cls) {
+        StringBuilder builder = new StringBuilder()
+                .append(IMPORT).append(pkg).append(PERIOD).append(cls)
+                .append(signatureClose());
+        return builder.toString();
+    }
+
+    /**
+     * Returns static modifier string.
+     *
+     * @param modifier modifier
+     * @return static modifier string
+     */
+    static String getSpecificModifier(String modifier, String keyWord) {
+        return new StringBuilder(modifier).append(SPACE).append(keyWord)
+                .toString();
+    }
+
+    /**
+     * Returns builder string for class definition.
+     *
+     * @param yangName class name
+     * @return builder string for class definition
+     */
+    static String getBuilderImplStringClassDef(String yangName) {
+        return new StringBuilder(yangName).append(PERIOD).append(yangName)
+                .append(BUILDER).toString();
+    }
+
+    /**
+     * Returns default name string.
+     *
+     * @param yangName class name
+     * @return default name string
+     */
+    static String getDefaultName(String yangName) {
+        return new StringBuilder(DEFAULT_CAPS).append(yangName).toString();
+    }
+
+    /**
+     * Returns suffixed name string.
+     *
+     * @param yangName class name
+     * @param suffix   suffix to append to name
+     * @return suffixed name string
+     */
+    static String getSuffixedName(String yangName, String suffix) {
+        return new StringBuilder(yangName).append(suffix).toString();
+    }
+
+    /**
+     * Returns error msg string.
+     *
+     * @param msg      message
+     * @param name     name of node
+     * @param line     line number
+     * @param position char position
+     * @param fileName file name
+     * @return error message string
+     */
+    static String getErrorMsg(String msg, String name, int line, int position,
+                              String fileName) {
+        return new StringBuilder().append(msg).append(name).append(IN)
+                .append(line).append(AT).append(position).append(IN)
+                .append(fileName).toString();
+    }
+}