VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 1 | /* |
| 2 | * Copyright 2016-present Open Networking Laboratory |
| 3 | * |
| 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | * you may not use this file except in compliance with the License. |
| 6 | * You may obtain a copy of the License at |
| 7 | * |
| 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | * |
| 10 | * Unless required by applicable law or agreed to in writing, software |
| 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
| 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 | * See the License for the specific language governing permissions and |
| 14 | * limitations under the License. |
| 15 | */ |
| 16 | |
| 17 | package org.onosproject.yangutils.translator.tojava.utils; |
| 18 | |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 19 | import org.onosproject.yangutils.datamodel.RpcNotificationContainer; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 20 | import org.onosproject.yangutils.datamodel.YangAugment; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 21 | import org.onosproject.yangutils.datamodel.YangChoice; |
| 22 | import org.onosproject.yangutils.datamodel.YangLeafRef; |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 23 | import org.onosproject.yangutils.datamodel.YangLeavesHolder; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 24 | import org.onosproject.yangutils.datamodel.YangNode; |
| 25 | import org.onosproject.yangutils.datamodel.YangType; |
| 26 | import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 27 | import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 28 | import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer; |
| 29 | import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 30 | import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator; |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 31 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 32 | import org.onosproject.yangutils.utils.io.YangPluginConfig; |
| 33 | |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 34 | import java.io.IOException; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 35 | import java.util.HashMap; |
| 36 | import java.util.LinkedHashMap; |
| 37 | import java.util.Map; |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 38 | |
| 39 | import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.LEAFREF; |
| 40 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.FILTER_CONTENT_MATCH_FOR_LEAF_LIST_MASK; |
| 41 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.FILTER_CONTENT_MATCH_FOR_LEAF_MASK; |
| 42 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.FILTER_CONTENT_MATCH_FOR_NODES_MASK; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 43 | import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.getNodesPackage; |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 44 | import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.EIGHT_SPACE; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 45 | import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.FOUR_SPACE; |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 46 | import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.SIXTEEN_SPACE; |
| 47 | import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.TWELVE_SPACE; |
| 48 | import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.TWENTY_FOUR_SPACE; |
| 49 | import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.TWENTY_SPACE; |
| 50 | import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getDataFromTempFileHandle; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 51 | import static org.onosproject.yangutils.translator.tojava.utils.MethodClassTypes.CLASS_TYPE; |
| 52 | import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getAppInstanceAttrString; |
| 53 | import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getChoiceChildNodes; |
| 54 | import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getCollectionIteratorForLoopBegin; |
| 55 | import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getElseIfConditionBegin; |
| 56 | import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getEqualEqualString; |
| 57 | import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getIfConditionBegin; |
| 58 | import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getLeafFlagSetString; |
| 59 | import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getOpenCloseParaWithValue; |
| 60 | import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getReturnString; |
| 61 | import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getTwoParaEqualsString; |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 62 | import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.methodClose; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 63 | import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.multiAttrMethodSignature; |
| 64 | import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.signatureClose; |
| 65 | import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.valueAssign; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 66 | import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING; |
| 67 | import static org.onosproject.yangutils.utils.UtilConstants.AND_OPERATION; |
| 68 | import static org.onosproject.yangutils.utils.UtilConstants.APP_INSTANCE; |
| 69 | import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 70 | import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 71 | import static org.onosproject.yangutils.utils.UtilConstants.BREAK; |
| 72 | import static org.onosproject.yangutils.utils.UtilConstants.BUILD; |
| 73 | import static org.onosproject.yangutils.utils.UtilConstants.BUILDER; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 74 | import static org.onosproject.yangutils.utils.UtilConstants.BUILD_FOR_FILTER; |
| 75 | import static org.onosproject.yangutils.utils.UtilConstants.CHOICE_STF_METHOD_NAME; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 76 | import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET; |
| 77 | import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 78 | import static org.onosproject.yangutils.utils.UtilConstants.COMMA; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 79 | import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT_CAPS; |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 80 | import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 81 | import static org.onosproject.yangutils.utils.UtilConstants.ELSE; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 82 | import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 83 | import static org.onosproject.yangutils.utils.UtilConstants.EQUAL; |
| 84 | import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 85 | import static org.onosproject.yangutils.utils.UtilConstants.FALSE; |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 86 | import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 87 | import static org.onosproject.yangutils.utils.UtilConstants.GET; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 88 | import static org.onosproject.yangutils.utils.UtilConstants.IF; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 89 | import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF; |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 90 | import static org.onosproject.yangutils.utils.UtilConstants.IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 91 | import static org.onosproject.yangutils.utils.UtilConstants.IS_EMPTY; |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 92 | import static org.onosproject.yangutils.utils.UtilConstants.IS_SELECT_ALL_SCHEMA_CHILD_FLAG; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 93 | import static org.onosproject.yangutils.utils.UtilConstants.NEW; |
| 94 | import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE; |
| 95 | import static org.onosproject.yangutils.utils.UtilConstants.NOT; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 96 | import static org.onosproject.yangutils.utils.UtilConstants.NULL; |
Bharat saraswal | 94844d6 | 2016-10-13 13:28:03 +0530 | [diff] [blame] | 97 | import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CLOSE_BRACKET_STRING; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 98 | import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET; |
| 99 | import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 100 | import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 101 | import static org.onosproject.yangutils.utils.UtilConstants.OR_OPERATION; |
| 102 | import static org.onosproject.yangutils.utils.UtilConstants.PERIOD; |
| 103 | import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 104 | import static org.onosproject.yangutils.utils.UtilConstants.PROCESS_CHILD_NODE_STF_PARAM; |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 105 | import static org.onosproject.yangutils.utils.UtilConstants.PROCESS_SUBTREE_FILTERING; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 106 | import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 107 | import static org.onosproject.yangutils.utils.UtilConstants.RETURN; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 108 | import static org.onosproject.yangutils.utils.UtilConstants.SELECT_ALL_CHILD_SCHEMA_PARAM; |
Bharat saraswal | 94844d6 | 2016-10-13 13:28:03 +0530 | [diff] [blame] | 109 | import static org.onosproject.yangutils.utils.UtilConstants.SELECT_LEAF; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 110 | import static org.onosproject.yangutils.utils.UtilConstants.SELECT_OR_CONTAINMENT_NODE_PARAM; |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 111 | import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLON; |
| 112 | import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 113 | import static org.onosproject.yangutils.utils.UtilConstants.SPACE; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 114 | import static org.onosproject.yangutils.utils.UtilConstants.STF_BUILDER_PARAM; |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 115 | import static org.onosproject.yangutils.utils.UtilConstants.SUBTREE_FILTERING_RESULT_BUILDER; |
| 116 | import static org.onosproject.yangutils.utils.UtilConstants.THIRTY_TWO_SPACE_INDENTATION; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 117 | import static org.onosproject.yangutils.utils.UtilConstants.TO; |
| 118 | import static org.onosproject.yangutils.utils.UtilConstants.TRUE; |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 119 | import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION; |
| 120 | import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_EIGHT_SPACE_INDENTATION; |
| 121 | import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_FOUR_SPACE_INDENTATION; |
| 122 | import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_SPACE_INDENTATION; |
Bharat saraswal | 94844d6 | 2016-10-13 13:28:03 +0530 | [diff] [blame] | 123 | import static org.onosproject.yangutils.utils.UtilConstants.VALUE_LEAF; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 124 | import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase; |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 125 | import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 126 | |
| 127 | /** |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 128 | * Represents generator for subtree filtering methods of generated files |
| 129 | * based on the file type. |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 130 | */ |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 131 | //TODO: improve class to use string generator. |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 132 | public final class SubtreeFilteringMethodsGenerator { |
| 133 | |
| 134 | /** |
| 135 | * private to make it a util. |
| 136 | */ |
| 137 | private SubtreeFilteringMethodsGenerator() { |
| 138 | } |
| 139 | |
| 140 | /** |
| 141 | * Returns is filter content match for leaf. |
| 142 | * |
| 143 | * @param javaAttributeInfo java attribute |
| 144 | * @param type data type |
| 145 | * @return is filter content match for leaf |
| 146 | */ |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 147 | public static String getSubtreeFilteringForLeaf( |
| 148 | JavaAttributeInfo javaAttributeInfo, YangType<?> type) { |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 149 | String attrQualifiedType; |
| 150 | String attributeName = javaAttributeInfo.getAttributeName(); |
| 151 | attrQualifiedType = getIfFilterContentMatchMethodImpl(attributeName, |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 152 | type); |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 153 | /* if (valueLeafFlags.get(LeafIdentifier.LEAF.getLeafIndex())) { |
| 154 | * if (appInstance.leaf() != leaf()) { |
| 155 | * return false; |
| 156 | * } else { |
| 157 | * subTreeFilteringResultBuilder.leaf(appInstance.leaf()); |
| 158 | * } |
| 159 | * } else if (selectLeafFlags.get(LeafIdentifier.LEAF.getLeafIndex()) || |
| 160 | * isSelectAllSchemaChild) { |
| 161 | * isAnySelectOrContainmentNode = true; |
| 162 | * subTreeFilteringResultBuilder.leaf(appInstance.leaf()); |
| 163 | * }*/ |
| 164 | return getIfConditionBegin(EIGHT_SPACE_INDENTATION, getLeafFlagSetString( |
| 165 | attributeName, VALUE_LEAF, EMPTY_STRING, GET)) + |
| 166 | getIfConditionBegin(TWELVE_SPACE_INDENTATION, attrQualifiedType) + |
| 167 | getReturnString(FALSE, SIXTEEN_SPACE_INDENTATION) + |
| 168 | signatureClose() + |
| 169 | TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + SPACE + ELSE + |
| 170 | SPACE + OPEN_CURLY_BRACKET + NEW_LINE + |
| 171 | getSubTreeBuilderCallString(SIXTEEN_SPACE_INDENTATION, attributeName, |
| 172 | TWELVE_SPACE) + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 173 | EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + SPACE + ELSE + |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 174 | getIfConditionBegin(SPACE, getLeafFlagSetString( |
| 175 | attributeName, SELECT_LEAF, EMPTY_STRING, GET) + SPACE + |
| 176 | OR_OPERATION + SPACE + IS_SELECT_ALL_SCHEMA_CHILD_FLAG) + |
| 177 | valueAssign(IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG, TRUE, |
| 178 | TWELVE_SPACE_INDENTATION) + |
| 179 | getSubTreeBuilderCallString(TWELVE_SPACE_INDENTATION, attributeName, |
| 180 | EIGHT_SPACE); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 181 | } |
| 182 | |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 183 | private static String getSubTreeBuilderCallString(String indent, String |
| 184 | name, IndentationType type) { |
| 185 | return indent + SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + name + |
| 186 | getOpenCloseParaWithValue(APP_INSTANCE + PERIOD + name + |
| 187 | OPEN_CLOSE_BRACKET_STRING) + |
| 188 | signatureClose() + methodClose(type); |
| 189 | } |
| 190 | |
| 191 | private static String getAttrTypeForFcmWhenPrimitiveDataType( |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 192 | String attributeName) { |
| 193 | return/* TODO: Need to check if we can expose the value leaf flag in |
| 194 | interface. |
| 195 | NOT + APP_INSTANCE + PERIOD + GET_VALUE_LEAF_FLAGS + |
| 196 | OPEN_PARENTHESIS + CLOSE_PARENTHESIS + |
| 197 | GET_METHOD_PREFIX + OPEN_PARENTHESIS + LEAF_IDENTIFIER + |
| 198 | PERIOD + attributeName.toUpperCase() + PERIOD |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 199 | + GET_LEAF_INDEX + OR_OPERATION +*/ |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 200 | APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS + |
| 201 | CLOSE_PARENTHESIS + SPACE + NOT + EQUAL + SPACE + |
| 202 | attributeName + OPEN_PARENTHESIS + |
| 203 | CLOSE_PARENTHESIS; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 204 | } |
| 205 | |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 206 | private static String attrTypeForFcmWhenNonPrimitiveDataTypes(String name) { |
| 207 | /* |
| 208 | * appInstance.name() == null || name().equals(appInstance.name()) |
| 209 | */ |
| 210 | return getEqualEqualString(StringGenerator.getAppInstanceAttrString(name), NULL) + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 211 | SPACE + OR_OPERATION + SPACE + NOT + OPEN_PARENTHESIS + |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 212 | getTwoParaEqualsString(name + OPEN_CLOSE_BRACKET_STRING, |
| 213 | StringGenerator.getAppInstanceAttrString(name)) |
| 214 | + CLOSE_PARENTHESIS; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 215 | } |
| 216 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 217 | private static String getIfFilterContentMatchMethodImpl( |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 218 | String name, YangType dataType) { |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 219 | String attrQualifiedType; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 220 | if (dataType.getDataType().isPrimitiveDataType()) { |
| 221 | attrQualifiedType = getAttrTypeForFcmWhenPrimitiveDataType(name); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 222 | } else if (dataType.getDataType() == LEAFREF) { |
Gaurav Agrawal | 9381ebb | 2016-09-29 19:00:33 +0530 | [diff] [blame] | 223 | |
| 224 | // When leafref in grouping. |
| 225 | if (((YangLeafRef) dataType.getDataTypeExtendedInfo()) |
| 226 | .isInGrouping()) { |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 227 | attrQualifiedType = attrTypeForFcmWhenNonPrimitiveDataTypes(name); |
Gaurav Agrawal | 9381ebb | 2016-09-29 19:00:33 +0530 | [diff] [blame] | 228 | } else { |
Gaurav Agrawal | 9381ebb | 2016-09-29 19:00:33 +0530 | [diff] [blame] | 229 | YangType type = ((YangLeafRef) dataType.getDataTypeExtendedInfo()) |
| 230 | .getEffectiveDataType(); |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 231 | if (type.getDataType().isPrimitiveDataType()) { |
| 232 | attrQualifiedType = getAttrTypeForFcmWhenPrimitiveDataType(name); |
Gaurav Agrawal | 9381ebb | 2016-09-29 19:00:33 +0530 | [diff] [blame] | 233 | } else { |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 234 | attrQualifiedType = attrTypeForFcmWhenNonPrimitiveDataTypes( |
| 235 | name); |
Gaurav Agrawal | 9381ebb | 2016-09-29 19:00:33 +0530 | [diff] [blame] | 236 | } |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 237 | } |
| 238 | } else { |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 239 | attrQualifiedType = attrTypeForFcmWhenNonPrimitiveDataTypes(name); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 240 | } |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 241 | return attrQualifiedType; |
| 242 | } |
| 243 | |
| 244 | /** |
| 245 | * Returns is filter content match for leaf. |
| 246 | * |
| 247 | * @param javaAttributeInfo java attribute |
| 248 | * @return is filter content match for leaf |
| 249 | */ |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 250 | public static String getSubtreeFilteringForLeafList( |
| 251 | JavaAttributeInfo javaAttributeInfo) { |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 252 | return getSubtreeFilteringForList(javaAttributeInfo, true, null); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 253 | } |
| 254 | |
| 255 | /** |
| 256 | * Returns is filter content match for child node. |
| 257 | * |
| 258 | * @param curNode current node |
| 259 | * @param pluginConfig plugin configurations |
| 260 | * @param path path of temp file |
| 261 | * @return is filter content match for child node |
| 262 | */ |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 263 | static String getProcessChildNodeSubtreeFiltering(YangNode curNode, |
| 264 | YangPluginConfig |
| 265 | pluginConfig, |
| 266 | String path) |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 267 | throws IOException { |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 268 | JavaFileInfoTranslator javaFileInfo = |
| 269 | ((JavaFileInfoContainer) curNode).getJavaFileInfo(); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 270 | String instance = APP_INSTANCE; |
| 271 | String name = getCapitalCase(javaFileInfo.getJavaName()); |
| 272 | String builderNamePrefix = getCapitalCase(javaFileInfo.getJavaName()); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 273 | |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 274 | Map<String, String> param = new HashMap<>(); |
| 275 | param.put(PROCESS_CHILD_NODE_STF_PARAM, BOOLEAN_DATA_TYPE); |
| 276 | param.put(instance, name); |
| 277 | param.put(STF_BUILDER_PARAM, builderNamePrefix + BUILDER); |
| 278 | param.put(SELECT_OR_CONTAINMENT_NODE_PARAM, BOOLEAN_WRAPPER); |
| 279 | param.put(SELECT_ALL_CHILD_SCHEMA_PARAM, BOOLEAN_WRAPPER); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 280 | |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 281 | |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 282 | String method = FOUR_SPACE_INDENTATION + PRIVATE + SPACE + BOOLEAN_DATA_TYPE + |
| 283 | SPACE + PROCESS_CHILD_NODE_STF_PARAM + |
| 284 | OPEN_PARENTHESIS + name + SPACE + instance + COMMA + |
| 285 | SPACE + builderNamePrefix + BUILDER + SPACE + |
| 286 | STF_BUILDER_PARAM + COMMA + |
| 287 | " Boolean " + |
| 288 | "isAnySelectOrContainmentNode, " + "boolean " + |
| 289 | SELECT_ALL_CHILD_SCHEMA_PARAM + CLOSE_PARENTHESIS + |
| 290 | SPACE + OPEN_CURLY_BRACKET + NEW_LINE; |
| 291 | |
| 292 | method += |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 293 | getDataFromTempFileHandle(FILTER_CONTENT_MATCH_FOR_NODES_MASK, |
| 294 | ((TempJavaCodeFragmentFilesContainer) curNode) |
| 295 | .getTempJavaCodeFragmentFiles() |
| 296 | .getBeanTempFiles(), path); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 297 | |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 298 | method += |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 299 | EIGHT_SPACE_INDENTATION + RETURN + SPACE + TRUE + SEMI_COLON + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 300 | NEW_LINE + FOUR_SPACE_INDENTATION + |
| 301 | CLOSE_CURLY_BRACKET + NEW_LINE + NEW_LINE; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 302 | YangNode child = curNode.getChild(); |
| 303 | while (child != null) { |
| 304 | if (child instanceof YangChoice) { |
| 305 | method += getChoiceInstanceForPstMethod(child, name); |
| 306 | } |
| 307 | child = child.getNextSibling(); |
| 308 | } |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 309 | |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 310 | return method; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 311 | } |
| 312 | |
| 313 | /** |
| 314 | * Returns is filter content match for leaf list. |
| 315 | * |
| 316 | * @param curNode current node |
| 317 | * @param pluginConfig plugin configurations |
| 318 | * @param path path of temp file |
| 319 | * @return is filter content match for leaf list |
| 320 | */ |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 321 | static String getProcessLeafListSubtreeFiltering(YangNode curNode, |
| 322 | YangPluginConfig |
| 323 | pluginConfig, |
| 324 | String path) |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 325 | throws IOException { |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 326 | JavaFileInfoTranslator javaFileInfo = |
| 327 | ((JavaFileInfoContainer) curNode).getJavaFileInfo(); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 328 | String name = getCapitalCase(javaFileInfo.getJavaName()); |
| 329 | String builderNamePrefix = getCapitalCase(javaFileInfo.getJavaName()); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 330 | |
| 331 | String processSubtreeFilteringMethod = |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 332 | FOUR_SPACE_INDENTATION + PRIVATE + SPACE + BOOLEAN_DATA_TYPE + |
| 333 | SPACE + "processLeafListSubTreeFiltering" + |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 334 | OPEN_PARENTHESIS + name + SPACE + APP_INSTANCE + COMMA + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 335 | SPACE + builderNamePrefix + BUILDER + SPACE + |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 336 | "subTreeFilteringResultBuilder" + COMMA + |
| 337 | " Boolean " + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 338 | "isAnySelectOrContainmentNode, " + "boolean " + |
| 339 | "isSelectAllSchemaChild" + CLOSE_PARENTHESIS + |
| 340 | SPACE + OPEN_CURLY_BRACKET + NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 341 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 342 | processSubtreeFilteringMethod += getDataFromTempFileHandle( |
| 343 | FILTER_CONTENT_MATCH_FOR_LEAF_LIST_MASK, |
| 344 | ((TempJavaCodeFragmentFilesContainer) curNode) |
| 345 | .getTempJavaCodeFragmentFiles() |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 346 | .getBeanTempFiles(), path); |
| 347 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 348 | processSubtreeFilteringMethod += |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 349 | EIGHT_SPACE_INDENTATION + RETURN + SPACE + TRUE + SEMI_COLON + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 350 | NEW_LINE + FOUR_SPACE_INDENTATION + |
| 351 | CLOSE_CURLY_BRACKET + NEW_LINE + NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 352 | |
| 353 | return processSubtreeFilteringMethod; |
| 354 | } |
| 355 | |
| 356 | /** |
| 357 | * Returns is filter content match for leaf. |
| 358 | * |
| 359 | * @param curNode current node |
| 360 | * @param pluginConfig plugin configurations |
| 361 | * @param path path of temp file |
| 362 | * @return is filter content match for leaf |
| 363 | */ |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 364 | static String getProcessLeafSubtreeFiltering(YangNode curNode, |
| 365 | YangPluginConfig pluginConfig, |
| 366 | String path) |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 367 | throws IOException { |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 368 | JavaFileInfoTranslator javaFileInfo = |
| 369 | ((JavaFileInfoContainer) curNode).getJavaFileInfo(); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 370 | String name = getCapitalCase(javaFileInfo.getJavaName()); |
| 371 | String builderNamePrefix = getCapitalCase(javaFileInfo.getJavaName()); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 372 | |
| 373 | String processSubtreeFilteringMethod = |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 374 | FOUR_SPACE_INDENTATION + PRIVATE + SPACE + BOOLEAN_DATA_TYPE + |
| 375 | SPACE + "processLeafSubtreeFiltering" + |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 376 | OPEN_PARENTHESIS + name + SPACE + APP_INSTANCE + COMMA + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 377 | SPACE + builderNamePrefix + BUILDER + SPACE + |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 378 | "subTreeFilteringResultBuilder" + COMMA + |
| 379 | " Boolean " + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 380 | "isAnySelectOrContainmentNode, " + "boolean " + |
| 381 | "isSelectAllSchemaChild" + CLOSE_PARENTHESIS + |
| 382 | SPACE + OPEN_CURLY_BRACKET + NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 383 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 384 | processSubtreeFilteringMethod += |
| 385 | getDataFromTempFileHandle(FILTER_CONTENT_MATCH_FOR_LEAF_MASK, |
| 386 | ((TempJavaCodeFragmentFilesContainer) curNode) |
| 387 | .getTempJavaCodeFragmentFiles() |
| 388 | .getBeanTempFiles(), path); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 389 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 390 | processSubtreeFilteringMethod += |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 391 | EIGHT_SPACE_INDENTATION + RETURN + SPACE + TRUE + SEMI_COLON + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 392 | NEW_LINE + FOUR_SPACE_INDENTATION + |
| 393 | CLOSE_CURLY_BRACKET + NEW_LINE + NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 394 | |
| 395 | return processSubtreeFilteringMethod; |
| 396 | } |
| 397 | |
| 398 | /** |
| 399 | * Returns is filter content match for leaf. |
| 400 | * |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 401 | * @param curNode current node |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 402 | * @return is filter content match for leaf |
| 403 | */ |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 404 | static String getProcessSubtreeFilteringStart(YangNode curNode) { |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 405 | JavaFileInfoTranslator javaFileInfo = |
| 406 | ((JavaFileInfoContainer) curNode).getJavaFileInfo(); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 407 | String instance = APP_INSTANCE; |
| 408 | String name = getCapitalCase(javaFileInfo.getJavaName()); |
| 409 | String builderNamePrefix = getCapitalCase(javaFileInfo.getJavaName()); |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 410 | if (curNode instanceof RpcNotificationContainer) { |
| 411 | name = getCapitalCase(javaFileInfo.getJavaName()) + OP_PARAM; |
| 412 | } else { |
| 413 | name = DEFAULT_CAPS + name; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 414 | } |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 415 | String javadoc = " /**\n" + |
| 416 | " * Checks if the passed " + name + |
| 417 | " maps the content match query condition.\n" + |
| 418 | " *\n" + |
| 419 | " * @param " + instance + SPACE + |
| 420 | instance + SPACE + "being passed to check" + |
| 421 | " for" + |
| 422 | " content match\n" + |
| 423 | " * @param isSelectAllSchemaChild is select all schema child\n" + |
| 424 | " * @return match result\n" + |
| 425 | " */\n"; |
| 426 | |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 427 | String processSubtreeFilteringMethod = |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 428 | javadoc + FOUR_SPACE_INDENTATION + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 429 | PUBLIC + SPACE + name + SPACE + |
| 430 | PROCESS_SUBTREE_FILTERING + OPEN_PARENTHESIS + name + |
| 431 | SPACE + instance + COMMA + SPACE + BOOLEAN_DATA_TYPE + |
| 432 | SPACE + "isSelectAllSchemaChild" + |
| 433 | CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + |
| 434 | NEW_LINE + EIGHT_SPACE_INDENTATION + |
| 435 | builderNamePrefix + BUILDER + SPACE + |
| 436 | SUBTREE_FILTERING_RESULT_BUILDER + SPACE + EQUAL + |
| 437 | SPACE + NEW + SPACE + builderNamePrefix + BUILDER + |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 438 | OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLON + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 439 | NEW_LINE + EIGHT_SPACE_INDENTATION + "Boolean" + SPACE + |
| 440 | IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG + SPACE + |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 441 | EQUAL + SPACE + FALSE + SEMI_COLON + NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 442 | return processSubtreeFilteringMethod; |
| 443 | } |
| 444 | |
| 445 | /** |
| 446 | * Get the body for process subtree filtering. |
| 447 | * |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 448 | * @param curNode node for which the code is being generated |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 449 | * @return body of subtree filtering |
| 450 | */ |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 451 | static String getProcessSubtreeFunctionBody(YangNode curNode) { |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 452 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 453 | String method = ""; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 454 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 455 | if (curNode instanceof YangLeavesHolder) { |
| 456 | if (((YangLeavesHolder) curNode).getListOfLeaf() != null |
| 457 | && |
| 458 | !((YangLeavesHolder) curNode).getListOfLeaf().isEmpty()) { |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 459 | method += |
| 460 | getIfConditionBegin(EIGHT_SPACE_INDENTATION, NOT + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 461 | "processLeafSubtreeFiltering(appInstance, " + |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 462 | "subTreeFilteringResultBuilder, " + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 463 | "isAnySelectOrContainmentNode, " + |
| 464 | "isSelectAllSchemaChild)"); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 465 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 466 | method += TWELVE_SPACE_INDENTATION + RETURN + SPACE + NULL + |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 467 | SEMI_COLON + NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 468 | |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 469 | method += methodClose(EIGHT_SPACE); |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 470 | } |
| 471 | } |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 472 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 473 | if (curNode instanceof YangLeavesHolder) { |
| 474 | if (((YangLeavesHolder) curNode).getListOfLeafList() != null |
| 475 | && |
| 476 | !((YangLeavesHolder) curNode).getListOfLeafList() |
| 477 | .isEmpty()) { |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 478 | method += |
| 479 | getIfConditionBegin(EIGHT_SPACE_INDENTATION, NOT + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 480 | "processLeafListSubTreeFiltering(appInstance," + |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 481 | " subTreeFilteringResultBuilder, " + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 482 | "isAnySelectOrContainmentNode, " + |
| 483 | "isSelectAllSchemaChild)"); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 484 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 485 | method += TWELVE_SPACE_INDENTATION + RETURN + SPACE + NULL + |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 486 | SEMI_COLON + NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 487 | |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 488 | method += methodClose(EIGHT_SPACE); |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 489 | } |
| 490 | } |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 491 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 492 | if (curNode.getChild() != null) { |
| 493 | |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 494 | method += |
| 495 | getIfConditionBegin(EIGHT_SPACE_INDENTATION, NOT + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 496 | "processChildNodesSubTreeFiltering(appInstance, " + |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 497 | "subTreeFilteringResultBuilder, " + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 498 | "isAnySelectOrContainmentNode, " + |
| 499 | "isSelectAllSchemaChild)"); |
| 500 | |
| 501 | method += TWELVE_SPACE_INDENTATION + RETURN + SPACE + NULL + |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 502 | SEMI_COLON + NEW_LINE; |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 503 | |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 504 | method += methodClose(EIGHT_SPACE); |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 505 | } |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 506 | |
| 507 | return method; |
| 508 | } |
| 509 | |
| 510 | /** |
| 511 | * Returns is filter content match for node. |
| 512 | * |
| 513 | * @param attr attribute info |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 514 | * @param node YANG node |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 515 | * @return is filter content match for node |
| 516 | */ |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 517 | public static String getSubtreeFilteringForNode(JavaAttributeInfo attr, |
| 518 | YangNode node) { |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 519 | boolean isList = attr.isListAttr(); |
| 520 | if (isList) { |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 521 | return getSubtreeFilteringForList(attr, false, node); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 522 | } else { |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 523 | return getSubtreeFilteringForChildNode(attr, node); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 524 | } |
| 525 | } |
| 526 | |
| 527 | /** |
| 528 | * Returns is filter content match close. |
| 529 | * |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 530 | * @param name name of class |
| 531 | * @param curNode current node |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 532 | * @return is filter content match close |
| 533 | */ |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 534 | static String getProcessSubTreeFilteringEnd(String name, YangNode curNode) { |
| 535 | String method = getIfConditionBegin(EIGHT_SPACE_INDENTATION, |
| 536 | NOT + IS_SELECT_ALL_SCHEMA_CHILD_FLAG + |
| 537 | SPACE + AND_OPERATION + SPACE + |
| 538 | NOT + |
| 539 | IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 540 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 541 | method += TWELVE_SPACE_INDENTATION + RETURN + SPACE + |
| 542 | PROCESS_SUBTREE_FILTERING + OPEN_PARENTHESIS + APP_INSTANCE + |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 543 | COMMA + SPACE + TRUE + CLOSE_PARENTHESIS + SEMI_COLON + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 544 | NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 545 | |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 546 | method += methodClose(EIGHT_SPACE); |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 547 | String build = BUILD; |
| 548 | if (curNode instanceof YangAugment) { |
| 549 | build = BUILD_FOR_FILTER; |
| 550 | } |
| 551 | method += EIGHT_SPACE_INDENTATION + RETURN + SPACE + getOpenCloseParaWithValue( |
| 552 | name) + SPACE + |
| 553 | SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + build + |
Bharat saraswal | 54e4bab | 2016-10-05 23:32:14 +0530 | [diff] [blame] | 554 | OPEN_CLOSE_BRACKET_STRING + SEMI_COLON + NEW_LINE + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 555 | FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 556 | |
| 557 | return method; |
| 558 | } |
| 559 | |
| 560 | /** |
| 561 | * Returns filter content match for child nodes. |
| 562 | * |
| 563 | * @param javaAttributeInfo attribute to be added |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 564 | * @param node YANG node |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 565 | * @return filter content match for child nodes |
| 566 | */ |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 567 | private static String getSubtreeFilteringForChildNode( |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 568 | JavaAttributeInfo javaAttributeInfo, YangNode node) { |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 569 | String name = javaAttributeInfo.getAttributeName(); |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 570 | String clsInfo = javaAttributeInfo.getImportInfo() |
| 571 | .getClassInfo(); |
| 572 | String type = DEFAULT_CAPS + javaAttributeInfo.getImportInfo() |
| 573 | .getClassInfo(); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 574 | if (javaAttributeInfo.isQualifiedName()) { |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 575 | type = javaAttributeInfo.getImportInfo().getPkgInfo() + PERIOD + |
| 576 | type; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 577 | clsInfo = javaAttributeInfo.getImportInfo().getPkgInfo() + PERIOD + |
| 578 | clsInfo; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 579 | } |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 580 | String classCast = getOpenCloseParaWithValue(type) + SPACE; |
| 581 | String cast = getOpenCloseParaWithValue(classCast + name); |
| 582 | String resultString = cast + |
| 583 | PERIOD + PROCESS_SUBTREE_FILTERING + OPEN_PARENTHESIS |
| 584 | + classCast + |
| 585 | APP_INSTANCE + PERIOD + name + OPEN_CLOSE_BRACKET_STRING |
| 586 | + COMMA + SPACE + FALSE + CLOSE_PARENTHESIS + SEMI_COLON + |
| 587 | NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 588 | |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 589 | if (node != null && node instanceof YangChoice) { |
| 590 | resultString = getReturnStringInCaseOfChoice(node); |
| 591 | } |
| 592 | String method = |
| 593 | getIfConditionBegin(EIGHT_SPACE_INDENTATION, name + "() != " + |
| 594 | "null || isSelectAllSchemaChild"); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 595 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 596 | method += TWELVE_SPACE_INDENTATION + |
| 597 | IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG + SPACE + EQUAL + SPACE + |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 598 | TRUE + SEMI_COLON + NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 599 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 600 | method += TWELVE_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + |
| 601 | APP_INSTANCE + PERIOD + name + OPEN_PARENTHESIS + |
| 602 | CLOSE_PARENTHESIS + SPACE + NOT |
| 603 | + EQUAL + SPACE + NULL + CLOSE_PARENTHESIS + SPACE + |
| 604 | OPEN_CURLY_BRACKET + NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 605 | |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 606 | method += SIXTEEN_SPACE_INDENTATION + clsInfo + SPACE + "result" + |
| 607 | SEMI_COLON + NEW_LINE; |
| 608 | |
| 609 | method += |
| 610 | getIfConditionBegin(SIXTEEN_SPACE_INDENTATION, |
| 611 | "isSelectAllSchemaChild"); |
| 612 | |
| 613 | method += TWENTY_SPACE_INDENTATION + "result" + SPACE + EQUAL + SPACE + |
| 614 | APP_INSTANCE + PERIOD + name + OPEN_PARENTHESIS + |
| 615 | CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE; |
| 616 | |
| 617 | method += SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + SPACE + |
| 618 | ELSE + SPACE + |
| 619 | OPEN_CURLY_BRACKET + NEW_LINE; |
| 620 | |
| 621 | method += TWENTY_SPACE_INDENTATION + "result = " + resultString; |
| 622 | |
| 623 | method += SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 624 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 625 | method += SIXTEEN_SPACE_INDENTATION + "if (result != null) {" + |
| 626 | NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 627 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 628 | method += TWENTY_SPACE_INDENTATION + SUBTREE_FILTERING_RESULT_BUILDER + |
| 629 | PERIOD + name + OPEN_PARENTHESIS + "result" + |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 630 | CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 631 | SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 632 | |
| 633 | //if app instance is not null |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 634 | method += methodClose(TWELVE_SPACE); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 635 | |
| 636 | //if query instance is not null |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 637 | method += methodClose(TWELVE_SPACE); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 638 | |
| 639 | return method; |
| 640 | } |
| 641 | |
| 642 | /** |
| 643 | * Returns filter content match for list types. |
| 644 | * |
| 645 | * @param javaAttributeInfo attribute information |
| 646 | * @param isLeafList if for leaf list |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 647 | * @param node YANG node |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 648 | * @return filter content match for list types |
| 649 | */ |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 650 | private static String getSubtreeFilteringForList( |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 651 | JavaAttributeInfo javaAttributeInfo, boolean isLeafList, |
| 652 | YangNode node) { |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 653 | String capitalCaseName = |
| 654 | getCapitalCase(javaAttributeInfo.getAttributeName()); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 655 | String name = javaAttributeInfo.getAttributeName(); |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 656 | String type = javaAttributeInfo.getImportInfo() |
| 657 | .getClassInfo(); |
| 658 | String clsInfo = DEFAULT_CAPS + type; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 659 | if (javaAttributeInfo.isQualifiedName()) { |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 660 | type = javaAttributeInfo.getImportInfo().getPkgInfo() + PERIOD + |
| 661 | type; |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 662 | clsInfo = javaAttributeInfo.getImportInfo().getPkgInfo() + PERIOD + |
| 663 | clsInfo; |
| 664 | } |
| 665 | |
| 666 | String classCast = getOpenCloseParaWithValue(clsInfo) + SPACE; |
| 667 | String cast = getOpenCloseParaWithValue(classCast + name); |
| 668 | String resultString = cast + PERIOD + |
| 669 | PROCESS_SUBTREE_FILTERING + OPEN_PARENTHESIS + classCast + |
| 670 | name + "2" + COMMA + SPACE + FALSE + CLOSE_PARENTHESIS + SEMI_COLON + |
| 671 | NEW_LINE; |
| 672 | |
| 673 | if (node != null && node instanceof YangChoice) { |
| 674 | resultString = getReturnStringInCaseOfChoice(node); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 675 | } |
| 676 | |
| 677 | /* |
| 678 | * If select all schema child |
| 679 | */ |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 680 | String method = |
| 681 | getIfConditionBegin(EIGHT_SPACE_INDENTATION, |
| 682 | IS_SELECT_ALL_SCHEMA_CHILD_FLAG); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 683 | |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 684 | method = method + getCollectionIteratorForLoopBegin(TWELVE_SPACE_INDENTATION, |
| 685 | type + SPACE + name, |
| 686 | APP_INSTANCE + PERIOD + |
| 687 | name + |
| 688 | OPEN_CLOSE_BRACKET_STRING); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 689 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 690 | method = method + SIXTEEN_SPACE_INDENTATION + |
| 691 | SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + ADD_STRING + |
| 692 | getCapitalCase(TO) + capitalCaseName + OPEN_PARENTHESIS + |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 693 | name + CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 694 | |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 695 | method += methodClose(TWELVE_SPACE); // Close collection Iteration loop |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 696 | |
| 697 | //If need to explicitly participate in query |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 698 | method += getElseIfConditionBegin(EIGHT_SPACE_INDENTATION, |
| 699 | name + OPEN_CLOSE_BRACKET_STRING + |
| 700 | SPACE + NOT + EQUAL + |
| 701 | SPACE + NULL); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 702 | |
| 703 | if (!isLeafList) { |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 704 | method += TWELVE_SPACE_INDENTATION + |
| 705 | IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG + SPACE + EQUAL + |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 706 | SPACE + TRUE + SEMI_COLON + NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 707 | } |
| 708 | |
| 709 | //If there is any parameter in the query condition |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 710 | method += |
| 711 | getIfConditionBegin(TWELVE_SPACE_INDENTATION, NOT + name + |
Bharat saraswal | 54e4bab | 2016-10-05 23:32:14 +0530 | [diff] [blame] | 712 | OPEN_CLOSE_BRACKET_STRING + PERIOD + IS_EMPTY); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 713 | |
| 714 | if (isLeafList) { |
| 715 | /* |
| 716 | * If there is no app instance to perform content match |
| 717 | */ |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 718 | method += |
| 719 | getIfConditionBegin(SIXTEEN_SPACE_INDENTATION, |
| 720 | APP_INSTANCE + PERIOD + name + |
| 721 | OPEN_CLOSE_BRACKET_STRING + |
| 722 | SPACE + EQUAL + EQUAL + SPACE + |
| 723 | NULL + SPACE + OR_OPERATION |
| 724 | + SPACE + APP_INSTANCE + |
| 725 | PERIOD + name + |
| 726 | OPEN_CLOSE_BRACKET_STRING + |
| 727 | PERIOD + IS_EMPTY); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 728 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 729 | method += TWENTY_SPACE_INDENTATION + RETURN + SPACE + FALSE + |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 730 | SEMI_COLON + NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 731 | |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 732 | method += methodClose(SIXTEEN_SPACE); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 733 | |
| 734 | // for instance iterator |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 735 | method += getCollectionIteratorForLoopBegin( |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 736 | SIXTEEN_SPACE_INDENTATION, type + SPACE + name, |
Bharat saraswal | 54e4bab | 2016-10-05 23:32:14 +0530 | [diff] [blame] | 737 | name + OPEN_CLOSE_BRACKET_STRING); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 738 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 739 | method += TWENTY_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE + |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 740 | "flag" + SPACE + EQUAL + SPACE + FALSE + SEMI_COLON + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 741 | NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 742 | |
| 743 | // for app instance iterator |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 744 | method += |
| 745 | getCollectionIteratorForLoopBegin(TWENTY_SPACE_INDENTATION, |
| 746 | type + SPACE + name + |
| 747 | "2", |
| 748 | APP_INSTANCE + PERIOD + |
| 749 | name + |
| 750 | OPEN_CLOSE_BRACKET_STRING); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 751 | |
| 752 | //the content match leaf list attribute value matches |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 753 | method += |
| 754 | getIfConditionBegin(TWENTY_FOUR_SPACE_INDENTATION, |
| 755 | name + PERIOD + EQUALS_STRING |
| 756 | + OPEN_PARENTHESIS + name + |
| 757 | "2" + CLOSE_PARENTHESIS); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 758 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 759 | method += TWENTY_EIGHT_SPACE_INDENTATION + "flag" + SPACE + EQUAL + |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 760 | SPACE + TRUE + SEMI_COLON + NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 761 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 762 | method += TWENTY_EIGHT_SPACE_INDENTATION + |
| 763 | SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + ADD_STRING + |
| 764 | getCapitalCase(TO) + capitalCaseName + OPEN_PARENTHESIS + |
| 765 | name + "2" + CLOSE_PARENTHESIS + |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 766 | SEMI_COLON + NEW_LINE + TWENTY_EIGHT_SPACE_INDENTATION + |
| 767 | BREAK + SEMI_COLON + NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 768 | |
| 769 | //the content match leaf list attribute value matches |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 770 | method += methodClose(TWENTY_FOUR_SPACE); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 771 | |
| 772 | // for app instance iterator |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 773 | method += methodClose(TWENTY_SPACE); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 774 | |
| 775 | //if the content match failed |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 776 | method += |
| 777 | getIfConditionBegin(TWENTY_SPACE_INDENTATION, "!flag"); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 778 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 779 | method += TWENTY_FOUR_SPACE_INDENTATION + RETURN + SPACE + FALSE + |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 780 | SEMI_COLON + NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 781 | |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 782 | method += |
| 783 | methodClose(TWENTY_SPACE); // if flag == false |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 784 | |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 785 | method += methodClose(SIXTEEN_SPACE); // for instance iterator |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 786 | } else { |
| 787 | |
| 788 | /*if there is any app instance entry*/ |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 789 | method += |
| 790 | getIfConditionBegin(SIXTEEN_SPACE_INDENTATION, |
| 791 | APP_INSTANCE + PERIOD + name + |
| 792 | OPEN_CLOSE_BRACKET_STRING + |
| 793 | SPACE + NOT + EQUAL + SPACE + |
| 794 | NULL + SPACE + AND_OPERATION + |
| 795 | SPACE + NOT + APP_INSTANCE + |
| 796 | PERIOD + name + |
| 797 | OPEN_CLOSE_BRACKET_STRING + |
| 798 | PERIOD + IS_EMPTY); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 799 | |
| 800 | /* |
| 801 | * loop all the query condition instance(s) |
| 802 | */ |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 803 | method += |
| 804 | getCollectionIteratorForLoopBegin(TWENTY_SPACE_INDENTATION, |
| 805 | type + SPACE + name, |
| 806 | name + |
| 807 | OPEN_CLOSE_BRACKET_STRING); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 808 | |
| 809 | //loop all the app instance(s) |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 810 | method += getCollectionIteratorForLoopBegin( |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 811 | TWENTY_FOUR_SPACE_INDENTATION, type + SPACE + name + "2", |
| 812 | APP_INSTANCE + PERIOD + name + |
Bharat saraswal | 54e4bab | 2016-10-05 23:32:14 +0530 | [diff] [blame] | 813 | OPEN_CLOSE_BRACKET_STRING); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 814 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 815 | method += TWENTY_EIGHT_SPACE_INDENTATION + type + SPACE + |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 816 | "result = " + resultString; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 817 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 818 | method += TWENTY_EIGHT_SPACE_INDENTATION + "if (result != null) {" + |
| 819 | NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 820 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 821 | method += THIRTY_TWO_SPACE_INDENTATION + |
| 822 | SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + ADD_STRING + |
| 823 | getCapitalCase(TO) + capitalCaseName + OPEN_PARENTHESIS + |
| 824 | "result" + CLOSE_PARENTHESIS + |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 825 | SEMI_COLON + NEW_LINE + TWENTY_EIGHT_SPACE_INDENTATION + |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 826 | CLOSE_CURLY_BRACKET + NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 827 | |
| 828 | //loop all the app instance(s) |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 829 | method += |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 830 | methodClose(TWENTY_FOUR_SPACE); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 831 | |
| 832 | //loop all the query condition instance(s) |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 833 | method += methodClose(TWENTY_SPACE); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 834 | |
| 835 | //if there is any app instance entry |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 836 | method += methodClose(SIXTEEN_SPACE); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 837 | } |
| 838 | |
| 839 | method += TWELVE_SPACE_INDENTATION + "} else {" + NEW_LINE; |
| 840 | |
| 841 | if (isLeafList) { |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 842 | method += SIXTEEN_SPACE_INDENTATION + |
| 843 | IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG + SPACE + |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 844 | EQUAL + SPACE + TRUE + SEMI_COLON + NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 845 | } |
| 846 | |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 847 | method += |
| 848 | getIfConditionBegin(SIXTEEN_SPACE_INDENTATION, |
| 849 | APP_INSTANCE + PERIOD + name |
| 850 | + OPEN_CLOSE_BRACKET_STRING + |
| 851 | SPACE + NOT + EQUAL + SPACE + |
| 852 | NULL + SPACE + AND_OPERATION + |
| 853 | SPACE + NOT + APP_INSTANCE + |
| 854 | PERIOD + name + |
| 855 | OPEN_CLOSE_BRACKET_STRING + |
| 856 | PERIOD + IS_EMPTY); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 857 | |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 858 | method = method + |
| 859 | getCollectionIteratorForLoopBegin(TWENTY_SPACE_INDENTATION, |
| 860 | type + SPACE + name, |
| 861 | APP_INSTANCE + PERIOD + |
| 862 | name + |
| 863 | OPEN_CLOSE_BRACKET_STRING); |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 864 | |
VinodKumarS-Huawei | 8f16422 | 2016-08-31 15:47:30 +0530 | [diff] [blame] | 865 | method = method + TWENTY_FOUR_SPACE_INDENTATION + |
| 866 | SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + ADD_STRING |
| 867 | + getCapitalCase(TO) + capitalCaseName + OPEN_PARENTHESIS + |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 868 | name + CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 869 | |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 870 | method += methodClose(TWENTY_SPACE);// Close collection Iteration loop |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 871 | |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 872 | method += |
| 873 | methodClose(SIXTEEN_SPACE); // close if condition |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 874 | |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 875 | method += |
| 876 | methodClose(TWELVE_SPACE); // close else condition |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 877 | |
Bharat saraswal | 9fab16b | 2016-09-23 23:27:24 +0530 | [diff] [blame] | 878 | method += methodClose(EIGHT_SPACE); // close else if condition |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 879 | |
| 880 | return method; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 881 | } |
| 882 | |
| 883 | //Returns method string for op params augmented syntax |
| 884 | static String getAugmentableSubTreeFiltering() { |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 885 | return " for (Object augmentInfo : this.yangAugmentedInfoMap()" + |
| 886 | ".values()) {\n" + |
| 887 | " Object appInstanceInfo = appInstance.yangAugmentedInfo(" + |
| 888 | "augmentInfo.getClass());\n" + |
| 889 | " if (appInstanceInfo == null) {\n" + |
| 890 | " subTreeFilteringResultBuilder.addYangAugmentedInfo(" + |
| 891 | "augmentInfo, augmentInfo.getClass());\n" + |
| 892 | " } else {\n" + |
| 893 | " Object processSubtreeFiltering;\n" + |
| 894 | " try {\n" + |
| 895 | " Class<?> augmentedClass = augmentInfo" + |
| 896 | ".getClass();\n" + |
| 897 | " processSubtreeFiltering = augmentInfo.getClass()" + |
| 898 | ".getMethod(\"processSubtreeFiltering\", augmentedClass).invoke(" + |
| 899 | "augmentInfo, appInstanceInfo);\n" + |
| 900 | " if (processSubtreeFiltering != null) {\n" + |
| 901 | " subTreeFilteringResultBuilder" + |
| 902 | ".addYangAugmentedInfo(processSubtreeFiltering, processSubtreeFiltering.getClass());\n" + |
| 903 | " }\n" + |
| 904 | " } catch (NoSuchMethodException |" + |
| 905 | " InvocationTargetException | IllegalAccessException e) {\n" + |
| 906 | " continue;\n" + |
| 907 | " }\n" + |
| 908 | " }\n" + |
| 909 | " }\n"; |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 910 | } |
Bharat saraswal | 0663aff | 2016-10-18 23:16:14 +0530 | [diff] [blame^] | 911 | |
| 912 | private static String getMethodBodyForChoicePstMethod( |
| 913 | YangNode node, YangPluginConfig config, YangNode choiceParent, |
| 914 | String choice) { |
| 915 | StringBuilder builder = new StringBuilder(); |
| 916 | JavaCodeGeneratorInfo info = (JavaCodeGeneratorInfo) choiceParent; |
| 917 | JavaFileInfoTranslator pInfo = info.getJavaFileInfo(); |
| 918 | |
| 919 | JavaQualifiedTypeInfoTranslator qInfo = getQualifiedInfo(node, config); |
| 920 | |
| 921 | String castVar = qInfo.getClassInfo(); |
| 922 | boolean qualify = info.getTempJavaCodeFragmentFiles().getBeanTempFiles() |
| 923 | .getJavaImportData().addImportInfo(qInfo, pInfo.getJavaName(), |
| 924 | pInfo.getPackage()); |
| 925 | if (qualify) { |
| 926 | castVar = StringGenerator.getQualifiedString(qInfo.getPkgInfo(), |
| 927 | qInfo.getClassInfo()); |
| 928 | } |
| 929 | String classCast = getOpenCloseParaWithValue(castVar) + SPACE; |
| 930 | String cast = getOpenCloseParaWithValue(classCast + choice); |
| 931 | String retString = cast + PERIOD + PROCESS_SUBTREE_FILTERING + |
| 932 | getOpenCloseParaWithValue(classCast + getAppInstanceAttrString |
| 933 | (choice) + COMMA + SPACE + FALSE); |
| 934 | String cond = choice + INSTANCE_OF + castVar; |
| 935 | builder.append(getIfConditionBegin(EIGHT_SPACE_INDENTATION, cond)) |
| 936 | .append(getReturnString(retString, TWELVE_SPACE_INDENTATION)) |
| 937 | .append(signatureClose()).append(methodClose(EIGHT_SPACE)); |
| 938 | return builder.toString(); |
| 939 | } |
| 940 | |
| 941 | /** |
| 942 | * Returns choice instance for PST method. |
| 943 | * |
| 944 | * @param choice choice node |
| 945 | * @param className class name |
| 946 | * @return choice instance for pst method |
| 947 | */ |
| 948 | private static String getChoiceInstanceForPstMethod(YangNode choice, |
| 949 | String className) { |
| 950 | /* |
| 951 | * private Choice1 getChoice1ResultOfProcessSubTree(Choice1 choice1, Test appInstance) { |
| 952 | * if (choice1 instanceof DefaultCase1) { |
| 953 | * return ((DefaultCase1) choice1).processSubtreeFiltering( |
| 954 | * appInstance.choice1(), false); |
| 955 | * } |
| 956 | * return null; |
| 957 | * } |
| 958 | */ |
| 959 | |
| 960 | JavaFileInfoTranslator info = ((JavaFileInfoContainer) choice).getJavaFileInfo(); |
| 961 | String name = info.getJavaName(); |
| 962 | String caps = getCapitalCase(name); |
| 963 | StringBuilder builder = new StringBuilder(); |
| 964 | String methodName = caps + CHOICE_STF_METHOD_NAME; |
| 965 | Map<String, String> param = new LinkedHashMap<>(); |
| 966 | param.put(name, caps); |
| 967 | param.put(APP_INSTANCE, className); |
| 968 | |
| 969 | builder.append(multiAttrMethodSignature(methodName, GET, PRIVATE, caps, |
| 970 | param, CLASS_TYPE)); |
| 971 | |
| 972 | for (YangNode cases : getChoiceChildNodes((YangChoice) choice)) { |
| 973 | builder.append(getMethodBodyForChoicePstMethod(cases, info.getPluginConfig(), |
| 974 | choice.getParent(), name)); |
| 975 | } |
| 976 | builder.append(getReturnString(NULL, FOUR_SPACE_INDENTATION)) |
| 977 | .append(signatureClose()).append(methodClose(FOUR_SPACE)); |
| 978 | return builder.toString(); |
| 979 | } |
| 980 | |
| 981 | private static String getReturnStringInCaseOfChoice(YangNode choice) { |
| 982 | JavaFileInfoTranslator info = ((JavaFileInfoContainer) choice) |
| 983 | .getJavaFileInfo(); |
| 984 | String name = info.getJavaName(); |
| 985 | String caps = getCapitalCase(name); |
| 986 | String methodName = caps + CHOICE_STF_METHOD_NAME; |
| 987 | return GET + methodName + getOpenCloseParaWithValue( |
| 988 | name + COMMA + SPACE + APP_INSTANCE) + signatureClose(); |
| 989 | } |
| 990 | |
| 991 | static JavaQualifiedTypeInfoTranslator getQualifiedInfo( |
| 992 | YangNode node, YangPluginConfig config) { |
| 993 | JavaFileInfoTranslator fileInfo = ((JavaCodeGeneratorInfo) node) |
| 994 | .getJavaFileInfo(); |
| 995 | String name = fileInfo.getJavaName(); |
| 996 | String pkg = fileInfo.getPackage(); |
| 997 | if (config == null) { |
| 998 | config = new YangPluginConfig(); |
| 999 | } |
| 1000 | if (name == null) { |
| 1001 | name = getCamelCase(node.getName(), config.getConflictResolver()); |
| 1002 | pkg = getNodesPackage(node, config); |
| 1003 | } |
| 1004 | |
| 1005 | name = DEFAULT_CAPS + getCapitalCase(name); |
| 1006 | JavaQualifiedTypeInfoTranslator qInfo = new |
| 1007 | JavaQualifiedTypeInfoTranslator(); |
| 1008 | qInfo.setClassInfo(name); |
| 1009 | qInfo.setPkgInfo(pkg); |
| 1010 | return qInfo; |
| 1011 | } |
| 1012 | |
VinodKumarS-Huawei | 9a91b48 | 2016-08-19 23:22:59 +0530 | [diff] [blame] | 1013 | } |