    001    package org.maltparser.parser.history;
    002
    003    import org.maltparser.core.exception.MaltChainedException;
    004    import org.maltparser.core.pool.ObjectPoolList;
    005    import org.maltparser.parser.history.action.GuideUserAction;
    006    /**
    007     *
    008     * @author Johan Hall
    009    */
    010    public class HistoryTree extends HistoryStructure {
    011            private HistoryTreeNode root;
    012            protected final ObjectPoolList<HistoryNode> nodePool;
    013
    014            public HistoryTree() {
    015                    super();
    016                    nodePool = new ObjectPoolList<HistoryNode>() {
    017                            protected HistoryNode create() throws MaltChainedException { return new HistoryTreeNode(null, null); }
    018                            public void resetObject(HistoryNode o) throws MaltChainedException { o.clear(); }
    019                    };
    020                    root = new HistoryTreeNode(null,null);
    021            }
    022
    023            public HistoryNode getNewHistoryNode(HistoryNode previousNode, GuideUserAction action) throws MaltChainedException {
    024                    HistoryNode node = nodePool.checkOut();
    025                    node.setAction(action);
    026                    if (previousNode == null) {
    027                            node.setPreviousNode(root);
    028                    } else {
    029                            node.setPreviousNode(previousNode);
    030                    }
    031                    return node;
    032            }
    033
    034            public void clear() throws MaltChainedException {
    035                    nodePool.checkInAll();
    036                    root.clear();
    037            }
    038
    039            public void toFile() throws MaltChainedException {
    040
    041            }
    042
    043            public void close() throws MaltChainedException {
    044
    045            }
    046
    047            public String toString() {
    048                    final StringBuilder sb = new StringBuilder();
    049                    sb.append(root.toString());
    050                    return sb.toString();
    051            }
    052    }