CPS-314: Delete Dataspace
[cps.git] / cps-ri / src / main / java / org / onap / cps / spi / impl / CpsAdminPersistenceServiceImpl.java
index b1bd03c..9c69006 100755 (executable)
@@ -32,6 +32,7 @@ import org.onap.cps.spi.entities.AnchorEntity;
 import org.onap.cps.spi.entities.DataspaceEntity;
 import org.onap.cps.spi.entities.YangResourceModuleReference;
 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.repository.AnchorRepository;
@@ -70,6 +71,22 @@ public class CpsAdminPersistenceServiceImpl implements CpsAdminPersistenceServic
         }
     }
 
+    @Override
+    public void deleteDataspace(final String dataspaceName) {
+        final DataspaceEntity dataspaceEntity = dataspaceRepository.getByName(dataspaceName);
+        final int numberOfAssociatedAnchors = anchorRepository.countByDataspace(dataspaceEntity);
+        if (numberOfAssociatedAnchors != 0) {
+            throw new DataspaceInUseException(dataspaceName,
+                    String.format("Dataspace contains %d anchor(s)", numberOfAssociatedAnchors));
+        }
+        final int numberOfAssociatedSchemaSets = schemaSetRepository.countByDataspace(dataspaceEntity);
+        if (numberOfAssociatedSchemaSets != 0) {
+            throw new DataspaceInUseException(dataspaceName,
+                    String.format("Dataspace contains %d schemaset(s)", numberOfAssociatedSchemaSets));
+        }
+        dataspaceRepository.delete(dataspaceEntity);
+    }
+
     @Override
     public void createAnchor(final String dataspaceName, final String schemaSetName, final String anchorName) {
         final var dataspaceEntity = dataspaceRepository.getByName(dataspaceName);