From 6f25d3a2ae84aff3f22b50d10592c5321a7c98ce Mon Sep 17 00:00:00 2001 From: Ruslan Kashapov Date: Mon, 11 Jan 2021 15:34:10 +0200 Subject: Delete schema set - persistence layer Issue-ID: CPS-121 Change-Id: I6fc8343969971b76d7f78ad202dd8ec1058c03fb Signed-off-by: Ruslan Kashapov --- .../org/onap/cps/spi/CascadeDeleteAllowed.java | 28 +++++++++++++++ .../onap/cps/spi/CpsModulePersistenceService.java | 13 +++++++ .../cps/spi/exceptions/DataInUseException.java | 38 ++++++++++++++++++++ .../spi/exceptions/SchemaSetInUseException.java | 42 ++++++++++++++++++++++ 4 files changed, 121 insertions(+) create mode 100644 cps-service/src/main/java/org/onap/cps/spi/CascadeDeleteAllowed.java create mode 100644 cps-service/src/main/java/org/onap/cps/spi/exceptions/DataInUseException.java create mode 100644 cps-service/src/main/java/org/onap/cps/spi/exceptions/SchemaSetInUseException.java (limited to 'cps-service/src/main/java/org') 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 000000000..e685434a6 --- /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 dc4e26b91..f5837e813 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. @@ -38,6 +39,18 @@ public interface CpsModulePersistenceService { void storeSchemaSet(@NonNull String dataspaceName, @NonNull String schemaSetName, @NonNull Map 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. * 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 000000000..fb023913d --- /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 000000000..28bbb5741 --- /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) + ); + } +} -- cgit 1.2.3-korg