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 }