From cb03544962c994c0cc9d9117a3c6b9182ce22204 Mon Sep 17 00:00:00 2001
From: Ruslan Kashapov <ruslan.kashapov@pantheon.tech>
Date: Tue, 24 Nov 2020 11:13:43 +0200
Subject: Schema Set persistence (store) implementation

Issue-ID: CPS-92
Change-Id: I11257726e4f847e3337d8bafad824853e6a458e2
Signed-off-by: Ruslan Kashapov <ruslan.kashapov@pantheon.tech>
---
 .../onap/cps/exceptions/CpsExceptionBuilder.java   | 94 ++++++++++++++++++++++
 .../org/onap/cps/spi/ModelPersistenceService.java  | 19 ++++-
 2 files changed, 110 insertions(+), 3 deletions(-)
 create mode 100644 cps-service/src/main/java/org/onap/cps/exceptions/CpsExceptionBuilder.java

(limited to 'cps-service/src')

diff --git a/cps-service/src/main/java/org/onap/cps/exceptions/CpsExceptionBuilder.java b/cps-service/src/main/java/org/onap/cps/exceptions/CpsExceptionBuilder.java
new file mode 100644
index 0000000000..2acbb92322
--- /dev/null
+++ b/cps-service/src/main/java/org/onap/cps/exceptions/CpsExceptionBuilder.java
@@ -0,0 +1,94 @@
+/*
+ *  ============LICENSE_START=======================================================
+ *  Copyright (C) 2020 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.exceptions;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+
+/**
+ * Utility class.
+ * Serves error message consistency for same error cases occurred in different CPS modules.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public class CpsExceptionBuilder {
+
+    private static final String SCHEMA_SET_IS_INVALID = "Schema Set is invalid.";
+
+    /**
+     * Generates validation error exception for case when requested dataspace is absent.
+     *
+     * @param dataspaceName dataspace name
+     */
+    public static CpsException invalidDataspaceException(final String dataspaceName) {
+        return new CpsValidationException("Dataspace is invalid.",
+            String.format("Dataspace with name %s does not exist.", dataspaceName));
+    }
+
+    /**
+     * Generates validation error exception for case when requested schema set is absent for existing dataspace.
+     *
+     * @param dataspaceName dataspace name
+     * @param schemaSetName schema set name
+     */
+    public static CpsException invalidSchemaSetException(final String dataspaceName, final String schemaSetName) {
+        return new CpsValidationException(SCHEMA_SET_IS_INVALID,
+            String.format("Schema Set with name %s was not found for dataspace %s.", schemaSetName, dataspaceName));
+    }
+
+    /**
+     * Returns validation error exception for case when SchemaSet contains no files.
+     */
+    public static CpsException emptySchemaSetException() {
+        return new CpsValidationException(SCHEMA_SET_IS_INVALID, "Schema Set has no YANG resources to store");
+    }
+
+    /**
+     * Generates validation error exception for case when SchemaSet with same name already exists in the dataspace.
+     *
+     * @param dataspaceName dataspace name
+     * @param schemaSetName schema set name
+     */
+    public static CpsException duplicateSchemaSetException(final String dataspaceName, final String schemaSetName) {
+        return new CpsValidationException(SCHEMA_SET_IS_INVALID,
+            String.format("Schema Set with name %s already exists for dataspace %s.", schemaSetName, dataspaceName));
+    }
+
+    /**
+     * Generates no data found exception for case when requested dataspace is absent.
+     *
+     * @param dataspaceName dataspace name
+     */
+    public static CpsException dataspaceNotFoundException(final String dataspaceName) {
+        return new CpsNotFoundException("Dataspace was not found.",
+            String.format("Dataspace with name %s does not exist.", dataspaceName));
+    }
+
+    /**
+     * Generates no data found exception for case when requested SchemaSet is absent for existing dataspace.
+     *
+     * @param dataspaceName dataspace name
+     * @param schemaSetName schema set name
+     */
+    public static CpsException schemaSetNotFoundException(final String dataspaceName, final String schemaSetName) {
+        return new CpsNotFoundException("Schema Set was not found.",
+            String.format("Schema Set with name %s was not found for dataspace %s.", schemaSetName, dataspaceName));
+    }
+
+}
diff --git a/cps-service/src/main/java/org/onap/cps/spi/ModelPersistenceService.java b/cps-service/src/main/java/org/onap/cps/spi/ModelPersistenceService.java
index 3f0b3c1109..9eed2807cf 100755
--- a/cps-service/src/main/java/org/onap/cps/spi/ModelPersistenceService.java
+++ b/cps-service/src/main/java/org/onap/cps/spi/ModelPersistenceService.java
@@ -20,6 +20,8 @@
 
 package org.onap.cps.spi;
 
+import java.util.Set;
+
 /**
  * Defines methods to access and manipulate data using the chosen database solution.
  */
@@ -28,12 +30,23 @@ public interface ModelPersistenceService {
     /**
      * Store the module from a yang model in the database.
      *
-     * @param namespace module namespace
+     * @param namespace     module namespace
      * @param moduleContent module content
-     * @param revision module revision
+     * @param revision      module revision
      * @param dataspaceName the name of the dataspace the module is associated with
      */
+    @Deprecated
     void storeModule(final String namespace, final String moduleContent, final String revision,
-        final String dataspaceName);
+                     final String dataspaceName);
+
+
+    /**
+     * Stores Schema Set.
+     *
+     * @param dataspaceName          dataspace name
+     * @param schemaSetName          schema set name
+     * @param yangResourcesAsStrings the content of YANG resources (files)
+     */
+    void storeSchemaSet(String dataspaceName, String schemaSetName, Set<String> yangResourcesAsStrings);
 
 }
-- 
cgit