blob: e7e83f4546f6981bd3fd09b56f51c13662a34d89 [file] [log] [blame]
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +05301/*
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
17package org.onosproject.yangutils.translator.tojava.utils;
18
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053019import org.onosproject.yangutils.datamodel.YangAugment;
20import org.onosproject.yangutils.datamodel.YangCase;
21import org.onosproject.yangutils.datamodel.YangChoice;
22import org.onosproject.yangutils.datamodel.YangLeafRef;
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +053023import org.onosproject.yangutils.datamodel.YangLeavesHolder;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053024import org.onosproject.yangutils.datamodel.YangNode;
25import org.onosproject.yangutils.datamodel.YangType;
26import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
27import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
28import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053029import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053030import org.onosproject.yangutils.utils.io.YangPluginConfig;
31
Bharat saraswal9fab16b2016-09-23 23:27:24 +053032import java.io.IOException;
33
34import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.LEAFREF;
35import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.FILTER_CONTENT_MATCH_FOR_LEAF_LIST_MASK;
36import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.FILTER_CONTENT_MATCH_FOR_LEAF_MASK;
37import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.FILTER_CONTENT_MATCH_FOR_NODES_MASK;
38import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.EIGHT_SPACE;
39import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.SIXTEEN_SPACE;
40import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.TWELVE_SPACE;
41import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.TWENTY_FOUR_SPACE;
42import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.TWENTY_SPACE;
43import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getDataFromTempFileHandle;
44import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.methodClose;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053045import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
46import static org.onosproject.yangutils.utils.UtilConstants.AND_OPERATION;
47import static org.onosproject.yangutils.utils.UtilConstants.APP_INSTANCE;
48import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
49import static org.onosproject.yangutils.utils.UtilConstants.BREAK;
50import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
51import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
52import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
53import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
54import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053055import static org.onosproject.yangutils.utils.UtilConstants.COLON;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053056import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
57import static org.onosproject.yangutils.utils.UtilConstants.CONTINUE;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053058import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053059import static org.onosproject.yangutils.utils.UtilConstants.ELSE;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053060import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_PARAMETER_FUNCTION_CALL;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053061import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
62import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
63import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
64import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
65import static org.onosproject.yangutils.utils.UtilConstants.FOR;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053066import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053067import static org.onosproject.yangutils.utils.UtilConstants.GET_CLASS;
68import static org.onosproject.yangutils.utils.UtilConstants.GET_LEAF_INDEX;
69import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD;
70import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053071import static org.onosproject.yangutils.utils.UtilConstants.GET_SELECT_LEAF_FLAGS;
72import static org.onosproject.yangutils.utils.UtilConstants.GET_VALUE_LEAF_FLAGS;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053073import static org.onosproject.yangutils.utils.UtilConstants.IF;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053074import static org.onosproject.yangutils.utils.UtilConstants.ILLEGAL_ACCESS_EXCEPTION;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053075import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053076import static org.onosproject.yangutils.utils.UtilConstants.INVOCATION_TARGET_EXCEPTION;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053077import static org.onosproject.yangutils.utils.UtilConstants.INVOKE;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053078import static org.onosproject.yangutils.utils.UtilConstants.IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053079import static org.onosproject.yangutils.utils.UtilConstants.IS_EMPTY;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053080import static org.onosproject.yangutils.utils.UtilConstants.IS_SELECT_ALL_SCHEMA_CHILD_FLAG;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053081import static org.onosproject.yangutils.utils.UtilConstants.LEAF_IDENTIFIER;
82import static org.onosproject.yangutils.utils.UtilConstants.MAP;
83import static org.onosproject.yangutils.utils.UtilConstants.NEW;
84import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
85import static org.onosproject.yangutils.utils.UtilConstants.NOT;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053086import static org.onosproject.yangutils.utils.UtilConstants.NO_SUCH_METHOD_EXCEPTION;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053087import static org.onosproject.yangutils.utils.UtilConstants.NULL;
88import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
89import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
90import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
91import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
92import static org.onosproject.yangutils.utils.UtilConstants.OR_OPERATION;
93import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
94import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053095import static org.onosproject.yangutils.utils.UtilConstants.PROCESS_SUBTREE_FILTERING;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053096import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
97import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
98import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053099import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLON;
100import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530101import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530102import static org.onosproject.yangutils.utils.UtilConstants.SUBTREE_FILTERING_RESULT_BUILDER;
103import static org.onosproject.yangutils.utils.UtilConstants.THIRTY_TWO_SPACE_INDENTATION;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530104import static org.onosproject.yangutils.utils.UtilConstants.THIS;
105import static org.onosproject.yangutils.utils.UtilConstants.TO;
106import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
107import static org.onosproject.yangutils.utils.UtilConstants.TRY;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530108import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
109import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_EIGHT_SPACE_INDENTATION;
110import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_FOUR_SPACE_INDENTATION;
111import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_SPACE_INDENTATION;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530112import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
113import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530114import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO_LOWER_CASE;
115import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_OP_PARAM_INFO;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530116import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530117import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530118import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
119
120/**
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530121 * Represents generator for subtree filtering methods of generated files
122 * based on the file type.
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530123 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530124//TODO: improve class to use string generator.
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530125public final class SubtreeFilteringMethodsGenerator {
126
127 /**
128 * private to make it a util.
129 */
130 private SubtreeFilteringMethodsGenerator() {
131 }
132
133 /**
134 * Returns is filter content match for leaf.
135 *
136 * @param javaAttributeInfo java attribute
137 * @param type data type
138 * @return is filter content match for leaf
139 */
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530140 public static String getSubtreeFilteringForLeaf(
141 JavaAttributeInfo javaAttributeInfo, YangType<?> type) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530142 String attrQualifiedType;
143 String attributeName = javaAttributeInfo.getAttributeName();
144 attrQualifiedType = getIfFilterContentMatchMethodImpl(attributeName,
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530145 type);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530146 return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530147 + GET_VALUE_LEAF_FLAGS + EMPTY_PARAMETER_FUNCTION_CALL +
148 PERIOD + GET_METHOD_PREFIX + OPEN_PARENTHESIS +
149 LEAF_IDENTIFIER + PERIOD + attributeName.toUpperCase() +
150 PERIOD + GET_LEAF_INDEX + CLOSE_PARENTHESIS +
151 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
152 TWELVE_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS +
153 attrQualifiedType + CLOSE_PARENTHESIS + SPACE +
154 OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530155 RETURN + SPACE + FALSE + SEMI_COLON + NEW_LINE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530156 TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + SPACE +
157 ELSE + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
158 SIXTEEN_SPACE_INDENTATION +
159 SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + attributeName +
160 OPEN_PARENTHESIS + APP_INSTANCE + PERIOD + attributeName +
161 OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530162 CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530163 TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE +
164 EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + SPACE + ELSE +
165 SPACE + IF + SPACE + OPEN_PARENTHESIS +
166 GET_SELECT_LEAF_FLAGS + EMPTY_PARAMETER_FUNCTION_CALL +
167 PERIOD + GET_METHOD_PREFIX + OPEN_PARENTHESIS +
168 LEAF_IDENTIFIER + PERIOD + attributeName.toUpperCase() +
169 PERIOD + GET_LEAF_INDEX + CLOSE_PARENTHESIS + SPACE +
170 OR_OPERATION + SPACE + IS_SELECT_ALL_SCHEMA_CHILD_FLAG +
171 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
172 TWELVE_SPACE_INDENTATION +
173 IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG + SPACE + EQUAL +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530174 SPACE + TRUE + SEMI_COLON + NEW_LINE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530175 TWELVE_SPACE_INDENTATION + SUBTREE_FILTERING_RESULT_BUILDER +
176 PERIOD + attributeName + OPEN_PARENTHESIS + APP_INSTANCE +
177 PERIOD + attributeName + EMPTY_PARAMETER_FUNCTION_CALL +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530178 CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530179 EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530180 }
181
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530182 private static String getAttrTypeForFilterContentMatchWhenPrimitiveDataType(
183 String attributeName) {
184 return/* TODO: Need to check if we can expose the value leaf flag in
185 interface.
186 NOT + APP_INSTANCE + PERIOD + GET_VALUE_LEAF_FLAGS +
187 OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
188 GET_METHOD_PREFIX + OPEN_PARENTHESIS + LEAF_IDENTIFIER +
189 PERIOD + attributeName.toUpperCase() + PERIOD
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530190 + GET_LEAF_INDEX + OR_OPERATION +*/
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530191 APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS +
192 CLOSE_PARENTHESIS + SPACE + NOT + EQUAL + SPACE +
193 attributeName + OPEN_PARENTHESIS +
194 CLOSE_PARENTHESIS;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530195 }
196
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530197 private static String
198 getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(
199 String attributeName) {
200 return APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS +
201 CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + SPACE + NULL +
202 SPACE + OR_OPERATION + SPACE + NOT + OPEN_PARENTHESIS +
203 attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
204 PERIOD + EQUALS_STRING + OPEN_PARENTHESIS + APP_INSTANCE +
205 PERIOD + attributeName + OPEN_PARENTHESIS +
206 CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530207 }
208
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530209 private static String getIfFilterContentMatchMethodImpl(
210 String attributeName,
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530211 YangType dataType) {
212 String attrQualifiedType;
213
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530214 if (StringGenerator.isPrimitiveDataType(dataType.getDataType())) {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530215 attrQualifiedType =
216 getAttrTypeForFilterContentMatchWhenPrimitiveDataType(
217 attributeName);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530218 } else if (dataType.getDataType() == LEAFREF) {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530219 YangType type = ((YangLeafRef) dataType.getDataTypeExtendedInfo())
220 .getEffectiveDataType();
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530221 if (StringGenerator.isPrimitiveDataType(type.getDataType())) {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530222 attrQualifiedType =
223 getAttrTypeForFilterContentMatchWhenPrimitiveDataType(
224 attributeName);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530225 } else {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530226 attrQualifiedType =
227 getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(
228 attributeName);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530229 }
230 } else {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530231 attrQualifiedType =
232 getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(
233 attributeName);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530234 }
235
236 return attrQualifiedType;
237 }
238
239 /**
240 * Returns is filter content match for leaf.
241 *
242 * @param javaAttributeInfo java attribute
243 * @return is filter content match for leaf
244 */
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530245 public static String getSubtreeFilteringForLeafList(
246 JavaAttributeInfo javaAttributeInfo) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530247 return getSubtreeFilteringForList(javaAttributeInfo, true);
248 }
249
250 /**
251 * Returns is filter content match for child node.
252 *
253 * @param curNode current node
254 * @param pluginConfig plugin configurations
255 * @param path path of temp file
256 * @return is filter content match for child node
257 */
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530258 static String getProcessChildNodeSubtreeFiltering(YangNode curNode,
259 YangPluginConfig
260 pluginConfig,
261 String path)
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530262 throws IOException {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530263 JavaFileInfoTranslator javaFileInfo =
264 ((JavaFileInfoContainer) curNode).getJavaFileInfo();
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530265 JavaFileInfoTranslator parentInfo;
266
267 String instance = APP_INSTANCE;
268 String name = getCapitalCase(javaFileInfo.getJavaName());
269 String builderNamePrefix = getCapitalCase(javaFileInfo.getJavaName());
270 if (curNode instanceof YangCase) {
271 instance = INSTANCE;
272 YangNode parent = curNode.getParent();
273 if (parent instanceof YangChoice) {
274 parentInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo();
275 name = getCapitalCase(parentInfo.getJavaName());
276 } else if (parent instanceof YangAugment) {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530277 parentInfo = ((JavaFileInfoContainer) ((YangAugment) parent)
278 .getAugmentedNode()).getJavaFileInfo();
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530279 if (parentInfo != null) {
280 name = getCapitalCase(parentInfo.getJavaName());
281 } else {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530282 name = getCapitalCase(getCamelCase(
283 ((YangAugment) parent).getAugmentedNode().getName(),
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530284 pluginConfig.getConflictResolver()));
285 }
286 }
287 }
288
289 String processSubtreeFilteringMethod =
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530290 FOUR_SPACE_INDENTATION + PRIVATE + SPACE + BOOLEAN_DATA_TYPE +
291 SPACE + "processChildNodesSubTreeFiltering" +
292 OPEN_PARENTHESIS + name + SPACE + instance + COMMA +
293 SPACE + builderNamePrefix + BUILDER + SPACE +
294 "subTreeFilteringResultBuilder" + COMMA + NEW_LINE +
295 TWELVE_SPACE_INDENTATION + "Boolean " +
296 "isAnySelectOrContainmentNode, " + "boolean " +
297 "isSelectAllSchemaChild" + CLOSE_PARENTHESIS +
298 SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530299
300 if (curNode instanceof YangCase) {
301 String caseName = getCapitalCase(javaFileInfo.getJavaName());
302 processSubtreeFilteringMethod =
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530303 processSubtreeFilteringMethod + EIGHT_SPACE_INDENTATION +
304 caseName + SPACE + APP_INSTANCE + SPACE +
305 EQUAL + SPACE + OPEN_PARENTHESIS + caseName +
306 CLOSE_PARENTHESIS + SPACE + instance +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530307 SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530308 }
309
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530310 processSubtreeFilteringMethod +=
311 getDataFromTempFileHandle(FILTER_CONTENT_MATCH_FOR_NODES_MASK,
312 ((TempJavaCodeFragmentFilesContainer) curNode)
313 .getTempJavaCodeFragmentFiles()
314 .getBeanTempFiles(), path);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530315
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530316 processSubtreeFilteringMethod +=
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530317 EIGHT_SPACE_INDENTATION + RETURN + SPACE + TRUE + SEMI_COLON +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530318 NEW_LINE + FOUR_SPACE_INDENTATION +
319 CLOSE_CURLY_BRACKET + NEW_LINE + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530320
321 return processSubtreeFilteringMethod;
322 }
323
324 /**
325 * Returns is filter content match for leaf list.
326 *
327 * @param curNode current node
328 * @param pluginConfig plugin configurations
329 * @param path path of temp file
330 * @return is filter content match for leaf list
331 */
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530332 static String getProcessLeafListSubtreeFiltering(YangNode curNode,
333 YangPluginConfig
334 pluginConfig,
335 String path)
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530336 throws IOException {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530337 JavaFileInfoTranslator javaFileInfo =
338 ((JavaFileInfoContainer) curNode).getJavaFileInfo();
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530339 JavaFileInfoTranslator parentInfo;
340
341 String instance = APP_INSTANCE;
342 String name = getCapitalCase(javaFileInfo.getJavaName());
343 String builderNamePrefix = getCapitalCase(javaFileInfo.getJavaName());
344 if (curNode instanceof YangCase) {
345 instance = INSTANCE;
346 YangNode parent = curNode.getParent();
347 if (parent instanceof YangChoice) {
348 parentInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo();
349 name = getCapitalCase(parentInfo.getJavaName());
350 } else if (parent instanceof YangAugment) {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530351 parentInfo = ((JavaFileInfoContainer) ((YangAugment) parent)
352 .getAugmentedNode()).getJavaFileInfo();
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530353 if (parentInfo != null) {
354 name = getCapitalCase(parentInfo.getJavaName());
355 } else {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530356 name = getCapitalCase(getCamelCase(
357 ((YangAugment) parent).getAugmentedNode().getName(),
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530358 pluginConfig.getConflictResolver()));
359 }
360 }
361 }
362
363 String processSubtreeFilteringMethod =
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530364 FOUR_SPACE_INDENTATION + PRIVATE + SPACE + BOOLEAN_DATA_TYPE +
365 SPACE + "processLeafListSubTreeFiltering" +
366 OPEN_PARENTHESIS + name + SPACE + instance + COMMA +
367 SPACE + builderNamePrefix + BUILDER + SPACE +
368 "subTreeFilteringResultBuilder" + COMMA + NEW_LINE +
369 TWELVE_SPACE_INDENTATION + "Boolean " +
370 "isAnySelectOrContainmentNode, " + "boolean " +
371 "isSelectAllSchemaChild" + CLOSE_PARENTHESIS +
372 SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530373
374 if (curNode instanceof YangCase) {
375 String caseName = getCapitalCase(javaFileInfo.getJavaName());
376 processSubtreeFilteringMethod =
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530377 processSubtreeFilteringMethod + EIGHT_SPACE_INDENTATION +
378 caseName + SPACE + APP_INSTANCE + SPACE +
379 EQUAL + SPACE + OPEN_PARENTHESIS + caseName +
380 CLOSE_PARENTHESIS + SPACE + instance +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530381 SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530382 }
383
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530384 processSubtreeFilteringMethod += getDataFromTempFileHandle(
385 FILTER_CONTENT_MATCH_FOR_LEAF_LIST_MASK,
386 ((TempJavaCodeFragmentFilesContainer) curNode)
387 .getTempJavaCodeFragmentFiles()
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530388 .getBeanTempFiles(), path);
389
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530390 processSubtreeFilteringMethod +=
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530391 EIGHT_SPACE_INDENTATION + RETURN + SPACE + TRUE + SEMI_COLON +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530392 NEW_LINE + FOUR_SPACE_INDENTATION +
393 CLOSE_CURLY_BRACKET + NEW_LINE + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530394
395 return processSubtreeFilteringMethod;
396 }
397
398 /**
399 * Returns is filter content match for leaf.
400 *
401 * @param curNode current node
402 * @param pluginConfig plugin configurations
403 * @param path path of temp file
404 * @return is filter content match for leaf
405 */
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530406 static String getProcessLeafSubtreeFiltering(YangNode curNode,
407 YangPluginConfig pluginConfig,
408 String path)
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530409 throws IOException {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530410 JavaFileInfoTranslator javaFileInfo =
411 ((JavaFileInfoContainer) curNode).getJavaFileInfo();
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530412 JavaFileInfoTranslator parentInfo;
413
414 String instance = APP_INSTANCE;
415 String name = getCapitalCase(javaFileInfo.getJavaName());
416 String builderNamePrefix = getCapitalCase(javaFileInfo.getJavaName());
417 if (curNode instanceof YangCase) {
418 instance = INSTANCE;
419 YangNode parent = curNode.getParent();
420 if (parent instanceof YangChoice) {
421 parentInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo();
422 name = getCapitalCase(parentInfo.getJavaName());
423 } else if (parent instanceof YangAugment) {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530424 parentInfo = ((JavaFileInfoContainer) ((YangAugment) parent)
425 .getAugmentedNode()).getJavaFileInfo();
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530426 if (parentInfo != null) {
427 name = getCapitalCase(parentInfo.getJavaName());
428 } else {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530429 name = getCapitalCase(getCamelCase(
430 ((YangAugment) parent).getAugmentedNode().getName(),
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530431 pluginConfig.getConflictResolver()));
432 }
433 }
434 }
435
436 String processSubtreeFilteringMethod =
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530437 FOUR_SPACE_INDENTATION + PRIVATE + SPACE + BOOLEAN_DATA_TYPE +
438 SPACE + "processLeafSubtreeFiltering" +
439 OPEN_PARENTHESIS + name + SPACE + instance + COMMA +
440 SPACE + builderNamePrefix + BUILDER + SPACE +
441 "subTreeFilteringResultBuilder" + COMMA + NEW_LINE
442 + TWELVE_SPACE_INDENTATION + "Boolean " +
443 "isAnySelectOrContainmentNode, " + "boolean " +
444 "isSelectAllSchemaChild" + CLOSE_PARENTHESIS +
445 SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530446
447 if (curNode instanceof YangCase) {
448 String caseName = getCapitalCase(javaFileInfo.getJavaName());
449 processSubtreeFilteringMethod =
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530450 processSubtreeFilteringMethod + EIGHT_SPACE_INDENTATION +
451 caseName + SPACE + APP_INSTANCE + SPACE +
452 EQUAL + SPACE + OPEN_PARENTHESIS + caseName +
453 CLOSE_PARENTHESIS + SPACE + instance +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530454 SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530455 }
456
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530457 processSubtreeFilteringMethod +=
458 getDataFromTempFileHandle(FILTER_CONTENT_MATCH_FOR_LEAF_MASK,
459 ((TempJavaCodeFragmentFilesContainer) curNode)
460 .getTempJavaCodeFragmentFiles()
461 .getBeanTempFiles(), path);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530462
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530463 processSubtreeFilteringMethod +=
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530464 EIGHT_SPACE_INDENTATION + RETURN + SPACE + TRUE + SEMI_COLON +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530465 NEW_LINE + FOUR_SPACE_INDENTATION +
466 CLOSE_CURLY_BRACKET + NEW_LINE + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530467
468 return processSubtreeFilteringMethod;
469 }
470
471 /**
472 * Returns is filter content match for leaf.
473 *
474 * @param curNode current node
475 * @param pluginConfig plugin configurations
476 * @return is filter content match for leaf
477 */
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530478 static String getProcessSubtreeFilteringStart(YangNode curNode,
479 YangPluginConfig
480 pluginConfig) {
481 JavaFileInfoTranslator javaFileInfo =
482 ((JavaFileInfoContainer) curNode).getJavaFileInfo();
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530483 JavaFileInfoTranslator parentInfo;
484
485 String instance = APP_INSTANCE;
486 String name = getCapitalCase(javaFileInfo.getJavaName());
487 String builderNamePrefix = getCapitalCase(javaFileInfo.getJavaName());
488 if (curNode instanceof YangCase) {
489 instance = INSTANCE;
490 YangNode parent = curNode.getParent();
491 if (parent instanceof YangChoice) {
492 parentInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo();
493 name = getCapitalCase(parentInfo.getJavaName());
494 } else if (parent instanceof YangAugment) {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530495 parentInfo = ((JavaFileInfoContainer) ((YangAugment) parent)
496 .getAugmentedNode()).getJavaFileInfo();
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530497 if (parentInfo != null) {
498 name = getCapitalCase(parentInfo.getJavaName());
499 } else {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530500 name = getCapitalCase(getCamelCase(
501 ((YangAugment) parent).getAugmentedNode().getName(),
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530502 pluginConfig.getConflictResolver()));
503 }
504 }
505 }
506 String processSubtreeFilteringMethod =
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530507 StringGenerator.getOverRideString() + FOUR_SPACE_INDENTATION +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530508 PUBLIC + SPACE + name + SPACE +
509 PROCESS_SUBTREE_FILTERING + OPEN_PARENTHESIS + name +
510 SPACE + instance + COMMA + SPACE + BOOLEAN_DATA_TYPE +
511 SPACE + "isSelectAllSchemaChild" +
512 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
513 NEW_LINE + EIGHT_SPACE_INDENTATION +
514 builderNamePrefix + BUILDER + SPACE +
515 SUBTREE_FILTERING_RESULT_BUILDER + SPACE + EQUAL +
516 SPACE + NEW + SPACE + builderNamePrefix + BUILDER +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530517 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLON +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530518 NEW_LINE + EIGHT_SPACE_INDENTATION + "Boolean" + SPACE +
519 IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG + SPACE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530520 EQUAL + SPACE + FALSE + SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530521
522 if (curNode instanceof YangCase) {
523 String caseName = getCapitalCase(javaFileInfo.getJavaName());
524 processSubtreeFilteringMethod =
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530525 processSubtreeFilteringMethod + EIGHT_SPACE_INDENTATION +
526 caseName + SPACE + APP_INSTANCE + SPACE +
527 EQUAL + SPACE + OPEN_PARENTHESIS + caseName +
528 CLOSE_PARENTHESIS + SPACE + instance +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530529 SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530530 }
531
532 return processSubtreeFilteringMethod;
533 }
534
535 /**
536 * Get the body for process subtree filtering.
537 *
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530538 * @param curNode node for which the code is being generated
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530539 * @return body of subtree filtering
540 */
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530541 static String getProcessSubtreeFunctionBody(YangNode curNode) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530542
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530543 String method = "";
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530544
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530545 if (curNode instanceof YangLeavesHolder) {
546 if (((YangLeavesHolder) curNode).getListOfLeaf() != null
547 &&
548 !((YangLeavesHolder) curNode).getListOfLeaf().isEmpty()) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530549 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530550 .getIfConditionBegin(EIGHT_SPACE_INDENTATION, NOT +
551 "processLeafSubtreeFiltering(appInstance, " +
552 "subTreeFilteringResultBuilder," + NEW_LINE +
553 TWELVE_SPACE_INDENTATION +
554 "isAnySelectOrContainmentNode, " +
555 "isSelectAllSchemaChild)");
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530556
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530557 method += TWELVE_SPACE_INDENTATION + RETURN + SPACE + NULL +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530558 SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530559
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530560 method += methodClose(EIGHT_SPACE);
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530561 }
562 }
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530563
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530564 if (curNode instanceof YangLeavesHolder) {
565 if (((YangLeavesHolder) curNode).getListOfLeafList() != null
566 &&
567 !((YangLeavesHolder) curNode).getListOfLeafList()
568 .isEmpty()) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530569 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530570 .getIfConditionBegin(EIGHT_SPACE_INDENTATION, NOT +
571 "processLeafListSubTreeFiltering(appInstance," +
572 " subTreeFilteringResultBuilder," + NEW_LINE
573 + TWELVE_SPACE_INDENTATION +
574 "isAnySelectOrContainmentNode, " +
575 "isSelectAllSchemaChild)");
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530576
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530577 method += TWELVE_SPACE_INDENTATION + RETURN + SPACE + NULL +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530578 SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530579
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530580 method += methodClose(EIGHT_SPACE);
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530581 }
582 }
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530583
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530584 if (curNode.getChild() != null) {
585
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530586 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530587 .getIfConditionBegin(EIGHT_SPACE_INDENTATION, NOT +
588 "processChildNodesSubTreeFiltering(appInstance, " +
589 "subTreeFilteringResultBuilder," + NEW_LINE +
590 TWELVE_SPACE_INDENTATION +
591 "isAnySelectOrContainmentNode, " +
592 "isSelectAllSchemaChild)");
593
594 method += TWELVE_SPACE_INDENTATION + RETURN + SPACE + NULL +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530595 SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530596
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530597 method += methodClose(EIGHT_SPACE);
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530598 }
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530599
600 return method;
601 }
602
603 /**
604 * Returns is filter content match for node.
605 *
606 * @param attr attribute info
607 * @return is filter content match for node
608 */
609 public static String getSubtreeFilteringForNode(JavaAttributeInfo attr) {
610 boolean isList = attr.isListAttr();
611 if (isList) {
612 return getSubtreeFilteringForList(attr, false);
613 } else {
614 return getSubtreeFilteringForChildNode(attr);
615 }
616 }
617
618 /**
619 * Returns is filter content match close.
620 *
621 * @return is filter content match close
622 */
623 static String getProcessSubTreeFilteringEnd() {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530624 String method = StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530625 .getIfConditionBegin(EIGHT_SPACE_INDENTATION,
626 NOT + IS_SELECT_ALL_SCHEMA_CHILD_FLAG +
627 SPACE + AND_OPERATION + SPACE +
628 NOT +
629 IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530630
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530631 method += TWELVE_SPACE_INDENTATION + RETURN + SPACE +
632 PROCESS_SUBTREE_FILTERING + OPEN_PARENTHESIS + APP_INSTANCE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530633 COMMA + SPACE + TRUE + CLOSE_PARENTHESIS + SEMI_COLON +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530634 NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530635
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530636 method += methodClose(EIGHT_SPACE);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530637
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530638 method += EIGHT_SPACE_INDENTATION + RETURN + SPACE +
639 SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + BUILD +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530640 EMPTY_PARAMETER_FUNCTION_CALL + SEMI_COLON + NEW_LINE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530641 FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530642
643 return method;
644 }
645
646 /**
647 * Returns filter content match for child nodes.
648 *
649 * @param javaAttributeInfo attribute to be added
650 * @return filter content match for child nodes
651 */
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530652 private static String getSubtreeFilteringForChildNode(
653 JavaAttributeInfo javaAttributeInfo) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530654 String name = javaAttributeInfo.getAttributeName();
655 name = getSmallCase(name);
656 String type = javaAttributeInfo.getImportInfo().getClassInfo();
657 if (javaAttributeInfo.isQualifiedName()) {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530658 type = javaAttributeInfo.getImportInfo().getPkgInfo() + PERIOD +
659 type;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530660 }
661
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530662 String method = StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530663 .getIfConditionBegin(EIGHT_SPACE_INDENTATION, name + "() != " +
664 "null");
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530665
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530666 method += TWELVE_SPACE_INDENTATION +
667 IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG + SPACE + EQUAL + SPACE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530668 TRUE + SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530669
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530670 method += TWELVE_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS +
671 APP_INSTANCE + PERIOD + name + OPEN_PARENTHESIS +
672 CLOSE_PARENTHESIS + SPACE + NOT
673 + EQUAL + SPACE + NULL + CLOSE_PARENTHESIS + SPACE +
674 OPEN_CURLY_BRACKET + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530675
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530676 method += SIXTEEN_SPACE_INDENTATION + type + SPACE + "result = " +
677 name + PERIOD + PROCESS_SUBTREE_FILTERING + OPEN_PARENTHESIS +
678 APP_INSTANCE + PERIOD + name + EMPTY_PARAMETER_FUNCTION_CALL
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530679 + COMMA + SPACE + FALSE + CLOSE_PARENTHESIS + SEMI_COLON +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530680 NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530681
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530682 method += SIXTEEN_SPACE_INDENTATION + "if (result != null) {" +
683 NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530684
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530685 method += TWENTY_SPACE_INDENTATION + SUBTREE_FILTERING_RESULT_BUILDER +
686 PERIOD + name + OPEN_PARENTHESIS + "result" +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530687 CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530688 SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530689
690 //if app instance is not null
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530691 method += methodClose(TWELVE_SPACE);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530692
693 //if query instance is not null
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530694 method += methodClose(TWELVE_SPACE);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530695
696 return method;
697 }
698
699 /**
700 * Returns filter content match for list types.
701 *
702 * @param javaAttributeInfo attribute information
703 * @param isLeafList if for leaf list
704 * @return filter content match for list types
705 */
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530706 private static String getSubtreeFilteringForList(
707 JavaAttributeInfo javaAttributeInfo, boolean isLeafList) {
708 String capitalCaseName =
709 getCapitalCase(javaAttributeInfo.getAttributeName());
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530710 String name = javaAttributeInfo.getAttributeName();
711 String type = javaAttributeInfo.getImportInfo().getClassInfo();
712 if (javaAttributeInfo.isQualifiedName()) {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530713 type = javaAttributeInfo.getImportInfo().getPkgInfo() + PERIOD +
714 type;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530715 }
716
717 /*
718 * If select all schema child
719 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530720 String method = StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530721 .getIfConditionBegin(EIGHT_SPACE_INDENTATION,
722 IS_SELECT_ALL_SCHEMA_CHILD_FLAG);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530723
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530724 method = method + StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530725 .getCollectionIteratorForLoopBegin(TWELVE_SPACE_INDENTATION,
726 type + SPACE + name,
727 APP_INSTANCE + PERIOD +
728 name +
729 EMPTY_PARAMETER_FUNCTION_CALL);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530730
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530731 method = method + SIXTEEN_SPACE_INDENTATION +
732 SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + ADD_STRING +
733 getCapitalCase(TO) + capitalCaseName + OPEN_PARENTHESIS +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530734 name + CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530735
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530736 method += methodClose(TWELVE_SPACE); // Close collection Iteration loop
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530737
738 //If need to explicitly participate in query
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530739 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530740 .getElseIfConditionBegin(EIGHT_SPACE_INDENTATION,
741 name + EMPTY_PARAMETER_FUNCTION_CALL +
742 SPACE + NOT + EQUAL +
743 SPACE + NULL);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530744
745 if (!isLeafList) {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530746 method += TWELVE_SPACE_INDENTATION +
747 IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG + SPACE + EQUAL +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530748 SPACE + TRUE + SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530749 }
750
751 //If there is any parameter in the query condition
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530752 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530753 .getIfConditionBegin(TWELVE_SPACE_INDENTATION, NOT + name +
754 EMPTY_PARAMETER_FUNCTION_CALL + PERIOD + IS_EMPTY);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530755
756 if (isLeafList) {
757 /*
758 * If there is no app instance to perform content match
759 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530760 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530761 .getIfConditionBegin(SIXTEEN_SPACE_INDENTATION,
762 APP_INSTANCE + PERIOD + name +
763 EMPTY_PARAMETER_FUNCTION_CALL +
764 SPACE + EQUAL + EQUAL + SPACE +
765 NULL + SPACE + OR_OPERATION
766 + SPACE + APP_INSTANCE +
767 PERIOD + name +
768 EMPTY_PARAMETER_FUNCTION_CALL +
769 PERIOD + IS_EMPTY);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530770
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530771 method += TWENTY_SPACE_INDENTATION + RETURN + SPACE + FALSE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530772 SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530773
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530774 method += methodClose(SIXTEEN_SPACE);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530775
776 // for instance iterator
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530777 method += StringGenerator.getCollectionIteratorForLoopBegin(
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530778 SIXTEEN_SPACE_INDENTATION, type + SPACE + name,
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530779 name + EMPTY_PARAMETER_FUNCTION_CALL);
780
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530781 method += TWENTY_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530782 "flag" + SPACE + EQUAL + SPACE + FALSE + SEMI_COLON +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530783 NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530784
785 // for app instance iterator
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530786 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530787 .getCollectionIteratorForLoopBegin(TWENTY_SPACE_INDENTATION,
788 type + SPACE + name +
789 "2",
790 APP_INSTANCE + PERIOD +
791 name +
792 EMPTY_PARAMETER_FUNCTION_CALL);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530793
794 //the content match leaf list attribute value matches
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530795 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530796 .getIfConditionBegin(TWENTY_FOUR_SPACE_INDENTATION,
797 name + PERIOD + EQUALS_STRING
798 + OPEN_PARENTHESIS + name +
799 "2" + CLOSE_PARENTHESIS);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530800
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530801 method += TWENTY_EIGHT_SPACE_INDENTATION + "flag" + SPACE + EQUAL +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530802 SPACE + TRUE + SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530803
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530804 method += TWENTY_EIGHT_SPACE_INDENTATION +
805 SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + ADD_STRING +
806 getCapitalCase(TO) + capitalCaseName + OPEN_PARENTHESIS +
807 name + "2" + CLOSE_PARENTHESIS +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530808 SEMI_COLON + NEW_LINE + TWENTY_EIGHT_SPACE_INDENTATION +
809 BREAK + SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530810
811 //the content match leaf list attribute value matches
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530812 method += methodClose(TWENTY_FOUR_SPACE);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530813
814 // for app instance iterator
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530815 method += methodClose(TWENTY_SPACE);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530816
817 //if the content match failed
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530818 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530819 .getIfConditionBegin(TWENTY_SPACE_INDENTATION, "!flag");
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530820
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530821 method += TWENTY_FOUR_SPACE_INDENTATION + RETURN + SPACE + FALSE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530822 SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530823
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530824 method +=
825 methodClose(TWENTY_SPACE); // if flag == false
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530826
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530827 method += methodClose(SIXTEEN_SPACE); // for instance iterator
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530828 } else {
829
830 /*if there is any app instance entry*/
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530831 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530832 .getIfConditionBegin(SIXTEEN_SPACE_INDENTATION,
833 APP_INSTANCE + PERIOD + name +
834 EMPTY_PARAMETER_FUNCTION_CALL +
835 SPACE + NOT + EQUAL + SPACE +
836 NULL + SPACE + AND_OPERATION +
837 SPACE + NOT + APP_INSTANCE +
838 PERIOD + name +
839 EMPTY_PARAMETER_FUNCTION_CALL +
840 PERIOD + IS_EMPTY);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530841
842 /*
843 * loop all the query condition instance(s)
844 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530845 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530846 .getCollectionIteratorForLoopBegin(TWENTY_SPACE_INDENTATION,
847 type + SPACE + name,
848 name +
849 EMPTY_PARAMETER_FUNCTION_CALL);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530850
851 //loop all the app instance(s)
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530852 method += StringGenerator.getCollectionIteratorForLoopBegin(
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530853 TWENTY_FOUR_SPACE_INDENTATION, type + SPACE + name + "2",
854 APP_INSTANCE + PERIOD + name +
855 EMPTY_PARAMETER_FUNCTION_CALL);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530856
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530857 method += TWENTY_EIGHT_SPACE_INDENTATION + type + SPACE +
858 "result = " + name + PERIOD +
859 PROCESS_SUBTREE_FILTERING + OPEN_PARENTHESIS + name + "2" +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530860 COMMA + SPACE + FALSE + CLOSE_PARENTHESIS + SEMI_COLON +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530861 NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530862
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530863 method += TWENTY_EIGHT_SPACE_INDENTATION + "if (result != null) {" +
864 NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530865
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530866 method += THIRTY_TWO_SPACE_INDENTATION +
867 SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + ADD_STRING +
868 getCapitalCase(TO) + capitalCaseName + OPEN_PARENTHESIS +
869 "result" + CLOSE_PARENTHESIS +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530870 SEMI_COLON + NEW_LINE + TWENTY_EIGHT_SPACE_INDENTATION +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530871 CLOSE_CURLY_BRACKET + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530872
873 //loop all the app instance(s)
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530874 method +=
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530875 methodClose(TWENTY_FOUR_SPACE);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530876
877 //loop all the query condition instance(s)
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530878 method += methodClose(TWENTY_SPACE);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530879
880 //if there is any app instance entry
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530881 method += methodClose(SIXTEEN_SPACE);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530882 }
883
884 method += TWELVE_SPACE_INDENTATION + "} else {" + NEW_LINE;
885
886 if (isLeafList) {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530887 method += SIXTEEN_SPACE_INDENTATION +
888 IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG + SPACE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530889 EQUAL + SPACE + TRUE + SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530890 }
891
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530892 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530893 .getIfConditionBegin(SIXTEEN_SPACE_INDENTATION,
894 APP_INSTANCE + PERIOD + name
895 + EMPTY_PARAMETER_FUNCTION_CALL +
896 SPACE + NOT + EQUAL + SPACE +
897 NULL + SPACE + AND_OPERATION +
898 SPACE + NOT + APP_INSTANCE +
899 PERIOD + name +
900 EMPTY_PARAMETER_FUNCTION_CALL +
901 PERIOD + IS_EMPTY);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530902
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530903 method = method + StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530904 .getCollectionIteratorForLoopBegin(TWENTY_SPACE_INDENTATION,
905 type + SPACE + name,
906 APP_INSTANCE + PERIOD +
907 name +
908 EMPTY_PARAMETER_FUNCTION_CALL);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530909
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530910 method = method + TWENTY_FOUR_SPACE_INDENTATION +
911 SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + ADD_STRING
912 + getCapitalCase(TO) + capitalCaseName + OPEN_PARENTHESIS +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530913 name + CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530914
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530915 method += methodClose(TWENTY_SPACE);// Close collection Iteration loop
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530916
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530917 method +=
918 methodClose(SIXTEEN_SPACE); // close if condition
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530919
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530920 method +=
921 methodClose(TWELVE_SPACE); // close else condition
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530922
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530923 method += methodClose(EIGHT_SPACE); // close else if condition
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530924
925 return method;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530926 }
927
928 //Returns method string for op params augmented syntax
929 static String getAugmentableSubTreeFiltering() {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530930 return EIGHT_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530931 OBJECT_STRING + SPACE + YANG_AUGMENTED_INFO_LOWER_CASE +
932 SPACE + COLON + SPACE + THIS + PERIOD +
933 YANG_AUGMENTED_INFO_LOWER_CASE + MAP +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530934 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD
935 + VALUE + "s" + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
936 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530937 NEW_LINE + TWELVE_SPACE_INDENTATION + OBJECT_STRING + SPACE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530938 getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO) + SPACE + EQUAL +
939 SPACE + APP_INSTANCE + PERIOD +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530940 YANG_AUGMENTED_INFO_LOWER_CASE + OPEN_PARENTHESIS +
941 YANG_AUGMENTED_INFO_LOWER_CASE + PERIOD +
942 GET_CLASS + CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530943 TWELVE_SPACE_INDENTATION + OBJECT + SPACE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530944 PROCESS_SUBTREE_FILTERING + SEMI_COLON
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530945 + NEW_LINE + TWELVE_SPACE_INDENTATION + TRY + SPACE +
946 OPEN_CURLY_BRACKET + NEW_LINE +
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530947 SIXTEEN_SPACE_INDENTATION +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530948 "Class<?>[] interfaces = " + YANG_AUGMENTED_INFO_LOWER_CASE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530949 ".getClass().getInterfaces();" +
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530950 NEW_LINE + SIXTEEN_SPACE_INDENTATION +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530951 PROCESS_SUBTREE_FILTERING + SPACE + EQUAL + SPACE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530952 YANG_AUGMENTED_INFO_LOWER_CASE + PERIOD + GET_CLASS +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530953 NEW_LINE + TWENTY_SPACE_INDENTATION + PERIOD +
954 GET_METHOD + OPEN_PARENTHESIS + QUOTES +
955 PROCESS_SUBTREE_FILTERING + QUOTES + COMMA + SPACE +
956 "interfaces[0]" + CLOSE_PARENTHESIS + PERIOD + INVOKE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530957 OPEN_PARENTHESIS + YANG_AUGMENTED_INFO_LOWER_CASE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530958 COMMA + NEW_LINE + TWENTY_FOUR_SPACE_INDENTATION +
959 getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO) +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530960 CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530961 SIXTEEN_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS +
962 PROCESS_SUBTREE_FILTERING + SPACE + NOT + EQUAL + SPACE +
963 NULL + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
964 NEW_LINE + TWENTY_SPACE_INDENTATION +
965 SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + "add" +
966 YANG_AUGMENTED_INFO + OPEN_PARENTHESIS +
967 PROCESS_SUBTREE_FILTERING + COMMA + SPACE +
968 PROCESS_SUBTREE_FILTERING + PERIOD + GET_CLASS +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530969 CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530970 SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
971 NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
972 SPACE + CATCH + SPACE + OPEN_PARENTHESIS +
973 NO_SUCH_METHOD_EXCEPTION + " | " +
974 INVOCATION_TARGET_EXCEPTION + " | " + ILLEGAL_ACCESS_EXCEPTION +
975 SPACE + EXCEPTION_VAR + CLOSE_PARENTHESIS + SPACE +
976 OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530977 CONTINUE + SEMI_COLON + NEW_LINE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530978 TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE +
979 EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530980 }
981}