Fix sonar issues in policy-api
[policy/api.git] / main / src / main / java / org / onap / policy / api / main / parameters / ApiParameterGroup.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2018 Samsung Electronics Co., Ltd. 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.policy.api.main.parameters;
22
23 import java.util.List;
24 import org.onap.policy.common.endpoints.parameters.RestServerParameters;
25 import org.onap.policy.common.parameters.GroupValidationResult;
26 import org.onap.policy.common.parameters.ParameterGroup;
27 import org.onap.policy.common.parameters.ValidationStatus;
28 import org.onap.policy.common.utils.validation.ParameterValidationUtils;
29 import org.onap.policy.models.provider.PolicyModelsProviderParameters;
30
31 /**
32  * Class to hold all parameters needed for Api component.
33  *
34  */
35 public class ApiParameterGroup implements ParameterGroup {
36
37     private String name;
38     private RestServerParameters restServerParameters;
39     private PolicyModelsProviderParameters databaseProviderParameters;
40     private List<String> preloadPolicyTypes;
41
42     /**
43      * Create the api parameter group.
44      *
45      * @param name the parameter group name
46      * @param restServerParameters the parameters for instantiating API rest server
47      * @param databaseProviderParameters the parameters for instantiating database provider
48      * @param preloadPolicyTypes the list of preloaded policy types
49      */
50     public ApiParameterGroup(final String name, final RestServerParameters restServerParameters,
51             final PolicyModelsProviderParameters databaseProviderParameters, final List<String> preloadPolicyTypes) {
52         this.name = name;
53         this.restServerParameters = restServerParameters;
54         this.databaseProviderParameters = databaseProviderParameters;
55         this.preloadPolicyTypes = preloadPolicyTypes;
56     }
57
58     /**
59      * Return the name of this parameter group instance.
60      *
61      * @return name the parameter group name
62      */
63     @Override
64     public String getName() {
65         return name;
66     }
67
68     /**
69      * Set the name of this parameter group instance.
70      *
71      * @param name the parameter group name
72      */
73     @Override
74     public void setName(String name) {
75         this.name = name;
76     }
77
78     /**
79      * Return the restServerParameters of this parameter group instance.
80      *
81      * @return the restServerParameters
82      */
83     public RestServerParameters getRestServerParameters() {
84         return restServerParameters;
85     }
86
87     /**
88      * Return the databaseProviderParameters of this parameter group instance.
89      *
90      * @return the databaseProviderParameters
91      */
92     public PolicyModelsProviderParameters getDatabaseProviderParameters() {
93         return databaseProviderParameters;
94     }
95
96     /**
97      * Return the preloadPolicyTypes of this parameter group instance.
98      *
99      * @return the preloadPolicyTypes
100      */
101     public List<String> getPreloadPolicyTypes() {
102         return preloadPolicyTypes;
103     }
104
105     /**
106      * Validate the parameter group.
107      *
108      * @return the result of the validation
109      */
110     @Override
111     public GroupValidationResult validate() {
112         final GroupValidationResult validationResult = new GroupValidationResult(this);
113         if (!ParameterValidationUtils.validateStringParameter(name)) {
114             validationResult.setResult("name", ValidationStatus.INVALID, "must be a non-blank string");
115         }
116         if (restServerParameters == null) {
117             validationResult.setResult("restServerParameters", ValidationStatus.INVALID,
118                     "must have restServerParameters to configure api rest server");
119         } else {
120             validationResult.setResult("restServerParameters", restServerParameters.validate());
121         }
122         if (databaseProviderParameters == null) {
123             validationResult.setResult("databaseProviderParameters", ValidationStatus.INVALID,
124                     "must have databaseProviderParameters to configure api rest server");
125         } else {
126             validationResult.setResult("databaseProviderParameters", databaseProviderParameters.validate());
127         }
128         return validationResult;
129     }
130 }