aboutsummaryrefslogtreecommitdiffstats
path: root/cps-service/src/main/java/org/onap/cps/spi/CpsAdminPersistenceService.java
blob: 5a1810f473cf2a015fca5e57894a79d4b32c5082 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
/*
 * ============LICENSE_START=======================================================
 *  Copyright (C) 2020-2022 Nordix Foundation.
 *  Modifications Copyright (C) 2020-2022 Bell Canada.
 *  Modifications Copyright (C) 2021 Pantheon.tech
 *  Modifications Copyright (C) 2022 TechMahindra Ltd.
 * ================================================================================
 * 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;

import java.util.Collection;
import org.onap.cps.spi.exceptions.AlreadyDefinedException;
import org.onap.cps.spi.model.Anchor;
import org.onap.cps.spi.model.Dataspace;

/*
    Service for handling CPS admin data.
 */
public interface CpsAdminPersistenceService {

    /**
     * Create dataspace.
     *
     * @param dataspaceName dataspace name
     * @throws AlreadyDefinedException if dataspace with same name already exists
     */
    void createDataspace(String dataspaceName);

    /**
     * Delete dataspace.
     *
     * @param dataspaceName the name of the dataspace to delete
     */
    void deleteDataspace(String dataspaceName);

    /**
     * Get dataspace.
     *
     * @param dataspaceName dataspace name
     * @return a dataspace
     */
    Dataspace getDataspace(String dataspaceName);

    /**
     * Get all dataspaces.
     *
     * @return a collection of dataspaces.
     */
    Collection<Dataspace> getAllDataspaces();

    /**
     * Create an Anchor.
     *
     * @param dataspaceName dataspace name
     * @param schemaSetName schema set name
     * @param anchorName    anchor name
     */
    void createAnchor(String dataspaceName, String schemaSetName, String anchorName);

    /**
     * Read all anchors associated with the given schema-set in the given dataspace.
     *
     * @param dataspaceName dataspace name
     * @param schemaSetName schema-set name
     * @return a collection of anchors
     */
    Collection<Anchor> getAnchors(String dataspaceName, String schemaSetName);

    /**
     * Read all anchors associated with multiple schema-sets in the given dataspace.
     *
     * @param dataspaceName  dataspace name
     * @param schemaSetNames schema-set names
     * @return a collection of anchors
     */
    Collection<Anchor> getAnchors(String dataspaceName, Collection<String> schemaSetNames);

    /**
     * Read all anchors in the given a dataspace.
     *
     * @param dataspaceName dataspace name
     * @return a collection of anchors
     */
    Collection<Anchor> getAnchors(String dataspaceName);

    /**
     * Query anchor names for the given module names in the provided dataspace.
     * If dataspace or one of the given module names does not exists, return with an empty collection.
     *
     * @param dataspaceName dataspace name
     * @param moduleNames a collection of module names
     * @return a collection of anchor names in the given dataspace. The schema set for each anchor must include all the
     *         given module names
     */
    Collection<Anchor> queryAnchors(String dataspaceName, Collection<String> moduleNames);

    /**
     * Get an anchor in the given dataspace using the anchor name.
     *
     * @param dataspaceName dataspace name
     * @param anchorName anchor name
     * @return an anchor
     */
    Anchor getAnchor(String dataspaceName, String anchorName);

    /**
     * Delete anchor by name in given dataspace.
     *
     * @param dataspaceName dataspace name
     * @param anchorName anchor name
     */
    void deleteAnchor(String dataspaceName, String anchorName);

    /**
     * Delete anchors by name in given dataspace.
     *
     * @param dataspaceName dataspace name
     * @param anchorNames   anchor names
     */
    void deleteAnchors(String dataspaceName, Collection<String> anchorNames);

    /**
     * Delete anchors by name in given dataspace.
     *
     * @param dataspaceName dataspace name
     * @param anchorName    anchor name
     * @param schemaSetName schema set name
     */
    void updateAnchorSchemaSet(String dataspaceName, String anchorName, String schemaSetName);
}