blob: 952334ca1a45e252c0da1770e484b43fdf2d8d4b [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;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053060import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
61import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
62import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
63import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
64import static org.onosproject.yangutils.utils.UtilConstants.FOR;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053065import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053066import static org.onosproject.yangutils.utils.UtilConstants.GET_CLASS;
67import static org.onosproject.yangutils.utils.UtilConstants.GET_LEAF_INDEX;
68import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD;
69import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053070import static org.onosproject.yangutils.utils.UtilConstants.IF;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053071import static org.onosproject.yangutils.utils.UtilConstants.ILLEGAL_ACCESS_EXCEPTION;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053072import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053073import static org.onosproject.yangutils.utils.UtilConstants.INVOCATION_TARGET_EXCEPTION;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053074import static org.onosproject.yangutils.utils.UtilConstants.INVOKE;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053075import static org.onosproject.yangutils.utils.UtilConstants.IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053076import static org.onosproject.yangutils.utils.UtilConstants.IS_EMPTY;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053077import static org.onosproject.yangutils.utils.UtilConstants.IS_SELECT_ALL_SCHEMA_CHILD_FLAG;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053078import static org.onosproject.yangutils.utils.UtilConstants.LEAF_IDENTIFIER;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053079import static org.onosproject.yangutils.utils.UtilConstants.NEW;
80import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
81import static org.onosproject.yangutils.utils.UtilConstants.NOT;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053082import static org.onosproject.yangutils.utils.UtilConstants.NO_SUCH_METHOD_EXCEPTION;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053083import static org.onosproject.yangutils.utils.UtilConstants.NULL;
84import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
85import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
Bharat saraswal94844d62016-10-13 13:28:03 +053086import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CLOSE_BRACKET_STRING;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053087import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
88import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
89import static org.onosproject.yangutils.utils.UtilConstants.OR_OPERATION;
90import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
91import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053092import static org.onosproject.yangutils.utils.UtilConstants.PROCESS_SUBTREE_FILTERING;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053093import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
94import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
95import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
Bharat saraswal94844d62016-10-13 13:28:03 +053096import static org.onosproject.yangutils.utils.UtilConstants.SELECT_LEAF;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053097import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLON;
98import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +053099import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530100import static org.onosproject.yangutils.utils.UtilConstants.SUBTREE_FILTERING_RESULT_BUILDER;
101import static org.onosproject.yangutils.utils.UtilConstants.THIRTY_TWO_SPACE_INDENTATION;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530102import static org.onosproject.yangutils.utils.UtilConstants.THIS;
103import static org.onosproject.yangutils.utils.UtilConstants.TO;
104import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
105import static org.onosproject.yangutils.utils.UtilConstants.TRY;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530106import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
107import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_EIGHT_SPACE_INDENTATION;
108import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_FOUR_SPACE_INDENTATION;
109import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_SPACE_INDENTATION;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530110import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
Bharat saraswal94844d62016-10-13 13:28:03 +0530111import static org.onosproject.yangutils.utils.UtilConstants.VALUE_LEAF;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530112import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530113import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO_LOWER_CASE;
Bharat saraswal94844d62016-10-13 13:28:03 +0530114import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO_MAP;
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530115import 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
Bharat saraswal94844d62016-10-13 13:28:03 +0530147 + VALUE_LEAF +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530148 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 +
Bharat saraswal94844d62016-10-13 13:28:03 +0530166 SELECT_LEAF +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530167 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 +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530177 PERIOD + attributeName + OPEN_CLOSE_BRACKET_STRING +
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) {
Gaurav Agrawal9381ebb2016-09-29 19:00:33 +0530219
220 // When leafref in grouping.
221 if (((YangLeafRef) dataType.getDataTypeExtendedInfo())
222 .isInGrouping()) {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530223 attrQualifiedType =
224 getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(
225 attributeName);
Gaurav Agrawal9381ebb2016-09-29 19:00:33 +0530226 } else {
227
228 YangType type = ((YangLeafRef) dataType.getDataTypeExtendedInfo())
229 .getEffectiveDataType();
230
231 if (StringGenerator.isPrimitiveDataType(type.getDataType())) {
232 attrQualifiedType =
233 getAttrTypeForFilterContentMatchWhenPrimitiveDataType(
234 attributeName);
235 } else {
236 attrQualifiedType =
237 getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(
238 attributeName);
239 }
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530240 }
241 } else {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530242 attrQualifiedType =
243 getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(
244 attributeName);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530245 }
246
247 return attrQualifiedType;
248 }
249
250 /**
251 * Returns is filter content match for leaf.
252 *
253 * @param javaAttributeInfo java attribute
254 * @return is filter content match for leaf
255 */
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530256 public static String getSubtreeFilteringForLeafList(
257 JavaAttributeInfo javaAttributeInfo) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530258 return getSubtreeFilteringForList(javaAttributeInfo, true);
259 }
260
261 /**
262 * Returns is filter content match for child node.
263 *
264 * @param curNode current node
265 * @param pluginConfig plugin configurations
266 * @param path path of temp file
267 * @return is filter content match for child node
268 */
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530269 static String getProcessChildNodeSubtreeFiltering(YangNode curNode,
270 YangPluginConfig
271 pluginConfig,
272 String path)
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530273 throws IOException {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530274 JavaFileInfoTranslator javaFileInfo =
275 ((JavaFileInfoContainer) curNode).getJavaFileInfo();
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530276 JavaFileInfoTranslator parentInfo;
277
278 String instance = APP_INSTANCE;
279 String name = getCapitalCase(javaFileInfo.getJavaName());
280 String builderNamePrefix = getCapitalCase(javaFileInfo.getJavaName());
281 if (curNode instanceof YangCase) {
282 instance = INSTANCE;
283 YangNode parent = curNode.getParent();
284 if (parent instanceof YangChoice) {
285 parentInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo();
286 name = getCapitalCase(parentInfo.getJavaName());
287 } else if (parent instanceof YangAugment) {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530288 parentInfo = ((JavaFileInfoContainer) ((YangAugment) parent)
289 .getAugmentedNode()).getJavaFileInfo();
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530290 if (parentInfo != null) {
291 name = getCapitalCase(parentInfo.getJavaName());
292 } else {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530293 name = getCapitalCase(getCamelCase(
294 ((YangAugment) parent).getAugmentedNode().getName(),
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530295 pluginConfig.getConflictResolver()));
296 }
297 }
298 }
299
300 String processSubtreeFilteringMethod =
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530301 FOUR_SPACE_INDENTATION + PRIVATE + SPACE + BOOLEAN_DATA_TYPE +
302 SPACE + "processChildNodesSubTreeFiltering" +
303 OPEN_PARENTHESIS + name + SPACE + instance + COMMA +
304 SPACE + builderNamePrefix + BUILDER + SPACE +
305 "subTreeFilteringResultBuilder" + COMMA + NEW_LINE +
306 TWELVE_SPACE_INDENTATION + "Boolean " +
307 "isAnySelectOrContainmentNode, " + "boolean " +
308 "isSelectAllSchemaChild" + CLOSE_PARENTHESIS +
309 SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530310
311 if (curNode instanceof YangCase) {
312 String caseName = getCapitalCase(javaFileInfo.getJavaName());
313 processSubtreeFilteringMethod =
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530314 processSubtreeFilteringMethod + EIGHT_SPACE_INDENTATION +
315 caseName + SPACE + APP_INSTANCE + SPACE +
316 EQUAL + SPACE + OPEN_PARENTHESIS + caseName +
317 CLOSE_PARENTHESIS + SPACE + instance +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530318 SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530319 }
320
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530321 processSubtreeFilteringMethod +=
322 getDataFromTempFileHandle(FILTER_CONTENT_MATCH_FOR_NODES_MASK,
323 ((TempJavaCodeFragmentFilesContainer) curNode)
324 .getTempJavaCodeFragmentFiles()
325 .getBeanTempFiles(), path);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530326
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530327 processSubtreeFilteringMethod +=
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530328 EIGHT_SPACE_INDENTATION + RETURN + SPACE + TRUE + SEMI_COLON +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530329 NEW_LINE + FOUR_SPACE_INDENTATION +
330 CLOSE_CURLY_BRACKET + NEW_LINE + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530331
332 return processSubtreeFilteringMethod;
333 }
334
335 /**
336 * Returns is filter content match for leaf list.
337 *
338 * @param curNode current node
339 * @param pluginConfig plugin configurations
340 * @param path path of temp file
341 * @return is filter content match for leaf list
342 */
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530343 static String getProcessLeafListSubtreeFiltering(YangNode curNode,
344 YangPluginConfig
345 pluginConfig,
346 String path)
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530347 throws IOException {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530348 JavaFileInfoTranslator javaFileInfo =
349 ((JavaFileInfoContainer) curNode).getJavaFileInfo();
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530350 JavaFileInfoTranslator parentInfo;
351
352 String instance = APP_INSTANCE;
353 String name = getCapitalCase(javaFileInfo.getJavaName());
354 String builderNamePrefix = getCapitalCase(javaFileInfo.getJavaName());
355 if (curNode instanceof YangCase) {
356 instance = INSTANCE;
357 YangNode parent = curNode.getParent();
358 if (parent instanceof YangChoice) {
359 parentInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo();
360 name = getCapitalCase(parentInfo.getJavaName());
361 } else if (parent instanceof YangAugment) {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530362 parentInfo = ((JavaFileInfoContainer) ((YangAugment) parent)
363 .getAugmentedNode()).getJavaFileInfo();
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530364 if (parentInfo != null) {
365 name = getCapitalCase(parentInfo.getJavaName());
366 } else {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530367 name = getCapitalCase(getCamelCase(
368 ((YangAugment) parent).getAugmentedNode().getName(),
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530369 pluginConfig.getConflictResolver()));
370 }
371 }
372 }
373
374 String processSubtreeFilteringMethod =
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530375 FOUR_SPACE_INDENTATION + PRIVATE + SPACE + BOOLEAN_DATA_TYPE +
376 SPACE + "processLeafListSubTreeFiltering" +
377 OPEN_PARENTHESIS + name + SPACE + instance + COMMA +
378 SPACE + builderNamePrefix + BUILDER + SPACE +
379 "subTreeFilteringResultBuilder" + COMMA + NEW_LINE +
380 TWELVE_SPACE_INDENTATION + "Boolean " +
381 "isAnySelectOrContainmentNode, " + "boolean " +
382 "isSelectAllSchemaChild" + CLOSE_PARENTHESIS +
383 SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530384
385 if (curNode instanceof YangCase) {
386 String caseName = getCapitalCase(javaFileInfo.getJavaName());
387 processSubtreeFilteringMethod =
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530388 processSubtreeFilteringMethod + EIGHT_SPACE_INDENTATION +
389 caseName + SPACE + APP_INSTANCE + SPACE +
390 EQUAL + SPACE + OPEN_PARENTHESIS + caseName +
391 CLOSE_PARENTHESIS + SPACE + instance +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530392 SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530393 }
394
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530395 processSubtreeFilteringMethod += getDataFromTempFileHandle(
396 FILTER_CONTENT_MATCH_FOR_LEAF_LIST_MASK,
397 ((TempJavaCodeFragmentFilesContainer) curNode)
398 .getTempJavaCodeFragmentFiles()
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530399 .getBeanTempFiles(), path);
400
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530401 processSubtreeFilteringMethod +=
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530402 EIGHT_SPACE_INDENTATION + RETURN + SPACE + TRUE + SEMI_COLON +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530403 NEW_LINE + FOUR_SPACE_INDENTATION +
404 CLOSE_CURLY_BRACKET + NEW_LINE + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530405
406 return processSubtreeFilteringMethod;
407 }
408
409 /**
410 * Returns is filter content match for leaf.
411 *
412 * @param curNode current node
413 * @param pluginConfig plugin configurations
414 * @param path path of temp file
415 * @return is filter content match for leaf
416 */
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530417 static String getProcessLeafSubtreeFiltering(YangNode curNode,
418 YangPluginConfig pluginConfig,
419 String path)
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530420 throws IOException {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530421 JavaFileInfoTranslator javaFileInfo =
422 ((JavaFileInfoContainer) curNode).getJavaFileInfo();
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530423 JavaFileInfoTranslator parentInfo;
424
425 String instance = APP_INSTANCE;
426 String name = getCapitalCase(javaFileInfo.getJavaName());
427 String builderNamePrefix = getCapitalCase(javaFileInfo.getJavaName());
428 if (curNode instanceof YangCase) {
429 instance = INSTANCE;
430 YangNode parent = curNode.getParent();
431 if (parent instanceof YangChoice) {
432 parentInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo();
433 name = getCapitalCase(parentInfo.getJavaName());
434 } else if (parent instanceof YangAugment) {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530435 parentInfo = ((JavaFileInfoContainer) ((YangAugment) parent)
436 .getAugmentedNode()).getJavaFileInfo();
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530437 if (parentInfo != null) {
438 name = getCapitalCase(parentInfo.getJavaName());
439 } else {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530440 name = getCapitalCase(getCamelCase(
441 ((YangAugment) parent).getAugmentedNode().getName(),
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530442 pluginConfig.getConflictResolver()));
443 }
444 }
445 }
446
447 String processSubtreeFilteringMethod =
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530448 FOUR_SPACE_INDENTATION + PRIVATE + SPACE + BOOLEAN_DATA_TYPE +
449 SPACE + "processLeafSubtreeFiltering" +
450 OPEN_PARENTHESIS + name + SPACE + instance + COMMA +
451 SPACE + builderNamePrefix + BUILDER + SPACE +
452 "subTreeFilteringResultBuilder" + COMMA + NEW_LINE
453 + TWELVE_SPACE_INDENTATION + "Boolean " +
454 "isAnySelectOrContainmentNode, " + "boolean " +
455 "isSelectAllSchemaChild" + CLOSE_PARENTHESIS +
456 SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530457
458 if (curNode instanceof YangCase) {
459 String caseName = getCapitalCase(javaFileInfo.getJavaName());
460 processSubtreeFilteringMethod =
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530461 processSubtreeFilteringMethod + EIGHT_SPACE_INDENTATION +
462 caseName + SPACE + APP_INSTANCE + SPACE +
463 EQUAL + SPACE + OPEN_PARENTHESIS + caseName +
464 CLOSE_PARENTHESIS + SPACE + instance +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530465 SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530466 }
467
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530468 processSubtreeFilteringMethod +=
469 getDataFromTempFileHandle(FILTER_CONTENT_MATCH_FOR_LEAF_MASK,
470 ((TempJavaCodeFragmentFilesContainer) curNode)
471 .getTempJavaCodeFragmentFiles()
472 .getBeanTempFiles(), path);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530473
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530474 processSubtreeFilteringMethod +=
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530475 EIGHT_SPACE_INDENTATION + RETURN + SPACE + TRUE + SEMI_COLON +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530476 NEW_LINE + FOUR_SPACE_INDENTATION +
477 CLOSE_CURLY_BRACKET + NEW_LINE + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530478
479 return processSubtreeFilteringMethod;
480 }
481
482 /**
483 * Returns is filter content match for leaf.
484 *
485 * @param curNode current node
486 * @param pluginConfig plugin configurations
487 * @return is filter content match for leaf
488 */
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530489 static String getProcessSubtreeFilteringStart(YangNode curNode,
490 YangPluginConfig
491 pluginConfig) {
492 JavaFileInfoTranslator javaFileInfo =
493 ((JavaFileInfoContainer) curNode).getJavaFileInfo();
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530494 JavaFileInfoTranslator parentInfo;
495
496 String instance = APP_INSTANCE;
497 String name = getCapitalCase(javaFileInfo.getJavaName());
498 String builderNamePrefix = getCapitalCase(javaFileInfo.getJavaName());
499 if (curNode instanceof YangCase) {
500 instance = INSTANCE;
501 YangNode parent = curNode.getParent();
502 if (parent instanceof YangChoice) {
503 parentInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo();
504 name = getCapitalCase(parentInfo.getJavaName());
505 } else if (parent instanceof YangAugment) {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530506 parentInfo = ((JavaFileInfoContainer) ((YangAugment) parent)
507 .getAugmentedNode()).getJavaFileInfo();
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530508 if (parentInfo != null) {
509 name = getCapitalCase(parentInfo.getJavaName());
510 } else {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530511 name = getCapitalCase(getCamelCase(
512 ((YangAugment) parent).getAugmentedNode().getName(),
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530513 pluginConfig.getConflictResolver()));
514 }
515 }
516 }
517 String processSubtreeFilteringMethod =
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530518 StringGenerator.getOverRideString() + FOUR_SPACE_INDENTATION +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530519 PUBLIC + SPACE + name + SPACE +
520 PROCESS_SUBTREE_FILTERING + OPEN_PARENTHESIS + name +
521 SPACE + instance + COMMA + SPACE + BOOLEAN_DATA_TYPE +
522 SPACE + "isSelectAllSchemaChild" +
523 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
524 NEW_LINE + EIGHT_SPACE_INDENTATION +
525 builderNamePrefix + BUILDER + SPACE +
526 SUBTREE_FILTERING_RESULT_BUILDER + SPACE + EQUAL +
527 SPACE + NEW + SPACE + builderNamePrefix + BUILDER +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530528 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLON +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530529 NEW_LINE + EIGHT_SPACE_INDENTATION + "Boolean" + SPACE +
530 IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG + SPACE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530531 EQUAL + SPACE + FALSE + SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530532
533 if (curNode instanceof YangCase) {
534 String caseName = getCapitalCase(javaFileInfo.getJavaName());
535 processSubtreeFilteringMethod =
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530536 processSubtreeFilteringMethod + EIGHT_SPACE_INDENTATION +
537 caseName + SPACE + APP_INSTANCE + SPACE +
538 EQUAL + SPACE + OPEN_PARENTHESIS + caseName +
539 CLOSE_PARENTHESIS + SPACE + instance +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530540 SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530541 }
542
543 return processSubtreeFilteringMethod;
544 }
545
546 /**
547 * Get the body for process subtree filtering.
548 *
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530549 * @param curNode node for which the code is being generated
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530550 * @return body of subtree filtering
551 */
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530552 static String getProcessSubtreeFunctionBody(YangNode curNode) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530553
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530554 String method = "";
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530555
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530556 if (curNode instanceof YangLeavesHolder) {
557 if (((YangLeavesHolder) curNode).getListOfLeaf() != null
558 &&
559 !((YangLeavesHolder) curNode).getListOfLeaf().isEmpty()) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530560 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530561 .getIfConditionBegin(EIGHT_SPACE_INDENTATION, NOT +
562 "processLeafSubtreeFiltering(appInstance, " +
563 "subTreeFilteringResultBuilder," + NEW_LINE +
564 TWELVE_SPACE_INDENTATION +
565 "isAnySelectOrContainmentNode, " +
566 "isSelectAllSchemaChild)");
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530567
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530568 method += TWELVE_SPACE_INDENTATION + RETURN + SPACE + NULL +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530569 SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530570
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530571 method += methodClose(EIGHT_SPACE);
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530572 }
573 }
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530574
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530575 if (curNode instanceof YangLeavesHolder) {
576 if (((YangLeavesHolder) curNode).getListOfLeafList() != null
577 &&
578 !((YangLeavesHolder) curNode).getListOfLeafList()
579 .isEmpty()) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530580 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530581 .getIfConditionBegin(EIGHT_SPACE_INDENTATION, NOT +
582 "processLeafListSubTreeFiltering(appInstance," +
583 " subTreeFilteringResultBuilder," + NEW_LINE
584 + TWELVE_SPACE_INDENTATION +
585 "isAnySelectOrContainmentNode, " +
586 "isSelectAllSchemaChild)");
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530587
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530588 method += TWELVE_SPACE_INDENTATION + RETURN + SPACE + NULL +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530589 SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530590
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530591 method += methodClose(EIGHT_SPACE);
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530592 }
593 }
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530594
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530595 if (curNode.getChild() != null) {
596
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530597 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530598 .getIfConditionBegin(EIGHT_SPACE_INDENTATION, NOT +
599 "processChildNodesSubTreeFiltering(appInstance, " +
600 "subTreeFilteringResultBuilder," + NEW_LINE +
601 TWELVE_SPACE_INDENTATION +
602 "isAnySelectOrContainmentNode, " +
603 "isSelectAllSchemaChild)");
604
605 method += TWELVE_SPACE_INDENTATION + RETURN + SPACE + NULL +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530606 SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530607
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530608 method += methodClose(EIGHT_SPACE);
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530609 }
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530610
611 return method;
612 }
613
614 /**
615 * Returns is filter content match for node.
616 *
617 * @param attr attribute info
618 * @return is filter content match for node
619 */
620 public static String getSubtreeFilteringForNode(JavaAttributeInfo attr) {
621 boolean isList = attr.isListAttr();
622 if (isList) {
623 return getSubtreeFilteringForList(attr, false);
624 } else {
625 return getSubtreeFilteringForChildNode(attr);
626 }
627 }
628
629 /**
630 * Returns is filter content match close.
631 *
632 * @return is filter content match close
633 */
634 static String getProcessSubTreeFilteringEnd() {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530635 String method = StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530636 .getIfConditionBegin(EIGHT_SPACE_INDENTATION,
637 NOT + IS_SELECT_ALL_SCHEMA_CHILD_FLAG +
638 SPACE + AND_OPERATION + SPACE +
639 NOT +
640 IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530641
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530642 method += TWELVE_SPACE_INDENTATION + RETURN + SPACE +
643 PROCESS_SUBTREE_FILTERING + OPEN_PARENTHESIS + APP_INSTANCE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530644 COMMA + SPACE + TRUE + CLOSE_PARENTHESIS + SEMI_COLON +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530645 NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530646
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530647 method += methodClose(EIGHT_SPACE);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530648
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530649 method += EIGHT_SPACE_INDENTATION + RETURN + SPACE +
650 SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + BUILD +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530651 OPEN_CLOSE_BRACKET_STRING + SEMI_COLON + NEW_LINE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530652 FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530653
654 return method;
655 }
656
657 /**
658 * Returns filter content match for child nodes.
659 *
660 * @param javaAttributeInfo attribute to be added
661 * @return filter content match for child nodes
662 */
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530663 private static String getSubtreeFilteringForChildNode(
664 JavaAttributeInfo javaAttributeInfo) {
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530665 String name = javaAttributeInfo.getAttributeName();
666 name = getSmallCase(name);
667 String type = javaAttributeInfo.getImportInfo().getClassInfo();
668 if (javaAttributeInfo.isQualifiedName()) {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530669 type = javaAttributeInfo.getImportInfo().getPkgInfo() + PERIOD +
670 type;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530671 }
672
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530673 String method = StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530674 .getIfConditionBegin(EIGHT_SPACE_INDENTATION, name + "() != " +
675 "null");
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530676
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530677 method += TWELVE_SPACE_INDENTATION +
678 IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG + SPACE + EQUAL + SPACE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530679 TRUE + SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530680
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530681 method += TWELVE_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS +
682 APP_INSTANCE + PERIOD + name + OPEN_PARENTHESIS +
683 CLOSE_PARENTHESIS + SPACE + NOT
684 + EQUAL + SPACE + NULL + CLOSE_PARENTHESIS + SPACE +
685 OPEN_CURLY_BRACKET + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530686
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530687 method += SIXTEEN_SPACE_INDENTATION + type + SPACE + "result = " +
688 name + PERIOD + PROCESS_SUBTREE_FILTERING + OPEN_PARENTHESIS +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530689 APP_INSTANCE + PERIOD + name + OPEN_CLOSE_BRACKET_STRING
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530690 + COMMA + SPACE + FALSE + CLOSE_PARENTHESIS + SEMI_COLON +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530691 NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530692
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530693 method += SIXTEEN_SPACE_INDENTATION + "if (result != null) {" +
694 NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530695
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530696 method += TWENTY_SPACE_INDENTATION + SUBTREE_FILTERING_RESULT_BUILDER +
697 PERIOD + name + OPEN_PARENTHESIS + "result" +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530698 CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530699 SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530700
701 //if app instance is not null
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530702 method += methodClose(TWELVE_SPACE);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530703
704 //if query instance is not null
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530705 method += methodClose(TWELVE_SPACE);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530706
707 return method;
708 }
709
710 /**
711 * Returns filter content match for list types.
712 *
713 * @param javaAttributeInfo attribute information
714 * @param isLeafList if for leaf list
715 * @return filter content match for list types
716 */
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530717 private static String getSubtreeFilteringForList(
718 JavaAttributeInfo javaAttributeInfo, boolean isLeafList) {
719 String capitalCaseName =
720 getCapitalCase(javaAttributeInfo.getAttributeName());
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530721 String name = javaAttributeInfo.getAttributeName();
722 String type = javaAttributeInfo.getImportInfo().getClassInfo();
723 if (javaAttributeInfo.isQualifiedName()) {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530724 type = javaAttributeInfo.getImportInfo().getPkgInfo() + PERIOD +
725 type;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530726 }
727
728 /*
729 * If select all schema child
730 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530731 String method = StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530732 .getIfConditionBegin(EIGHT_SPACE_INDENTATION,
733 IS_SELECT_ALL_SCHEMA_CHILD_FLAG);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530734
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530735 method = method + StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530736 .getCollectionIteratorForLoopBegin(TWELVE_SPACE_INDENTATION,
737 type + SPACE + name,
738 APP_INSTANCE + PERIOD +
739 name +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530740 OPEN_CLOSE_BRACKET_STRING);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530741
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530742 method = method + SIXTEEN_SPACE_INDENTATION +
743 SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + ADD_STRING +
744 getCapitalCase(TO) + capitalCaseName + OPEN_PARENTHESIS +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530745 name + CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530746
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530747 method += methodClose(TWELVE_SPACE); // Close collection Iteration loop
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530748
749 //If need to explicitly participate in query
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530750 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530751 .getElseIfConditionBegin(EIGHT_SPACE_INDENTATION,
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530752 name + OPEN_CLOSE_BRACKET_STRING +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530753 SPACE + NOT + EQUAL +
754 SPACE + NULL);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530755
756 if (!isLeafList) {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530757 method += TWELVE_SPACE_INDENTATION +
758 IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG + SPACE + EQUAL +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530759 SPACE + TRUE + SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530760 }
761
762 //If there is any parameter in the query condition
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530763 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530764 .getIfConditionBegin(TWELVE_SPACE_INDENTATION, NOT + name +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530765 OPEN_CLOSE_BRACKET_STRING + PERIOD + IS_EMPTY);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530766
767 if (isLeafList) {
768 /*
769 * If there is no app instance to perform content match
770 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530771 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530772 .getIfConditionBegin(SIXTEEN_SPACE_INDENTATION,
773 APP_INSTANCE + PERIOD + name +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530774 OPEN_CLOSE_BRACKET_STRING +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530775 SPACE + EQUAL + EQUAL + SPACE +
776 NULL + SPACE + OR_OPERATION
777 + SPACE + APP_INSTANCE +
778 PERIOD + name +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530779 OPEN_CLOSE_BRACKET_STRING +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530780 PERIOD + IS_EMPTY);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530781
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530782 method += TWENTY_SPACE_INDENTATION + RETURN + SPACE + FALSE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530783 SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530784
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530785 method += methodClose(SIXTEEN_SPACE);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530786
787 // for instance iterator
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530788 method += StringGenerator.getCollectionIteratorForLoopBegin(
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530789 SIXTEEN_SPACE_INDENTATION, type + SPACE + name,
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530790 name + OPEN_CLOSE_BRACKET_STRING);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530791
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530792 method += TWENTY_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530793 "flag" + SPACE + EQUAL + SPACE + FALSE + SEMI_COLON +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530794 NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530795
796 // for app instance iterator
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530797 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530798 .getCollectionIteratorForLoopBegin(TWENTY_SPACE_INDENTATION,
799 type + SPACE + name +
800 "2",
801 APP_INSTANCE + PERIOD +
802 name +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530803 OPEN_CLOSE_BRACKET_STRING);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530804
805 //the content match leaf list attribute value matches
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530806 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530807 .getIfConditionBegin(TWENTY_FOUR_SPACE_INDENTATION,
808 name + PERIOD + EQUALS_STRING
809 + OPEN_PARENTHESIS + name +
810 "2" + CLOSE_PARENTHESIS);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530811
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530812 method += TWENTY_EIGHT_SPACE_INDENTATION + "flag" + SPACE + EQUAL +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530813 SPACE + TRUE + SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530814
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530815 method += TWENTY_EIGHT_SPACE_INDENTATION +
816 SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + ADD_STRING +
817 getCapitalCase(TO) + capitalCaseName + OPEN_PARENTHESIS +
818 name + "2" + CLOSE_PARENTHESIS +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530819 SEMI_COLON + NEW_LINE + TWENTY_EIGHT_SPACE_INDENTATION +
820 BREAK + SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530821
822 //the content match leaf list attribute value matches
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530823 method += methodClose(TWENTY_FOUR_SPACE);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530824
825 // for app instance iterator
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530826 method += methodClose(TWENTY_SPACE);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530827
828 //if the content match failed
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530829 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530830 .getIfConditionBegin(TWENTY_SPACE_INDENTATION, "!flag");
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530831
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530832 method += TWENTY_FOUR_SPACE_INDENTATION + RETURN + SPACE + FALSE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530833 SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530834
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530835 method +=
836 methodClose(TWENTY_SPACE); // if flag == false
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530837
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530838 method += methodClose(SIXTEEN_SPACE); // for instance iterator
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530839 } else {
840
841 /*if there is any app instance entry*/
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530842 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530843 .getIfConditionBegin(SIXTEEN_SPACE_INDENTATION,
844 APP_INSTANCE + PERIOD + name +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530845 OPEN_CLOSE_BRACKET_STRING +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530846 SPACE + NOT + EQUAL + SPACE +
847 NULL + SPACE + AND_OPERATION +
848 SPACE + NOT + APP_INSTANCE +
849 PERIOD + name +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530850 OPEN_CLOSE_BRACKET_STRING +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530851 PERIOD + IS_EMPTY);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530852
853 /*
854 * loop all the query condition instance(s)
855 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530856 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530857 .getCollectionIteratorForLoopBegin(TWENTY_SPACE_INDENTATION,
858 type + SPACE + name,
859 name +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530860 OPEN_CLOSE_BRACKET_STRING);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530861
862 //loop all the app instance(s)
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530863 method += StringGenerator.getCollectionIteratorForLoopBegin(
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530864 TWENTY_FOUR_SPACE_INDENTATION, type + SPACE + name + "2",
865 APP_INSTANCE + PERIOD + name +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530866 OPEN_CLOSE_BRACKET_STRING);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530867
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530868 method += TWENTY_EIGHT_SPACE_INDENTATION + type + SPACE +
869 "result = " + name + PERIOD +
870 PROCESS_SUBTREE_FILTERING + OPEN_PARENTHESIS + name + "2" +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530871 COMMA + SPACE + FALSE + CLOSE_PARENTHESIS + SEMI_COLON +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530872 NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530873
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530874 method += TWENTY_EIGHT_SPACE_INDENTATION + "if (result != null) {" +
875 NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530876
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530877 method += THIRTY_TWO_SPACE_INDENTATION +
878 SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + ADD_STRING +
879 getCapitalCase(TO) + capitalCaseName + OPEN_PARENTHESIS +
880 "result" + CLOSE_PARENTHESIS +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530881 SEMI_COLON + NEW_LINE + TWENTY_EIGHT_SPACE_INDENTATION +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530882 CLOSE_CURLY_BRACKET + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530883
884 //loop all the app instance(s)
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530885 method +=
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530886 methodClose(TWENTY_FOUR_SPACE);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530887
888 //loop all the query condition instance(s)
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530889 method += methodClose(TWENTY_SPACE);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530890
891 //if there is any app instance entry
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530892 method += methodClose(SIXTEEN_SPACE);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530893 }
894
895 method += TWELVE_SPACE_INDENTATION + "} else {" + NEW_LINE;
896
897 if (isLeafList) {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530898 method += SIXTEEN_SPACE_INDENTATION +
899 IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG + SPACE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530900 EQUAL + SPACE + TRUE + SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530901 }
902
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530903 method += StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530904 .getIfConditionBegin(SIXTEEN_SPACE_INDENTATION,
905 APP_INSTANCE + PERIOD + name
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530906 + OPEN_CLOSE_BRACKET_STRING +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530907 SPACE + NOT + EQUAL + SPACE +
908 NULL + SPACE + AND_OPERATION +
909 SPACE + NOT + APP_INSTANCE +
910 PERIOD + name +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530911 OPEN_CLOSE_BRACKET_STRING +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530912 PERIOD + IS_EMPTY);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530913
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530914 method = method + StringGenerator
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530915 .getCollectionIteratorForLoopBegin(TWENTY_SPACE_INDENTATION,
916 type + SPACE + name,
917 APP_INSTANCE + PERIOD +
918 name +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530919 OPEN_CLOSE_BRACKET_STRING);
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530920
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530921 method = method + TWENTY_FOUR_SPACE_INDENTATION +
922 SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + ADD_STRING
923 + getCapitalCase(TO) + capitalCaseName + OPEN_PARENTHESIS +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530924 name + CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530925
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530926 method += methodClose(TWENTY_SPACE);// Close collection Iteration loop
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530927
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530928 method +=
929 methodClose(SIXTEEN_SPACE); // close if condition
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530930
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530931 method +=
932 methodClose(TWELVE_SPACE); // close else condition
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530933
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530934 method += methodClose(EIGHT_SPACE); // close else if condition
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530935
936 return method;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530937 }
938
939 //Returns method string for op params augmented syntax
940 static String getAugmentableSubTreeFiltering() {
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530941 return EIGHT_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530942 OBJECT_STRING + SPACE + YANG_AUGMENTED_INFO_LOWER_CASE +
943 SPACE + COLON + SPACE + THIS + PERIOD +
Bharat saraswal94844d62016-10-13 13:28:03 +0530944 YANG_AUGMENTED_INFO_MAP +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530945 OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD
946 + VALUE + "s" + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
947 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530948 NEW_LINE + TWELVE_SPACE_INDENTATION + OBJECT_STRING + SPACE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530949 getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO) + SPACE + EQUAL +
950 SPACE + APP_INSTANCE + PERIOD +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530951 YANG_AUGMENTED_INFO_LOWER_CASE + OPEN_PARENTHESIS +
952 YANG_AUGMENTED_INFO_LOWER_CASE + PERIOD +
953 GET_CLASS + CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530954 TWELVE_SPACE_INDENTATION + OBJECT + SPACE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530955 PROCESS_SUBTREE_FILTERING + SEMI_COLON
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530956 + NEW_LINE + TWELVE_SPACE_INDENTATION + TRY + SPACE +
957 OPEN_CURLY_BRACKET + NEW_LINE +
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530958 SIXTEEN_SPACE_INDENTATION +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530959 "Class<?>[] interfaces = " + YANG_AUGMENTED_INFO_LOWER_CASE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530960 ".getClass().getInterfaces();" +
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530961 NEW_LINE + SIXTEEN_SPACE_INDENTATION +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530962 PROCESS_SUBTREE_FILTERING + SPACE + EQUAL + SPACE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530963 YANG_AUGMENTED_INFO_LOWER_CASE + PERIOD + GET_CLASS +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530964 NEW_LINE + TWENTY_SPACE_INDENTATION + PERIOD +
965 GET_METHOD + OPEN_PARENTHESIS + QUOTES +
966 PROCESS_SUBTREE_FILTERING + QUOTES + COMMA + SPACE +
967 "interfaces[0]" + CLOSE_PARENTHESIS + PERIOD + INVOKE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530968 OPEN_PARENTHESIS + YANG_AUGMENTED_INFO_LOWER_CASE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530969 COMMA + NEW_LINE + TWENTY_FOUR_SPACE_INDENTATION +
970 getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO) +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530971 CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530972 SIXTEEN_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS +
973 PROCESS_SUBTREE_FILTERING + SPACE + NOT + EQUAL + SPACE +
974 NULL + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
975 NEW_LINE + TWENTY_SPACE_INDENTATION +
976 SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + "add" +
977 YANG_AUGMENTED_INFO + OPEN_PARENTHESIS +
978 PROCESS_SUBTREE_FILTERING + COMMA + SPACE +
979 PROCESS_SUBTREE_FILTERING + PERIOD + GET_CLASS +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530980 CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530981 SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
982 NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
983 SPACE + CATCH + SPACE + OPEN_PARENTHESIS +
984 NO_SUCH_METHOD_EXCEPTION + " | " +
985 INVOCATION_TARGET_EXCEPTION + " | " + ILLEGAL_ACCESS_EXCEPTION +
986 SPACE + EXCEPTION_VAR + CLOSE_PARENTHESIS + SPACE +
987 OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530988 CONTINUE + SEMI_COLON + NEW_LINE +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530989 TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE +
990 EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
VinodKumarS-Huawei9a91b482016-08-19 23:22:59 +0530991 }
992}