5a105b347a299b885f06571cf8fcaff62ab9695f
[cps.git] /
1 /*
2  *  ============LICENSE_START=======================================================
3  *  Copyright (C) 2022-2025 OpenInfra Foundation Europe. All rights reserved.
4  *  ================================================================================
5  *  Licensed under the Apache License, Version 2.0 (the "License");
6  *  you may not use this file except in compliance with the License.
7  *  You may obtain a copy of the License at
8  *
9  *        http://www.apache.org/licenses/LICENSE-2.0
10  *
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.ncmp.impl.inventory;
22
23 import java.util.Collection;
24 import org.onap.cps.ncmp.api.inventory.models.CmHandleQueryServiceParameters;
25 import org.onap.cps.ncmp.api.inventory.models.NcmpServiceCmHandle;
26 import reactor.core.publisher.Flux;
27
28 public interface ParameterizedCmHandleQueryService {
29     /**
30      * Query and return cm handle ids or alternate ids that match the given query parameters.
31      * Supported query types:
32      *      public properties
33      *      modules
34      *      cps-path
35      *      trust level
36      *
37      * @param cmHandleQueryServiceParameters the cm handle query parameters
38      * @param outputAlternateId Boolean for cm handle reference type either
39      *                            cm handle id (false or null) or alternate id (true)
40      * @return collection of cm handle ids or alternate ids
41      */
42     Collection<String> queryCmHandleReferenceIds(CmHandleQueryServiceParameters cmHandleQueryServiceParameters,
43                                                  boolean outputAlternateId);
44
45     /**
46      * Query and return cm handle ids or alternate ids that match the given query parameters.
47      * Supported query types:
48      *      public properties
49      *      private (additional) properties
50      *      dmi-names
51      * The inventory interface also allows conditions on private (additional) properties and dmi names
52      *
53      * @param cmHandleQueryServiceParameters the cm handle query parameters
54      * @param outputAlternateId Boolean for cm handle reference type either
55      *                            cm handle id (false or null) or alternate id (true)
56      * @return collection of cm handle ids
57      */
58     Collection<String> queryCmHandleIdsForInventory(CmHandleQueryServiceParameters cmHandleQueryServiceParameters,
59                                                     boolean outputAlternateId);
60
61     /**
62      * Query and return cm handle objects that match the given query parameters.
63      * Supported query types:
64      *      public properties
65      *      modules
66      *      cps-path
67      *      trust level
68      *
69      * @param cmHandleQueryServiceParameters the cm handle query parameters
70      * @return cm handle objects as a reactive stream (flux)
71      */
72     Flux<NcmpServiceCmHandle> queryCmHandles(CmHandleQueryServiceParameters cmHandleQueryServiceParameters);
73
74     /**
75      * Retrieves all {@code NcmpServiceCmHandle} instances without their associated properties.
76      * This method fetches the relevant data nodes from the inventory persistence layer and
77      * converts them into {@code NcmpServiceCmHandle} objects. Only the handles are returned,
78      * without any additional properties.
79      *
80      * @return a collection of {@code NcmpServiceCmHandle} instances without properties.
81      */
82     Collection<NcmpServiceCmHandle> getAllCmHandlesWithoutProperties();
83 }