summaryrefslogtreecommitdiffstats
path: root/cps-service/src/main
diff options
context:
space:
mode:
authorRuslan Kashapov <ruslan.kashapov@pantheon.tech>2021-01-11 15:34:10 +0200
committerRuslan Kashapov <ruslan.kashapov@pantheon.tech>2021-01-18 17:44:56 +0200
commit6f25d3a2ae84aff3f22b50d10592c5321a7c98ce (patch)
tree7edb777884552ed4e8f28e8f0d66a5cbd22ea0ea /cps-service/src/main
parentaee547cfbeb8780ed21d2ee902110a888aee3b56 (diff)
Delete schema set - persistence layer
Issue-ID: CPS-121 Change-Id: I6fc8343969971b76d7f78ad202dd8ec1058c03fb Signed-off-by: Ruslan Kashapov <ruslan.kashapov@pantheon.tech>
Diffstat (limited to 'cps-service/src/main')
-rw-r--r--cps-service/src/main/java/org/onap/cps/spi/CascadeDeleteAllowed.java28
-rwxr-xr-xcps-service/src/main/java/org/onap/cps/spi/CpsModulePersistenceService.java13
-rw-r--r--cps-service/src/main/java/org/onap/cps/spi/exceptions/DataInUseException.java38
-rw-r--r--cps-service/src/main/java/org/onap/cps/spi/exceptions/SchemaSetInUseException.java42
4 files changed, 121 insertions, 0 deletions
diff --git a/cps-service/src/main/java/org/onap/cps/spi/CascadeDeleteAllowed.java b/cps-service/src/main/java/org/onap/cps/spi/CascadeDeleteAllowed.java
new file mode 100644
index 0000000000..e685434a60
--- /dev/null
+++ b/cps-service/src/main/java/org/onap/cps/spi/CascadeDeleteAllowed.java
@@ -0,0 +1,28 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2021 Pantheon.tech
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.cps.spi;
+
+/**
+ * Cascade delete option.
+ */
+public enum CascadeDeleteAllowed {
+ CASCADE_DELETE_ALLOWED,
+ CASCADE_DELETE_PROHIBITED
+}
diff --git a/cps-service/src/main/java/org/onap/cps/spi/CpsModulePersistenceService.java b/cps-service/src/main/java/org/onap/cps/spi/CpsModulePersistenceService.java
index dc4e26b913..f5837e813e 100755
--- a/cps-service/src/main/java/org/onap/cps/spi/CpsModulePersistenceService.java
+++ b/cps-service/src/main/java/org/onap/cps/spi/CpsModulePersistenceService.java
@@ -22,6 +22,7 @@ package org.onap.cps.spi;
import java.util.Map;
import org.checkerframework.checker.nullness.qual.NonNull;
+import org.onap.cps.spi.exceptions.DataInUseException;
/**
* Service to manage modules.
@@ -39,6 +40,18 @@ public interface CpsModulePersistenceService {
@NonNull Map<String, String> yangResourcesNameToContentMap);
/**
+ * Deletes Schema Set.
+ *
+ * @param dataspaceName dataspace name
+ * @param schemaSetName schema set name
+ * @param cascadeDeleteAllowed indicates the allowance to remove associated anchors and data if exist
+ * @throws DataInUseException if cascadeDeleteAllowed is set to CASCADE_DELETE_PROHIBITED and there
+ * is associated anchor record exists in database
+ */
+ void deleteSchemaSet(@NonNull String dataspaceName, @NonNull String schemaSetName,
+ @NonNull CascadeDeleteAllowed cascadeDeleteAllowed);
+
+ /**
* Returns YANG resources per specific dataspace / schemaSetName.
*
* @param dataspaceName dataspace name
diff --git a/cps-service/src/main/java/org/onap/cps/spi/exceptions/DataInUseException.java b/cps-service/src/main/java/org/onap/cps/spi/exceptions/DataInUseException.java
new file mode 100644
index 0000000000..fb023913d0
--- /dev/null
+++ b/cps-service/src/main/java/org/onap/cps/spi/exceptions/DataInUseException.java
@@ -0,0 +1,38 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2021 Pantheon.tech
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.cps.spi.exceptions;
+
+/**
+ * Runtime exception. Thrown when data record rejected to be deleted because it's being referenced by other data.
+ */
+public class DataInUseException extends CpsException {
+
+ private static final long serialVersionUID = 5011830482789788314L;
+
+ /**
+ * Constructor.
+ *
+ * @param message error message
+ * @param details error details
+ */
+ public DataInUseException(final String message, final String details) {
+ super(message, details);
+ }
+}
diff --git a/cps-service/src/main/java/org/onap/cps/spi/exceptions/SchemaSetInUseException.java b/cps-service/src/main/java/org/onap/cps/spi/exceptions/SchemaSetInUseException.java
new file mode 100644
index 0000000000..28bbb5741c
--- /dev/null
+++ b/cps-service/src/main/java/org/onap/cps/spi/exceptions/SchemaSetInUseException.java
@@ -0,0 +1,42 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2021 Pantheon.tech
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.cps.spi.exceptions;
+
+/**
+ * Runtime exception. Thrown when schema set record rejected to be deleted because it has anchor records associated.
+ */
+@SuppressWarnings("squid:S110") // Team agreed to accept 6 levels of inheritance for CPS Exceptions
+public class SchemaSetInUseException extends DataInUseException {
+
+ private static final long serialVersionUID = -3729328573253023683L;
+
+ /**
+ * Constructor.
+ *
+ * @param dataspaceName dataspace name
+ * @param schemaSetName schema set name
+ */
+ public SchemaSetInUseException(final String dataspaceName, final String schemaSetName) {
+ super("Schema Set is being used.",
+ String.format("Schema Set with name %s in dataspace %s is having Anchor records associated.",
+ schemaSetName, dataspaceName)
+ );
+ }
+}