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

api.utils.MutableChildTree Maven / Gradle / Ivy

The newest version!
package api.utils;

import api.ChildTree;
import api.Node;
import exception.NodeNotFoundException;
import exception.TreeInsertionException;
import exception.TreeRemovalException;

/**
 * Represents a tree which can be modified
 */
public interface MutableChildTree extends ChildTree {
    void addNodeToTree(Node node) throws TreeInsertionException;
    void removeNodesFromTree(Node node) throws TreeRemovalException;
    void fireTreeModelListenersForInsertion(Node changedNode) throws NodeNotFoundException;
    void fireTreeModelListenersForRemoval(Node node) throws NodeNotFoundException;

    default void addNode(Node node) throws TreeInsertionException{
        assert node != null;
        addNodeToTree(node);

        try {
            fireTreeModelListenersForInsertion(node);
        } catch (NodeNotFoundException e) {
            throw new TreeInsertionException(e);
        }
    }

    default void removeNode(Node node) throws TreeRemovalException {
        assert node != null;
        removeNodesFromTree(node);

        try {
            fireTreeModelListenersForRemoval(node);
        } catch (NodeNotFoundException e) {
            throw new TreeRemovalException(e);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy