Merge "DMI Data AVC to use kafka headers"
[cps.git] / cps-service / src / main / java / org / onap / cps / api / CpsDataService.java
index 6332f09..6a2cac4 100644 (file)
@@ -1,9 +1,10 @@
 /*
  *  ============LICENSE_START=======================================================
- *  Copyright (C) 2020-2022 Nordix Foundation
+ *  Copyright (C) 2020-2023 Nordix Foundation
  *  Modifications Copyright (C) 2021 Pantheon.tech
  *  Modifications Copyright (C) 2021-2022 Bell Canada
  *  Modifications Copyright (C) 2022 Deutsche Telekom AG
+ *  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.
@@ -110,33 +111,34 @@ public interface CpsDataService {
             Collection<String> jsonDataList, OffsetDateTime observedTimestamp);
 
     /**
-     * Retrieves datanode by XPath for given dataspace and anchor.
+     * Retrieves all the datanodes by XPath for given dataspace and anchor.
      *
-     * @param dataspaceName          dataspace name
-     * @param anchorName             anchor name
-     * @param xpath                  xpath
-     * @param fetchDescendantsOption defines the scope of data to fetch: either single node or all the descendant nodes
-     *                               (recursively) as well
-     * @return data node object
+     * @param dataspaceName           dataspace name
+     * @param anchorName              anchor name
+     * @param xpath                   xpath
+     * @param fetchDescendantsOption  defines the scope of data to fetch: either single node or all the descendant nodes
+     *                                (recursively) as well
+     * @return collection of data node objects
      */
-    DataNode getDataNode(String dataspaceName, String anchorName, String xpath,
-        FetchDescendantsOption fetchDescendantsOption);
+    Collection<DataNode> getDataNodes(String dataspaceName, String anchorName, String xpath,
+                                      FetchDescendantsOption fetchDescendantsOption);
 
     /**
-     * Retrieves datanodes by XPath for given dataspace and anchor.
+     * Retrieves all the datanodes for multiple XPaths for given dataspace and anchor.
      *
-     * @param dataspaceName          dataspace name
-     * @param anchorName             anchor name
-     * @param xpaths                 collection of xpath
-     * @param fetchDescendantsOption defines the scope of data to fetch: either single node or all the descendant nodes
-     *                               (recursively) as well
-     * @return data node object
+     * @param dataspaceName           dataspace name
+     * @param anchorName              anchor name
+     * @param xpaths                  collection of xpaths
+     * @param fetchDescendantsOption  defines the scope of data to fetch: either single node or all the descendant nodes
+     *                                (recursively) as well
+     * @return collection of data node objects
      */
-    Collection<DataNode> getDataNodes(String dataspaceName, String anchorName, Collection<String> xpaths,
-                         FetchDescendantsOption fetchDescendantsOption);
+    Collection<DataNode> getDataNodesForMultipleXpaths(String dataspaceName, String anchorName,
+                                                       Collection<String> xpaths,
+                                                       FetchDescendantsOption fetchDescendantsOption);
 
     /**
-     * Updates data node for given dataspace and anchor using xpath to parent node.
+     * Updates multiple data nodes for given dataspace and anchor using xpath to parent node.
      *
      * @param dataspaceName   dataspace name
      * @param anchorName      anchor name
@@ -150,10 +152,10 @@ public interface CpsDataService {
     /**
      * Replaces an existing data node's content including descendants.
      *
-     * @param dataspaceName   dataspace name
-     * @param anchorName      anchor name
-     * @param parentNodeXpath xpath to parent node
-     * @param jsonData        json data
+     * @param dataspaceName     dataspace name
+     * @param anchorName        anchor name
+     * @param parentNodeXpath   xpath to parent node
+     * @param jsonData          json data
      * @param observedTimestamp observedTimestamp
      */
     void updateDataNodeAndDescendants(String dataspaceName, String anchorName, String parentNodeXpath, String jsonData,
@@ -199,23 +201,43 @@ public interface CpsDataService {
     /**
      * Deletes data node for given anchor and dataspace.
      *
-     * @param dataspaceName dataspace name
-     * @param anchorName anchor name
-     * @param dataNodeXpath data node xpath
+     * @param dataspaceName     dataspace name
+     * @param anchorName        anchor name
+     * @param dataNodeXpath     data node xpath
      * @param observedTimestamp observed timestamp
      */
     void deleteDataNode(String dataspaceName, String anchorName, String dataNodeXpath,
         OffsetDateTime observedTimestamp);
 
+    /**
+     * Deletes multiple data nodes for given anchor and dataspace.
+     *
+     * @param dataspaceName     dataspace name
+     * @param anchorName        anchor name
+     * @param dataNodeXpaths    data node xpaths
+     * @param observedTimestamp observed timestamp
+     */
+    void deleteDataNodes(String dataspaceName, String anchorName, Collection<String> dataNodeXpaths,
+                         OffsetDateTime observedTimestamp);
+
     /**
      * Deletes all data nodes for a given anchor in a dataspace.
      *
      * @param dataspaceName     dataspace name
-     * @param anchorName       anchor name
+     * @param anchorName        anchor name
      * @param observedTimestamp observed timestamp
      */
     void deleteDataNodes(String dataspaceName, String anchorName, OffsetDateTime observedTimestamp);
 
+    /**
+     * Deletes all data nodes for multiple anchors in a dataspace.
+     *
+     * @param dataspaceName     dataspace name
+     * @param anchorNames       anchor names
+     * @param observedTimestamp observed timestamp
+     */
+    void deleteDataNodes(String dataspaceName, Collection<String> anchorNames, OffsetDateTime observedTimestamp);
+
     /**
      * Deletes a list or a list-element under given anchor and dataspace.
      *