2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2021-2023 Nordix Foundation
4 * Modifications Copyright (C) 2023 TechMahindra Ltd
5 * ================================================================================
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
18 * SPDX-License-Identifier: Apache-2.0
19 * ============LICENSE_END=========================================================
22 package org.onap.cps.cpspath.parser;
24 import static org.onap.cps.cpspath.parser.CpsPathPrefixType.ABSOLUTE;
26 import java.util.List;
28 import lombok.AccessLevel;
33 @Setter(AccessLevel.PACKAGE)
34 public class CpsPathQuery {
36 private String xpathPrefix;
37 private String normalizedParentPath;
38 private String normalizedXpath;
39 private List<String> containerNames;
40 private CpsPathPrefixType cpsPathPrefixType = ABSOLUTE;
41 private String descendantName;
42 private Map<String, Object> leavesData;
43 private String ancestorSchemaNodeIdentifier = "";
44 private String textFunctionConditionLeafName;
45 private String textFunctionConditionValue;
46 private List<String> booleanOperatorsType;
49 * Returns a cps path query.
51 * @param cpsPathSource cps path
52 * @return a CpsPathQuery object.
54 public static CpsPathQuery createFrom(final String cpsPathSource) {
55 return CpsPathUtil.getCpsPathQuery(cpsPathSource);
59 * Has ancestor axis been included in cpsPath.
61 * @return boolean value.
63 public boolean hasAncestorAxis() {
64 return !(ancestorSchemaNodeIdentifier.isEmpty());
68 * Have leaf value conditions been included in cpsPath.
70 * @return boolean value.
72 public boolean hasLeafConditions() {
73 return leavesData != null;
77 * Has text function condition been included in cpsPath.
79 * @return boolean value.
81 public boolean hasTextFunctionCondition() {
82 return textFunctionConditionLeafName != null;
86 * Returns boolean indicating xpath is an absolute path to a list element.
88 * @return true if xpath is an absolute path to a list element
90 public boolean isPathToListElement() {
91 return cpsPathPrefixType == ABSOLUTE && hasLeafConditions();