726ca0f28d6f719c7198113606adeddcefd8bd03
[cps.git] / cps-service / src / main / java / org / onap / cps / api / CpService.java
1 /*
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2020 Nordix Foundation
4  *  Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
5  *  ================================================================================
6  *  Licensed under the Apache License, Version 2.0 (the "License");
7  *  you may not use this file except in compliance with the License.
8  *  You may obtain a copy of the License at
9  *
10  *        http://www.apache.org/licenses/LICENSE-2.0
11  *  Unless required by applicable law or agreed to in writing, software
12  *  distributed under the License is distributed on an "AS IS" BASIS,
13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *  See the License for the specific language governing permissions and
15  *  limitations under the License.
16  *
17  *  SPDX-License-Identifier: Apache-2.0
18  *  ============LICENSE_END=========================================================
19  */
20
21 package org.onap.cps.api;
22
23 import java.io.File;
24 import org.onap.cps.api.model.AnchorDetails;
25 import org.onap.cps.exceptions.CpsValidationException;
26 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
27
28 /**
29  * Configuration and persistency service interface which holds methods for parsing and storing yang models and data.
30  */
31 public interface CpService {
32
33     /**
34      * Parse and validate a string representing a yang model to generate a schema context.
35      *
36      * @param yangModelContent the input stream
37      * @return the schema context
38      */
39     SchemaContext parseAndValidateModel(String yangModelContent);
40
41     /**
42      * Parse and validate a file representing a yang model to generate a schema context.
43      *
44      * @param yangModelFile the yang file
45      * @return the schema context
46      */
47     SchemaContext parseAndValidateModel(File yangModelFile);
48
49     /**
50      * Store schema context for a yang model.
51      *
52      * @param schemaContext the schema context
53      * @param dataspaceName the dataspace name
54      * @throws CpsValidationException if input data already exists.
55      */
56     void storeSchemaContext(SchemaContext schemaContext, String dataspaceName);
57
58     /**
59      * Store the JSON structure in the database.
60      *
61      * @param jsonStructure the JSON structure.
62      * @return entity ID.
63      */
64     Integer storeJsonStructure(String jsonStructure);
65
66     /**
67      * Read a JSON Object using the object identifier.
68      *
69      * @param jsonObjectId the JSON object identifier.
70      * @return the JSON structure.
71      */
72     String getJsonById(int jsonObjectId);
73
74     /**
75      * Delete a JSON Object using the object identifier.
76      *
77      * @param jsonObjectId the JSON object identifier.
78      */
79     void deleteJsonById(int jsonObjectId);
80
81     /**
82      * Create an anchor using provided anchorDetails object.
83      *
84      * @param anchorDetails the anchor details object.
85      * @return the anchor name.
86      * @throws CpsValidationException if input data is invalid.
87      */
88     String createAnchor(AnchorDetails anchorDetails);
89 }