Declare properties as policies
[sdc.git] / common-be / src / main / java / org / openecomp / sdc / be / datatypes / elements / PolicyDataDefinition.java
1 package org.openecomp.sdc.be.datatypes.elements;
2
3 import static java.util.Collections.emptyList;
4
5 import java.util.List;
6 import java.util.Map;
7 import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
8
9 /**
10  * public class representing the component policy,
11  * described by the next properties:
12  * <p>
13  * name
14  * uniqueId
15  * type (policy type name)
16  * typeUid (policy type uniqueId)
17  * version (version)
18  * derivedFrom (policy type derivedFrom)
19  * description
20  * policyUUID
21  * invariantUUID
22  * members
23  * metadata
24  * properties
25  * targets
26  * isFromCsar
27  */
28 public class PolicyDataDefinition extends PropertyDataDefinition {
29
30     /**
31      * public constructor by default
32      */
33     public PolicyDataDefinition() {
34         super();
35     }
36
37     public PolicyDataDefinition(PropertyDataDefinition propertyDataDefinition) {
38         super(propertyDataDefinition);
39     }
40
41     /**
42      * public constructor from superclass
43      *
44      * @param policy
45      */
46     public PolicyDataDefinition(Map<String, Object> policy) {
47         super(policy);
48     }
49
50     /**
51      * public copy constructor
52      *
53      * @param other
54      */
55     public PolicyDataDefinition(PolicyDataDefinition other) {
56         super(other);
57         this.setName(other.getName());
58         this.setUniqueId(other.getUniqueId());
59         this.setPolicyTypeName(other.getPolicyTypeName());
60         this.setPolicyTypeUid(other.getPolicyTypeUid());
61         this.setVersion(other.getVersion());
62         this.setDerivedFrom(other.getDerivedFrom());
63         this.setDescription(other.getDescription());
64         this.setPolicyUUID(other.getPolicyUUID());
65         this.setInvariantUUID(other.getInvariantUUID());
66         this.setInvariantName(other.getInvariantName());
67         this.setComponentName(other.getComponentName());
68         this.setIsFromCsar(other.getIsFromCsar());
69         this.setValue(other.getValue());
70         this.setOwnerId(other.getOwnerId());
71         this.setType(other.getType());
72         this.setInstanceUniqueId(other.getInstanceUniqueId());
73         this.setInputPath(other.getInputPath());
74         if (other.getProperties() != null) {
75             this.setProperties(other.getProperties());
76         }
77         if (other.getTargets() != null) {
78             this.setTargets(other.getTargets());
79         }
80     }
81
82     private void setIsFromCsar(Boolean isFromCsar) {
83         if (isFromCsar == null) {
84             setToscaPresentationValue(JsonPresentationFields.IS_FROM_CSAR, false);
85         } else {
86             setToscaPresentationValue(JsonPresentationFields.IS_FROM_CSAR, isFromCsar);
87         }
88     }
89
90     public Boolean getIsFromCsar() {
91         Boolean isFromCsar = (Boolean) getToscaPresentationValue(JsonPresentationFields.IS_FROM_CSAR);
92         return (isFromCsar != null) ? isFromCsar : false;
93     }
94
95     public String getComponentName() {
96         return (String) getToscaPresentationValue(JsonPresentationFields.CI_COMPONENT_NAME);
97     }
98
99     public void setComponentName(String componentName) {
100         setToscaPresentationValue(JsonPresentationFields.CI_COMPONENT_NAME, componentName);
101     }
102
103     public String getInvariantName() {
104         return (String) getToscaPresentationValue(JsonPresentationFields.CI_INVARIANT_NAME);
105     }
106
107     public void setInvariantName(Object invariantName) {
108         setToscaPresentationValue(JsonPresentationFields.CI_INVARIANT_NAME, invariantName);
109     }
110
111     public String getPolicyTypeName() {
112         return (String) getToscaPresentationValue(JsonPresentationFields.TYPE);
113     }
114
115     public void setPolicyTypeName(String policyTypeName) {
116         setToscaPresentationValue(JsonPresentationFields.TYPE, policyTypeName);
117     }
118
119     public String getPolicyTypeUid() {
120         return (String) getToscaPresentationValue(JsonPresentationFields.TYPE_UNIQUE_ID);
121     }
122
123     public void setPolicyTypeUid(String policyTypeUid) {
124         setToscaPresentationValue(JsonPresentationFields.TYPE_UNIQUE_ID, policyTypeUid);
125     }
126
127     public String getVersion() {
128         return (String) getToscaPresentationValue(JsonPresentationFields.VERSION);
129     }
130
131     public void setVersion(String version) {
132         setToscaPresentationValue(JsonPresentationFields.VERSION, version);
133     }
134
135     public String getDerivedFrom() {
136         return (String) getToscaPresentationValue(JsonPresentationFields.DERIVED_FROM);
137     }
138
139     public void setDerivedFrom(String derivedFrom) {
140         setToscaPresentationValue(JsonPresentationFields.DERIVED_FROM, derivedFrom);
141     }
142
143     public String getDescription() {
144         return (String) getToscaPresentationValue(JsonPresentationFields.DESCRIPTION);
145     }
146
147     public void setDescription(String description) {
148         setToscaPresentationValue(JsonPresentationFields.DESCRIPTION, description);
149     }
150
151     public String getPolicyUUID() {
152         return (String) getToscaPresentationValue(JsonPresentationFields.UUID);
153     }
154
155     public void setPolicyUUID(String policyUUID) {
156         setToscaPresentationValue(JsonPresentationFields.UUID, policyUUID);
157     }
158
159     public String getInvariantUUID() {
160         return (String) getToscaPresentationValue(JsonPresentationFields.INVARIANT_UUID);
161     }
162
163     public void setInvariantUUID(String invariantUUID) {
164         setToscaPresentationValue(JsonPresentationFields.INVARIANT_UUID, invariantUUID);
165     }
166
167     @SuppressWarnings("unchecked")
168     public List<PropertyDataDefinition> getProperties() {
169         return (List<PropertyDataDefinition>) getToscaPresentationValue(JsonPresentationFields.PROPERTIES);
170     }
171
172     public void setProperties(List<PropertyDataDefinition> properties) {
173         setToscaPresentationValue(JsonPresentationFields.PROPERTIES, properties);
174     }
175
176     @SuppressWarnings("unchecked")
177     public Map<PolicyTargetType, List<String>> getTargets() {
178         return (Map<PolicyTargetType, List<String>>) getToscaPresentationValue(JsonPresentationFields.TARGETS);
179     }
180
181     public void setTargets(Map<PolicyTargetType, List<String>> metadata) {
182         setToscaPresentationValue(JsonPresentationFields.TARGETS, metadata);
183     }
184
185     public List<String> resolveComponentInstanceTargets() {
186         return resolveTargetsByType(PolicyTargetType.COMPONENT_INSTANCES);
187     }
188
189     public List<String> resolveGroupTargets() {
190         return resolveTargetsByType(PolicyTargetType.GROUPS);
191     }
192
193     public boolean containsTarget(String targetId, PolicyTargetType policyTargetType) {
194         return resolveTargetsByType(policyTargetType).contains(targetId);
195     }
196
197     private List<String> resolveTargetsByType(PolicyTargetType targetType) {
198         Map<PolicyTargetType, List<String>> targets = getTargets();
199         return targets == null || !targets.containsKey(targetType) ? emptyList() : targets.get(targetType);
200     }
201
202 }