package liquibase.structure.core; import liquibase.structure.AbstractDatabaseObject; import liquibase.structure.DatabaseObject; import java.util.*; public class Catalog extends AbstractDatabaseObject { public Catalog() { setAttribute("objects", new HashMap<Class<? extends DatabaseObject>, Set<DatabaseObject>>()); } 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); } public Catalog setDefault(Boolean isDefault) { setAttribute("default", isDefault); return this; } protected Map<Class<? extends DatabaseObject>, Set<DatabaseObject>> getObjects() { return getAttribute("objects", Map.class); } public <DatabaseObjectType extends DatabaseObject> List<DatabaseObjectType> getDatabaseObjects(Class<DatabaseObjectType> type) { Set<DatabaseObjectType> databaseObjects = (Set<DatabaseObjectType>) getObjects().get(type); if (databaseObjects == null) { return new ArrayList<DatabaseObjectType>(); } return new ArrayList<DatabaseObjectType>(databaseObjects); } public void addDatabaseObject(DatabaseObject databaseObject) { if (databaseObject == null) { return; } Set<DatabaseObject> objects = this.getObjects().get(databaseObject.getClass()); if (objects == null) { objects = new HashSet<DatabaseObject>(); this.getObjects().put(databaseObject.getClass(), objects); } 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; if (getName() != null ? !getName().equalsIgnoreCase(catalog.getName()) : catalog.getName() != null) return false; return true; } @Override public int hashCode() { return getName() != null ? getName().hashCode() : 0; } @Override public Set<String> getSerializableFields() { Set<String> fields = super.getSerializableFields(); fields.remove("objects"); return fields; } }