Merge "CPS-508: Create anchor/schemaset from new modules and existing modules"
[cps.git] / cps-service / src / main / java / org / onap / cps / spi / CpsDataPersistenceService.java
index 97aecaa..bf8dd1a 100644 (file)
@@ -1,6 +1,6 @@
-/*-
+/*
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Nordix Foundation. All rights reserved.
+ *  Copyright (C) 2020 Nordix Foundation.
  *  Modifications Copyright (C) 2021 Pantheon.tech
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,6 +21,8 @@
 
 package org.onap.cps.spi;
 
+import java.util.Collection;
+import java.util.Map;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.onap.cps.spi.model.DataNode;
 
@@ -52,6 +54,18 @@ public interface CpsDataPersistenceService {
     void addChildDataNode(@NonNull String dataspaceName, @NonNull String anchorName, @NonNull String parentXpath,
         @NonNull DataNode dataNode);
 
+    /**
+     * Adds list node child elements to a Fragment.
+     *
+     * @param dataspaceName   dataspace name
+     * @param anchorName      anchor name
+     * @param parentNodeXpath parent node xpath
+     * @param dataNodes       collection of data nodes representing list node elements
+     */
+
+    void addListDataNodes(@NonNull String dataspaceName, @NonNull String anchorName, @NonNull String parentNodeXpath,
+        @NonNull Collection<DataNode> dataNodes);
+
     /**
      * Retrieves datanode by XPath for given dataspace and anchor.
      *
@@ -64,4 +78,60 @@ public interface CpsDataPersistenceService {
      */
     DataNode getDataNode(@NonNull String dataspaceName, @NonNull String anchorName, @NonNull String xpath,
         @NonNull FetchDescendantsOption fetchDescendantsOption);
+
+
+    /**
+     * Updates leaves for existing data node.
+     *
+     * @param dataspaceName dataspace name
+     * @param anchorName    anchor name
+     * @param xpath         xpath
+     * @param leaves        the leaves as a map where key is a leaf name and a value is a leaf value
+     */
+    void updateDataLeaves(@NonNull String dataspaceName, @NonNull String anchorName, @NonNull String xpath,
+        @NonNull Map<String, Object> leaves);
+
+    /**
+     * Replaces existing data node content including descendants.
+     *
+     * @param dataspaceName dataspace name
+     * @param anchorName    anchor name
+     * @param dataNode      data node
+     */
+    void replaceDataNodeTree(@NonNull String dataspaceName, @NonNull String anchorName, @NonNull DataNode dataNode);
+
+    /**
+     * Replaces existing list data node content including descendants.
+     *
+     * @param dataspaceName   dataspace name
+     * @param anchorName      anchor name
+     * @param parentNodeXpath parent node xpath
+     * @param dataNodes       collection of data nodes representing list node elements
+     */
+    void replaceListDataNodes(@NonNull String dataspaceName, @NonNull String anchorName,
+        @NonNull String parentNodeXpath, @NonNull Collection<DataNode> dataNodes);
+
+    /**
+     * Deletes existing list data node content including descendants.
+     *
+     * @param dataspaceName   dataspace name
+     * @param anchorName      anchor name
+     * @param listNodeXpath   list node xpath
+     */
+    void deleteListDataNodes(@NonNull String dataspaceName, @NonNull String anchorName,
+                              @NonNull String listNodeXpath);
+
+    /**
+     * Get a datanode by cps path.
+     *
+     * @param dataspaceName          dataspace name
+     * @param anchorName             anchor name
+     * @param cpsPath                cps path
+     * @param fetchDescendantsOption defines whether the descendants of the node(s) found by the query should be
+     *                               included in the output
+     * @return the data nodes found i.e. 0 or more data nodes
+     */
+    Collection<DataNode> queryDataNodes(@NonNull String dataspaceName, @NonNull String anchorName,
+        @NonNull String cpsPath, @NonNull FetchDescendantsOption fetchDescendantsOption);
+
 }