diff options
author | Ruslan Kashapov <ruslan.kashapov@pantheon.tech> | 2021-01-11 15:34:10 +0200 |
---|---|---|
committer | Ruslan Kashapov <ruslan.kashapov@pantheon.tech> | 2021-01-18 17:44:56 +0200 |
commit | 6f25d3a2ae84aff3f22b50d10592c5321a7c98ce (patch) | |
tree | 7edb777884552ed4e8f28e8f0d66a5cbd22ea0ea /cps-service/src/main | |
parent | aee547cfbeb8780ed21d2ee902110a888aee3b56 (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')
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) + ); + } +} |