Query based on Public CM Properties
[cps.git] / cps-ri / src / main / java / org / onap / cps / spi / impl / CpsAdminPersistenceServiceImpl.java
index 5b89d9f..2e7bb7e 100755 (executable)
@@ -1,6 +1,6 @@
 /*
  * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
+ * Copyright (C) 2020-2022 Nordix Foundation.
  * Modifications Copyright (C) 2020-2022 Bell Canada.
  * Modifications Copyright (C) 2021 Pantheon.tech
  * ================================================================================
@@ -24,6 +24,7 @@ package org.onap.cps.spi.impl;
 
 import java.util.Collection;
 import java.util.List;
+import java.util.Set;
 import java.util.stream.Collectors;
 import javax.transaction.Transactional;
 import lombok.AllArgsConstructor;
@@ -36,8 +37,10 @@ import org.onap.cps.spi.exceptions.AlreadyDefinedException;
 import org.onap.cps.spi.exceptions.DataspaceInUseException;
 import org.onap.cps.spi.exceptions.ModuleNamesNotFoundException;
 import org.onap.cps.spi.model.Anchor;
+import org.onap.cps.spi.model.CmHandleQueryParameters;
 import org.onap.cps.spi.repository.AnchorRepository;
 import org.onap.cps.spi.repository.DataspaceRepository;
+import org.onap.cps.spi.repository.ModuleReferenceRepository;
 import org.onap.cps.spi.repository.SchemaSetRepository;
 import org.onap.cps.spi.repository.YangResourceRepository;
 import org.springframework.dao.DataIntegrityViolationException;
@@ -51,6 +54,7 @@ public class CpsAdminPersistenceServiceImpl implements CpsAdminPersistenceServic
     private final AnchorRepository anchorRepository;
     private final SchemaSetRepository schemaSetRepository;
     private final YangResourceRepository yangResourceRepository;
+    private final ModuleReferenceRepository moduleReferenceRepository;
 
     @Override
     public void createDataspace(final String dataspaceName) {
@@ -132,6 +136,11 @@ public class CpsAdminPersistenceServiceImpl implements CpsAdminPersistenceServic
         anchorRepository.delete(anchorEntity);
     }
 
+    @Override
+    public Set<String> queryCmHandles(final CmHandleQueryParameters cmHandleQueryParameters) {
+        return moduleReferenceRepository.queryCmHandles(cmHandleQueryParameters);
+    }
+
     private AnchorEntity getAnchorEntity(final String dataspaceName, final String anchorName) {
         final var dataspaceEntity = dataspaceRepository.getByName(dataspaceName);
         return anchorRepository.getByDataspaceAndName(dataspaceEntity, anchorName);
@@ -147,20 +156,24 @@ public class CpsAdminPersistenceServiceImpl implements CpsAdminPersistenceServic
 
     private void validateDataspaceAndModuleNames(final String dataspaceName,
         final Collection<String> inputModuleNames) {
-        final Collection<String> retrievedModuleNames =
-            yangResourceRepository.findAllModuleReferences(dataspaceName, inputModuleNames)
+        final Collection<String> retrievedModuleReferences =
+            yangResourceRepository.findAllModuleReferencesByDataspaceAndModuleNames(dataspaceName, inputModuleNames)
                 .stream().map(YangResourceModuleReference::getModuleName)
                 .collect(Collectors.toList());
-        if (retrievedModuleNames.isEmpty()) {
-            dataspaceRepository.getByName(dataspaceName);
+        if (retrievedModuleReferences.isEmpty()) {
+            verifyDataspaceName(dataspaceName);
         }
-        if (inputModuleNames.size() > retrievedModuleNames.size()) {
+        if (inputModuleNames.size() > retrievedModuleReferences.size()) {
             final List<String> moduleNamesNotFound = inputModuleNames.stream()
-                .filter(moduleName -> !retrievedModuleNames.contains(moduleName))
+                .filter(moduleName -> !retrievedModuleReferences.contains(moduleName))
                 .collect(Collectors.toList());
             if (!moduleNamesNotFound.isEmpty()) {
                 throw new ModuleNamesNotFoundException(dataspaceName, moduleNamesNotFound);
             }
         }
     }
+
+    private void verifyDataspaceName(final String dataspaceName) {
+        dataspaceRepository.getByName(dataspaceName);
+    }
 }