liquibase.structure.core.Catalog 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.structure.core;
import liquibase.structure.AbstractDatabaseObject;
import liquibase.structure.DatabaseObject;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
public class Catalog extends AbstractDatabaseObject {
public Catalog() {
setAttribute("objects", new ConcurrentHashMap, Set>());
}
public Catalog(String name) {
this();
setAttribute("name", name);
}
@Override
public String toString() {
String name = getName();
if (name == null) {
return "DEFAULT";
}
return name;
}
@Override
public DatabaseObject[] getContainingObjects() {
return null;
}
@Override
public Schema getSchema() {
return null;
}
@Override
public String getName() {
return getAttribute("name", String.class);
}
@Override
public Catalog setName(String name) {
setAttribute("name", name);
return this;
}
public boolean isDefault() {
return getAttribute("default", false) || (getName() == null);
}
public Catalog setDefault(Boolean isDefault) {
setAttribute("default", isDefault);
return this;
}
protected Map, Set> getObjects() {
return getAttribute("objects", Map.class);
}
public List getDatabaseObjects(Class type) {
Set databaseObjects = (Set) getObjects().get(type);
if (databaseObjects == null) {
return new ArrayList<>();
}
return new ArrayList<>(databaseObjects);
}
public void addDatabaseObject(DatabaseObject databaseObject) {
if (databaseObject == null) {
return;
}
Set objects = this.getObjects().computeIfAbsent(databaseObject.getClass(), k -> new HashSet<>());
objects.add(databaseObject);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if ((o == null) || (getClass() != o.getClass())) return false;
Catalog catalog = (Catalog) o;
return (getName() != null) ? getName().equalsIgnoreCase(catalog.getName()) : (catalog.getName() == null);
}
@Override
public int hashCode() {
return (getName() != null) ? getName().hashCode() : 0;
}
@Override
public Set getSerializableFields() {
Set fields = super.getSerializableFields();
fields.remove("objects");
return fields;
}
}