[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();
+ }
+}