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