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

impl.childtrees.DefaultMutableChildTree Maven / Gradle / Ivy

The newest version!
package impl.childtrees;

import api.Node;
import api.Tree;
import api.utils.MutableChildTree;
import exception.NodeNotFoundException;
import exception.TreeInsertionException;
import exception.TreeRemovalException;

import java.util.ArrayList;
import java.util.List;

/**
 * Default implementation of a MutableTree
 */
public class DefaultMutableChildTree implements MutableChildTree {
    private Tree mainTree;
    private Node parent;
    private final ArrayList> nodes = new ArrayList<>();

    public DefaultMutableChildTree() {}

    public DefaultMutableChildTree(Tree mainTree) {
        assert mainTree != null;
        this.mainTree = mainTree;
    }

    public void setMainTree(Tree mainTree) {
        assert mainTree != null;
        this.mainTree = mainTree;
    }

    @Override
    public Node getParent() {
        if (parent == null){
            throw new IllegalStateException("No parent set.");
        }
        return parent;
    }

    @Override
    public void setParent(Node parent) {
        assert parent != null;
        this.parent = parent;
    }

    @Override
    public List> getNodes() {
        return new ArrayList<>(nodes);
    }

    @SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
    @Override
    public boolean equals(Object o) {
        return isEqual(o);
    }

    @Override
    public int hashCode() {
        return getHashCode();
    }

    @Override
    public void addNodeToTree(Node node) throws TreeInsertionException {
        nodes.add(node);
    }

    @Override
    public void removeNodesFromTree(Node node) throws TreeRemovalException {
        nodes.remove(node);
    }

    @Override
    public void fireTreeModelListenersForInsertion(Node node) throws NodeNotFoundException {
        if (mainTree == null){
            throw new IllegalStateException("MainTree not set. Please call setMainTree() first.");
        }
        mainTree.fireTreeModelListenersForInsertion(node);
    }

    @Override
    public void fireTreeModelListenersForRemoval(Node node) throws NodeNotFoundException {
        if (mainTree == null){
            throw new IllegalStateException("MainTree not set. Please call setMainTree() first.");
        }
        mainTree.fireTreeModelListenersForRemoval(node);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy