Removed ExtendedModuleReference Object
[cps.git] / cps-service / src / main / java / org / onap / cps / spi / CpsModulePersistenceService.java
old mode 100644 (file)
new mode 100755 (executable)
index 7feae36..0e90e84
@@ -1,13 +1,14 @@
 /*
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Nordix Foundation
- *  Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
+ *  Copyright (C) 2020-2022 Nordix Foundation
+ *  Modifications Copyright (C) 2020-2022 Bell Canada.
  *  ================================================================================
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
  *  You may obtain a copy of the License at
  *
  *        http://www.apache.org/licenses/LICENSE-2.0
+ *
  *  Unless required by applicable law or agreed to in writing, software
  *  distributed under the License is distributed on an "AS IS" BASIS,
  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
 package org.onap.cps.spi;
 
+import java.util.Collection;
 import java.util.Map;
+import org.onap.cps.spi.model.ModuleReference;
 
 /**
  * Service to manage modules.
  */
 public interface CpsModulePersistenceService {
 
-    /**
-     * TODO
-     * clean up method to conform with spi proposal - https://jira.onap.org/browse/CPS-103
-     * Store the module from a yang model in the database.
-     * @deprecated
-     *
-     * @param namespace     module namespace
-     * @param moduleContent module content
-     * @param revision      module revision
-     * @param dataspaceName the name of the dataspace the module is associated with
-     */
-    @Deprecated(forRemoval = true)
-    void storeModule(final String namespace, final String moduleContent, final String revision,
-                     final String dataspaceName);
-
-
     /**
      * Stores Schema Set.
      *
@@ -52,4 +39,74 @@ public interface CpsModulePersistenceService {
      */
     void storeSchemaSet(String dataspaceName, String schemaSetName, Map<String, String> yangResourcesNameToContentMap);
 
+    /**
+     * Stores a schema set from new modules and existing modules.
+     *
+     * @param dataspaceName                          Dataspace name
+     * @param schemaSetName                          Schema set name
+     * @param newModuleNameToContentMap YANG resources map where key is a module name and value is content
+     * @param moduleReferences                       List of YANG resources module references
+     */
+    void storeSchemaSetFromModules(String dataspaceName, String schemaSetName,
+        Map<String, String> newModuleNameToContentMap, Collection<ModuleReference> moduleReferences);
+
+    /**
+     * Deletes Schema Set.
+     *
+     * @param dataspaceName dataspace name
+     * @param schemaSetName schema set name
+     */
+    void deleteSchemaSet(String dataspaceName, String schemaSetName);
+
+    /**
+     * Returns YANG resources per specific dataspace / schemaSetName.
+     *
+     * @param dataspaceName dataspace name
+     * @param schemaSetName schema set name
+     * @return YANG resources (files) map where key is a name and value is content
+     */
+    Map<String, String> getYangSchemaResources(String dataspaceName, String schemaSetName);
+
+    /**
+     * Returns YANG resources per specific dataspace / anchorName.
+     *
+     * @param dataspaceName dataspace name
+     * @param anchorName    anchor name
+     * @return YANG resources (files) map where key is a name and value is content
+     */
+    Map<String, String> getYangSchemaSetResources(String dataspaceName, String anchorName);
+
+    /**
+     * Returns YANG resources module references for the given dataspace name.
+     *
+     * @param dataspaceName dataspace name
+     * @return Collection of all YANG resources module information in the database
+     */
+    Collection<ModuleReference> getYangResourceModuleReferences(String dataspaceName);
+
+    /**
+     * Get YANG resource module references for the given anchor name and dataspace name.
+     *
+     * @param dataspaceName dataspace name
+     * @param anchorName    anchor name
+     * @return a collection of module names and revisions
+     */
+    Collection<ModuleReference> getYangResourceModuleReferences(String dataspaceName, String anchorName);
+
+    /**
+     * Remove unused Yang Resource Modules.
+     */
+    void deleteUnusedYangResourceModules();
+
+    /**
+     * Identify new module references from those returned by a node compared to what is in CPS already.
+     * The system will ignore the namespace of all module references.
+     *
+     * @param moduleReferencesToCheck the module references ot check
+     * @returns Collection of {@link ModuleReference} (namespace will be always blank)
+     *
+     */
+    Collection<ModuleReference> identifyNewModuleReferences(
+        Collection<ModuleReference> moduleReferencesToCheck);
+
 }