liquibase.ObjectMetaData Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of liquibase-core Show documentation
Show all versions of liquibase-core Show documentation
Liquibase is a tool for managing and executing database changes.
package liquibase;
import liquibase.util.StringUtil;
import java.lang.reflect.Type;
import java.util.SortedSet;
import java.util.TreeSet;
/**
* Contains metadata about an {@link ExtensibleObject}.
*
* Because attributes can be dynamically added or removed, different instances of the same type may return different metadata.
*/
public class ObjectMetaData {
/**
* Metadata about all the object's attributes.
*/
public SortedSet attributes = new TreeSet<>();
/**
* Convenience method to return the {@link liquibase.ObjectMetaData.Attribute} information for the given attribute.
* Returns null if the attribute name doesn't exist.
*/
public Attribute getAttribute(String attributeName) {
for (Attribute attribute : attributes) {
if (attribute.name.equals(attributeName)) {
return attribute;
}
}
return null;
}
/**
* Metadata about a particular attribute.
*/
public static class Attribute implements Comparable {
/**
* Name of the attribute.
*/
public String name;
/**
* Description of the attribute.
*/
public String description;
/**
* True if the attribute is required.
* What "required" means can depend on the type of object, but in general it should mean that the object is not "valid" if a value isn't set.
*/
public Boolean required;
/**
* Return the stored type of the given attribute. Include any applicable generics information.
*/
public Type type;
public Attribute() {
}
public Attribute(String name) {
this.name = name;
}
@Override
public int compareTo(Attribute o) {
return StringUtil.trimToEmpty(this.name).compareTo(StringUtil.trimToEmpty(o.name));
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Attribute)) {
return false;
}
return this.name.equals(((Attribute) obj).name);
}
@Override
public int hashCode() {
return name.hashCode();
}
}
}