org.odpi.openmetadata.accessservices.digitalarchitecture.properties.ReferenceableProperties Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of digital-architecture-api Show documentation
Show all versions of digital-architecture-api Show documentation
API classes for the Digital Architecture Open Metadata Access Service (OMAS).
The newest version!
/* SPDX-License-Identifier: Apache-2.0 */
/* Copyright Contributors to the ODPi Egeria project. */
package org.odpi.openmetadata.accessservices.digitalarchitecture.properties;
import com.fasterxml.jackson.annotation.*;
import java.util.*;
import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY;
/**
* Many open metadata entities are referenceable. It means that they have a qualified name and additional
* properties.
*/
@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE)
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown=true)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "class")
@JsonSubTypes(
{
@JsonSubTypes.Type(value = ValidValueProperties.class, name = "ValidValueProperties"),
@JsonSubTypes.Type(value = ReferenceDataAssetProperties.class, name = "ReferenceDataAssetProperties"),
@JsonSubTypes.Type(value = CollectionProperties.class, name = "CollectionProperties"),
@JsonSubTypes.Type(value = ConnectionProperties.class, name = "ConnectionProperties"),
@JsonSubTypes.Type(value = ConnectorTypeProperties.class, name = "ConnectorTypeProperties"),
@JsonSubTypes.Type(value = LocationProperties.class, name = "LocationProperties"),
@JsonSubTypes.Type(value = EndpointProperties.class, name = "EndpointProperties"),
@JsonSubTypes.Type(value = MeaningProperties.class, name = "MeaningProperties")
})
public class ReferenceableProperties
{
private String qualifiedName = null;
private Map additionalProperties = null;
private Date effectiveFrom = null;
private Date effectiveTo = null;
private String typeName = null;
private Map extendedProperties = null;
/**
* Default constructor
*/
public ReferenceableProperties()
{
super();
}
/**
* Copy/clone constructor. Retrieves the values from the supplied template
*
* @param template element to copy
*/
public ReferenceableProperties(ReferenceableProperties template)
{
if (template != null)
{
qualifiedName = template.getQualifiedName();
additionalProperties = template.getAdditionalProperties();
effectiveFrom = template.getEffectiveFrom();
effectiveTo = template.getEffectiveTo();
typeName = template.getTypeName();
extendedProperties = template.getExtendedProperties();
}
}
/**
* Set up the fully qualified name.
*
* @param qualifiedName String name
*/
public void setQualifiedName(String qualifiedName)
{
this.qualifiedName = qualifiedName;
}
/**
* Returns the stored qualified name property for the metadata entity.
* If no qualified name is available then the empty string is returned.
*
* @return qualifiedName
*/
public String getQualifiedName()
{
return qualifiedName;
}
/**
* Set up additional properties.
*
* @param additionalProperties Additional properties object
*/
public void setAdditionalProperties(Map additionalProperties)
{
this.additionalProperties = additionalProperties;
}
/**
* Return a copy of the additional properties. Null means no additional properties are available.
*
* @return AdditionalProperties
*/
public Map getAdditionalProperties()
{
if (additionalProperties == null)
{
return null;
}
else if (additionalProperties.isEmpty())
{
return null;
}
else
{
return new HashMap<>(additionalProperties);
}
}
/**
* Return the date/time that this element is effective from (null means effective from the epoch).
*
* @return date object
*/
public Date getEffectiveFrom()
{
return effectiveFrom;
}
/**
* Set up the date/time that this element is effective from (null means effective from the epoch).
*
* @param effectiveFrom date object
*/
public void setEffectiveFrom(Date effectiveFrom)
{
this.effectiveFrom = effectiveFrom;
}
/**
* Return the date/time that element is effective to (null means that it is effective indefinitely into the future).
*
* @return date object
*/
public Date getEffectiveTo()
{
return effectiveTo;
}
/**
* Set the date/time that element is effective to (null means that it is effective indefinitely into the future).
*
* @param effectiveTo date object
*/
public void setEffectiveTo(Date effectiveTo)
{
this.effectiveTo = effectiveTo;
}
/**
* Return the name of the open metadata type for this metadata element.
*
* @return string name
*/
public String getTypeName()
{
return typeName;
}
/**
* Set up the name of the open metadata type for this element.
*
* @param typeName string name
*/
public void setTypeName(String typeName)
{
this.typeName = typeName;
}
/**
* Return the properties that have been defined for a subtype of this object that are not supported explicitly
* by this bean.
*
* @return property map
*/
public Map getExtendedProperties()
{
if (extendedProperties == null)
{
return null;
}
else if (extendedProperties.isEmpty())
{
return null;
}
else
{
return new HashMap<>(extendedProperties);
}
}
/**
* Set up the properties that have been defined for a subtype of this object that are not supported explicitly
* by this bean.
*
* @param extendedProperties property map
*/
public void setExtendedProperties(Map extendedProperties)
{
this.extendedProperties = extendedProperties;
}
/**
* Standard toString method.
*
* @return print out of variables in a JSON-style
*/
@Override
public String toString()
{
return "ReferenceableProperties{" +
"qualifiedName='" + qualifiedName + '\'' +
", additionalProperties=" + additionalProperties +
", effectiveFrom=" + effectiveFrom +
", effectiveTo=" + effectiveTo +
", typeName='" + typeName + '\'' +
", extendedProperties=" + extendedProperties +
'}';
}
/**
* Compare the values of the supplied object with those stored in the current object.
*
* @param objectToCompare supplied object
* @return boolean result of comparison
*/
@Override
public boolean equals(Object objectToCompare)
{
if (this == objectToCompare)
{
return true;
}
if (objectToCompare == null || getClass() != objectToCompare.getClass())
{
return false;
}
ReferenceableProperties that = (ReferenceableProperties) objectToCompare;
return Objects.equals(qualifiedName, that.qualifiedName) &&
Objects.equals(additionalProperties, that.additionalProperties) &&
Objects.equals(effectiveFrom, that.effectiveFrom) &&
Objects.equals(effectiveTo, that.effectiveTo) &&
Objects.equals(typeName, that.typeName) &&
Objects.equals(extendedProperties, that.extendedProperties);
}
/**
* Return hash code based on properties.
*
* @return int
*/
@Override
public int hashCode()
{
return Objects.hash(qualifiedName, additionalProperties, effectiveFrom, effectiveTo, typeName, extendedProperties);
}
}