package org.openecomp.sdc.be.datatypes.elements;
import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
import org.openecomp.sdc.be.datatypes.tosca.ToscaDataDefinition;
import java.util.List;
import java.util.Map;
import static java.util.Collections.emptyList;
/**
* public class representing the component policy,
* described by the next properties:
*
* name
* uniqueId
* type (policy type name)
* typeUid (policy type uniqueId)
* version (version)
* derivedFrom (policy type derivedFrom)
* description
* policyUUID
* invariantUUID
* members
* metadata
* properties
* targets
* isFromCsar
*/
public class PolicyDataDefinition extends ToscaDataDefinition {
/**
* public constructor by default
*/
public PolicyDataDefinition() {
super();
}
/**
* public constructor from superclass
*
* @param policy
*/
public PolicyDataDefinition(Map policy) {
super(policy);
}
/**
* public copy constructor
*
* @param other
*/
public PolicyDataDefinition(PolicyDataDefinition other) {
this.setName(other.getName());
this.setUniqueId(other.getUniqueId());
this.setPolicyTypeName(other.getPolicyTypeName());
this.setPolicyTypeUid(other.getPolicyTypeUid());
this.setVersion(other.getVersion());
this.setDerivedFrom(other.getDerivedFrom());
this.setDescription(other.getDescription());
this.setPolicyUUID(other.getPolicyUUID());
this.setInvariantUUID(other.getInvariantUUID());
this.setInvariantName(other.getInvariantName());
this.setComponentName(other.getComponentName());
this.setIsFromCsar(other.getIsFromCsar());
if (other.getProperties() != null) {
this.setProperties(other.getProperties());
}
if (other.getTargets() != null) {
this.setTargets(other.getTargets());
}
}
private void setIsFromCsar(Boolean isFromCsar) {
if (isFromCsar == null) {
setToscaPresentationValue(JsonPresentationFields.IS_FROM_CSAR, false);
} else {
setToscaPresentationValue(JsonPresentationFields.IS_FROM_CSAR, isFromCsar);
}
}
public Boolean getIsFromCsar() {
Boolean isFromCsar = (Boolean) getToscaPresentationValue(JsonPresentationFields.IS_FROM_CSAR);
return (isFromCsar != null) ? isFromCsar : false;
}
public String getComponentName() {
return (String) getToscaPresentationValue(JsonPresentationFields.CI_COMPONENT_NAME);
}
public void setComponentName(String componentName) {
setToscaPresentationValue(JsonPresentationFields.CI_COMPONENT_NAME, componentName);
}
public String getInvariantName() {
return (String) getToscaPresentationValue(JsonPresentationFields.CI_INVARIANT_NAME);
}
public void setInvariantName(Object invariantName) {
setToscaPresentationValue(JsonPresentationFields.CI_INVARIANT_NAME, invariantName);
}
public String getName() {
return (String) getToscaPresentationValue(JsonPresentationFields.NAME);
}
public void setName(String name) {
setToscaPresentationValue(JsonPresentationFields.NAME, name);
}
public String getUniqueId() {
return (String) getToscaPresentationValue(JsonPresentationFields.UNIQUE_ID);
}
public void setUniqueId(String uniqueId) {
setToscaPresentationValue(JsonPresentationFields.UNIQUE_ID, uniqueId);
}
public String getPolicyTypeName() {
return (String) getToscaPresentationValue(JsonPresentationFields.TYPE);
}
public void setPolicyTypeName(String policyTypeName) {
setToscaPresentationValue(JsonPresentationFields.TYPE, policyTypeName);
}
public String getPolicyTypeUid() {
return (String) getToscaPresentationValue(JsonPresentationFields.TYPE_UNIQUE_ID);
}
public void setPolicyTypeUid(String policyTypeUid) {
setToscaPresentationValue(JsonPresentationFields.TYPE_UNIQUE_ID, policyTypeUid);
}
public String getVersion() {
return (String) getToscaPresentationValue(JsonPresentationFields.VERSION);
}
public void setVersion(String version) {
setToscaPresentationValue(JsonPresentationFields.VERSION, version);
}
public String getDerivedFrom() {
return (String) getToscaPresentationValue(JsonPresentationFields.DERIVED_FROM);
}
public void setDerivedFrom(String derivedFrom) {
setToscaPresentationValue(JsonPresentationFields.DERIVED_FROM, derivedFrom);
}
public String getDescription() {
return (String) getToscaPresentationValue(JsonPresentationFields.DESCRIPTION);
}
public void setDescription(String description) {
setToscaPresentationValue(JsonPresentationFields.DESCRIPTION, description);
}
public String getPolicyUUID() {
return (String) getToscaPresentationValue(JsonPresentationFields.UUID);
}
public void setPolicyUUID(String policyUUID) {
setToscaPresentationValue(JsonPresentationFields.UUID, policyUUID);
}
public String getInvariantUUID() {
return (String) getToscaPresentationValue(JsonPresentationFields.INVARIANT_UUID);
}
public void setInvariantUUID(String invariantUUID) {
setToscaPresentationValue(JsonPresentationFields.INVARIANT_UUID, invariantUUID);
}
@SuppressWarnings("unchecked")
public List getProperties() {
return (List) getToscaPresentationValue(JsonPresentationFields.PROPERTIES);
}
public void setProperties(List properties) {
setToscaPresentationValue(JsonPresentationFields.PROPERTIES, properties);
}
@SuppressWarnings("unchecked")
public Map> getTargets() {
return (Map>) getToscaPresentationValue(JsonPresentationFields.TARGETS);
}
public void setTargets(Map> metadata) {
setToscaPresentationValue(JsonPresentationFields.TARGETS, metadata);
}
public List resolveComponentInstanceTargets() {
return resolveTargetsByType(PolicyTargetType.COMPONENT_INSTANCES);
}
public List resolveGroupTargets() {
return resolveTargetsByType(PolicyTargetType.GROUPS);
}
public boolean containsTarget(String targetId, PolicyTargetType policyTargetType) {
return resolveTargetsByType(policyTargetType).contains(targetId);
}
private List resolveTargetsByType(PolicyTargetType targetType) {
Map> targets = getTargets();
return targets == null || !targets.containsKey(targetType) ? emptyList() : targets.get(targetType);
}
}