Merge "Subscription Creation: NCMP to Client CloudEvent transformation"
[cps.git] / cps-path-parser / src / main / java / org / onap / cps / cpspath / parser / CpsPathQuery.java
index c9df8df..f98df05 100644 (file)
@@ -1,6 +1,7 @@
 /*
  *  ============LICENSE_START=======================================================
- *  Copyright (C) 2021-2022 Nordix Foundation
+ *  Copyright (C) 2021-2023 Nordix Foundation
+ *  Modifications Copyright (C) 2023 TechMahindra Ltd
  *  ================================================================================
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -23,8 +24,9 @@ package org.onap.cps.cpspath.parser;
 import static org.onap.cps.cpspath.parser.CpsPathPrefixType.ABSOLUTE;
 
 import java.util.List;
-import java.util.Map;
 import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -38,10 +40,14 @@ public class CpsPathQuery {
     private List<String> containerNames;
     private CpsPathPrefixType cpsPathPrefixType = ABSOLUTE;
     private String descendantName;
-    private Map<String, Object> leavesData;
+    private List<DataLeaf> leavesData;
     private String ancestorSchemaNodeIdentifier = "";
     private String textFunctionConditionLeafName;
     private String textFunctionConditionValue;
+    private List<String> booleanOperators;
+    private List<String> comparativeOperators;
+    private String containsFunctionConditionLeafName;
+    private String containsFunctionConditionValue;
 
     /**
      * Returns a cps path query.
@@ -80,4 +86,29 @@ public class CpsPathQuery {
         return textFunctionConditionLeafName != null;
     }
 
+    /**
+     * Has contains function condition been included in cpsPath.
+     *
+     * @return boolean value.
+     */
+    public boolean hasContainsFunctionCondition() {
+        return containsFunctionConditionLeafName != null;
+    }
+
+    /**
+     * Returns boolean indicating xpath is an absolute path to a list element.
+     *
+     * @return true if xpath is an absolute path to a list element
+     */
+    public boolean isPathToListElement() {
+        return cpsPathPrefixType == ABSOLUTE && hasLeafConditions();
+    }
+
+    @Getter
+    @EqualsAndHashCode
+    @AllArgsConstructor
+    public static class DataLeaf {
+        private final String name;
+        private final Object value;
+    }
 }