package org.maltparser.parser.history;
import java.util.ArrayList;
import org.maltparser.core.exception.MaltChainedException;
import org.maltparser.core.pool.ObjectPoolList;
import org.maltparser.parser.history.action.GuideUserAction;
/**
*
* @author Johan Hall
*/
public class HistoryList extends HistoryStructure {
protected final ArrayList<HistoryNode> list;
protected final ObjectPoolList<HistoryNode> nodePool;
// protected BufferedWriter writer;
public HistoryList() throws MaltChainedException {
super();
list = new ArrayList<HistoryNode>();
nodePool = new ObjectPoolList<HistoryNode>() {
protected HistoryNode create() throws MaltChainedException {
return new HistoryListNode(null, null);
}
public void resetObject(HistoryNode o) throws MaltChainedException {
o.clear();
}
};
// try {
// writer = new BufferedWriter(new FileWriter("tseq.dat"));
// } catch (IOException e) {
// throw new MaltChainedException("", e);
// }
}
public HistoryNode getNewHistoryNode(HistoryNode previousNode, GuideUserAction action) throws MaltChainedException {
HistoryNode node = nodePool.checkOut();
node.setAction(action);
node.setPreviousNode(previousNode);
list.add(node);
return node;
}
public void clear() throws MaltChainedException {
nodePool.checkInAll();
list.clear();
}
@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
@Override
public int hashCode() {
return super.hashCode();
}
public void toFile() throws MaltChainedException {
// try {
// for (int i = 0; i < list.size(); i++) {
// writer.write(((ComplexDecisionAction)list.get(i).getAction()).getSingleDecision(0).getDecisionSymbol());
// writer.write("\n");
// writer.flush();
// }
// writer.write("\n");
// } catch (IOException e) {
// throw new MaltChainedException("", e);
// }
}
public void close() throws MaltChainedException {
// if (writer != null) {
// try {
// writer.flush();
// writer.close();
// writer = null;
// } catch (IOException e) {
// throw new MaltChainedException("", e);
// }
// }
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
sb.append(list.get(i));
if (i < list.size() - 1) {
sb.append(", ");
}
}
return sb.toString();
}
}