Read resource dirs in models prvider unit tests
[policy/models.git] / models-tosca / src / main / java / org / onap / policy / models / tosca / utils / ToscaUtils.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2019-2020 Nordix Foundation.
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.policy.models.tosca.utils;
22
23 import java.util.function.Function;
24
25 import javax.ws.rs.core.Response;
26
27 import org.onap.policy.models.base.PfModelRuntimeException;
28 import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
29 import org.slf4j.Logger;
30 import org.slf4j.LoggerFactory;
31
32 /**
33  * Utility class for TOSCA concepts.
34  *
35  * @author Liam Fallon (liam.fallon@est.tech)
36  */
37 public final class ToscaUtils {
38     private static final Logger LOGGER = LoggerFactory.getLogger(ToscaUtils.class);
39
40     /**
41      * Private constructor to prevent subclassing.
42      */
43     private ToscaUtils() {
44         // Private constructor to prevent subclassing
45     }
46
47     /**
48      * Assert that data types have been specified correctly.
49      *
50      * @param serviceTemplate the service template containing data types to be checked
51      */
52     public static void assertDataTypesExist(final JpaToscaServiceTemplate serviceTemplate) {
53         assertExist(serviceTemplate, ToscaUtils::checkDataTypesExist);
54     }
55
56     /**
57      * Assert that policy types have been specified correctly.
58      *
59      * @param serviceTemplate the service template containing policy types to be checked
60      */
61     public static void assertPolicyTypesExist(final JpaToscaServiceTemplate serviceTemplate) {
62         assertExist(serviceTemplate, ToscaUtils::checkPolicyTypesExist);
63     }
64
65     /**
66      * Assert that policies have been specified correctly.
67      *
68      * @param serviceTemplate the service template containing policy types to be checked
69      */
70     public static void assertPoliciesExist(final JpaToscaServiceTemplate serviceTemplate) {
71         assertExist(serviceTemplate, ToscaUtils::checkPoliciesExist);
72     }
73
74     /**
75      * Check that data types have been specified correctly.
76      *
77      * @param serviceTemplate the service template containing data types to be checked
78      */
79     public static boolean doDataTypesExist(final JpaToscaServiceTemplate serviceTemplate) {
80         return doExist(serviceTemplate, ToscaUtils::checkDataTypesExist);
81     }
82
83     /**
84      * Check that policy types have been specified correctly.
85      *
86      * @param serviceTemplate the service template containing policy types to be checked
87      */
88     public static boolean doPolicyTypesExist(final JpaToscaServiceTemplate serviceTemplate) {
89         return doExist(serviceTemplate, ToscaUtils::checkPolicyTypesExist);
90     }
91
92     /**
93      * Check that policies have been specified correctly.
94      *
95      * @param serviceTemplate the service template containing policy types to be checked
96      */
97     public static boolean doPoliciesExist(final JpaToscaServiceTemplate serviceTemplate) {
98
99         return doExist(serviceTemplate, ToscaUtils::checkPoliciesExist);
100     }
101
102     /**
103      * Assert that something have been specified correctly.
104      *
105      * @param serviceTemplate the service template containing policy types to be checked
106      */
107     public static void assertExist(final JpaToscaServiceTemplate serviceTemplate,
108             final Function<JpaToscaServiceTemplate, String> checkerFunction) {
109         String message = checkerFunction.apply(serviceTemplate);
110         if (message != null) {
111             LOGGER.warn(message);
112             throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, message);
113         }
114     }
115
116     /**
117      * Check that something have been specified correctly.
118      *
119      * @param serviceTemplate the service template containing policy types to be checked
120      */
121     public static boolean doExist(final JpaToscaServiceTemplate serviceTemplate,
122             final Function<JpaToscaServiceTemplate, String> checkerFunction) {
123         return checkerFunction.apply(serviceTemplate) == null;
124     }
125
126     /**
127      * Check if data types have been specified correctly.
128      */
129     public static String checkDataTypesExist(final JpaToscaServiceTemplate serviceTemplate) {
130         if (serviceTemplate.getDataTypes() == null) {
131             return "no data types specified on service template";
132         }
133
134         if (serviceTemplate.getDataTypes().getConceptMap().isEmpty()) {
135             return "list of data types specified on service template is empty";
136         }
137
138         return null;
139     }
140
141     /**
142      * Check if policy types have been specified correctly.
143      */
144     public static String checkPolicyTypesExist(final JpaToscaServiceTemplate serviceTemplate) {
145         if (serviceTemplate.getPolicyTypes() == null) {
146             return "no policy types specified on service template";
147         }
148
149         if (serviceTemplate.getPolicyTypes().getConceptMap().isEmpty()) {
150             return "list of policy types specified on service template is empty";
151         }
152
153         return null;
154     }
155
156     /**
157      * Check if policies have been specified correctly.
158      */
159     public static String checkPoliciesExist(final JpaToscaServiceTemplate serviceTemplate) {
160         if (serviceTemplate.getTopologyTemplate() == null) {
161             return "topology template not specified on service template";
162         }
163
164         if (serviceTemplate.getTopologyTemplate().getPolicies() == null) {
165             return "no policies specified on topology template of service template";
166         }
167
168         if (serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().isEmpty()) {
169             return "list of policies specified on topology template of service template is empty";
170         }
171
172         return null;
173     }
174 }