Add support for legacy guard policies
[policy/models.git] / models-tosca / src / main / java / org / onap / policy / models / tosca / legacy / concepts / LegacyGuardPolicyContent.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2019 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.legacy.concepts;
22
23 import java.lang.reflect.Field;
24 import java.util.HashMap;
25 import java.util.Map;
26
27 import javax.ws.rs.core.Response;
28
29 import lombok.Data;
30
31 import org.onap.policy.models.base.PfModelRuntimeException;
32 import org.onap.policy.models.tosca.legacy.mapping.LegacyGuardPolicyMapper;
33 import org.slf4j.Logger;
34 import org.slf4j.LoggerFactory;
35
36 /**
37  * Content object of a Legacy Guard Policy.
38  *
39  * @author Liam Fallon (liam.fallon@est.tech)
40  */
41 @Data
42 public class LegacyGuardPolicyContent {
43     private static final Logger LOGGER = LoggerFactory.getLogger(LegacyGuardPolicyMapper.class);
44
45     private String actor;
46     private String recipe;
47     private String targets;
48     private String clname;
49     private String limit;
50     private String timeWindow;
51     private String timeUnits;
52     private String min;
53     private String max;
54     private String guardActiveStart;
55     private String guardActiveEnd;
56
57     /**
58      * Get contents as a map.
59      *
60      * @return the contents as a map.
61      */
62     public Map<String, String> getAsPropertyMap() {
63         final Map<String, String> propertyMap = new HashMap<>();
64
65         try {
66             for (Field field : this.getClass().getDeclaredFields()) {
67                 if (field.get(this) != null && field.getType().equals(String.class)) {
68                     propertyMap.put(field.getName(), (String)field.get(this));
69                 }
70             }
71         } catch (Exception exc) {
72             String errorMessage = "could not convert content to a property map";
73             LOGGER.warn(errorMessage, exc);
74             throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, errorMessage, exc);
75
76         }
77
78         return propertyMap;
79     }
80 }