Add DMI to TrustLevel Cache During Registration
[cps.git] / cps-ncmp-service / src / main / java / org / onap / cps / ncmp / api / inventory / sync / ModuleSyncService.java
index 58e2bf3..7efce1a 100644 (file)
@@ -23,15 +23,16 @@ package org.onap.cps.ncmp.api.inventory.sync;
 import static org.onap.cps.ncmp.api.impl.constants.DmiRegistryConstants.NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME;
 
 import java.util.Collection;
-import java.util.HashMap;
+import java.util.Collections;
 import java.util.Map;
-import java.util.stream.Collectors;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.onap.cps.api.CpsAdminService;
 import org.onap.cps.api.CpsModuleService;
 import org.onap.cps.ncmp.api.impl.operations.DmiModelOperations;
 import org.onap.cps.ncmp.api.impl.yangmodels.YangModelCmHandle;
+import org.onap.cps.spi.CascadeDeleteAllowed;
+import org.onap.cps.spi.exceptions.SchemaSetNotFoundException;
 import org.onap.cps.spi.model.ModuleReference;
 import org.springframework.stereotype.Service;
 
@@ -52,35 +53,45 @@ public class ModuleSyncService {
      */
     public void syncAndCreateSchemaSetAndAnchor(final YangModelCmHandle yangModelCmHandle) {
 
-        final Collection<ModuleReference> moduleReferencesFromCmHandle =
+        final Collection<ModuleReference> allModuleReferencesFromCmHandle =
                 dmiModelOperations.getModuleReferences(yangModelCmHandle);
 
         final Collection<ModuleReference> identifiedNewModuleReferencesFromCmHandle = cpsModuleService
-                .identifyNewModuleReferences(moduleReferencesFromCmHandle);
-
-        final Collection<ModuleReference> existingModuleReferencesFromCmHandle =
-                moduleReferencesFromCmHandle.stream().filter(moduleReferenceFromCmHandle ->
-                        !identifiedNewModuleReferencesFromCmHandle.contains(moduleReferenceFromCmHandle)
-                ).collect(Collectors.toList());
+                .identifyNewModuleReferences(allModuleReferencesFromCmHandle);
 
         final Map<String, String> newModuleNameToContentMap;
         if (identifiedNewModuleReferencesFromCmHandle.isEmpty()) {
-            newModuleNameToContentMap = new HashMap<>();
+            newModuleNameToContentMap = Collections.emptyMap();
         } else {
             newModuleNameToContentMap = dmiModelOperations.getNewYangResourcesFromDmi(yangModelCmHandle,
                     identifiedNewModuleReferencesFromCmHandle);
         }
-        createSchemaSetAndAnchor(yangModelCmHandle, newModuleNameToContentMap, existingModuleReferencesFromCmHandle);
+        createSchemaSetAndAnchor(yangModelCmHandle, newModuleNameToContentMap, allModuleReferencesFromCmHandle);
     }
 
     private void createSchemaSetAndAnchor(final YangModelCmHandle yangModelCmHandle,
                                           final Map<String, String> newModuleNameToContentMap,
-                                          final Collection<ModuleReference> existingModuleReferencesFromCmHandle) {
+                                          final Collection<ModuleReference> allModuleReferencesFromCmHandle) {
         final String schemaSetAndAnchorName = yangModelCmHandle.getId();
         cpsModuleService.createSchemaSetFromModules(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, schemaSetAndAnchorName,
-                        newModuleNameToContentMap, existingModuleReferencesFromCmHandle);
+                        newModuleNameToContentMap, allModuleReferencesFromCmHandle);
         cpsAdminService.createAnchor(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, schemaSetAndAnchorName,
             schemaSetAndAnchorName);
     }
 
+    /**
+     * Deletes the SchemaSet for schema set id if the SchemaSet Exists.
+     *
+     * @param schemaSetId the schema set id to be deleted
+     */
+    public void deleteSchemaSetIfExists(final String schemaSetId) {
+        try {
+            cpsModuleService.deleteSchemaSet(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, schemaSetId,
+                CascadeDeleteAllowed.CASCADE_DELETE_ALLOWED);
+            log.debug("SchemaSet for {} has been deleted. Ready to be recreated.", schemaSetId);
+        } catch (final SchemaSetNotFoundException e) {
+            log.debug("No SchemaSet for {}. Assuming CmHandle has not been previously Module Synced.", schemaSetId);
+        }
+    }
+
 }