All Downloads are FREE. Search and download functionalities are using the official Maven repository.

liquibase.structure.core.Catalog Maven / Gradle / Ivy

There is a newer version: 4.29.1
Show newest version
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;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy