package jeql.command.io;
import java.util.Iterator;
import java.util.Stack;
/**
* A stack of names, which can be read out as a single string
* with separator characters.
*
* @author Martin Davis
*
*/
public class NameStack
{
private String sepStr = " ";
private Stack names = new Stack();
private String currentNames = "";
public NameStack() {
}
public NameStack(String sepStr) {
setSeparator(sepStr);
}
public void setSeparator(String sepStr)
{
this.sepStr = sepStr;
}
public void push(String name)
{
names.push(name);
currentNames = listNames();
}
public void pop()
{
names.pop();
currentNames = listNames();
}
public String getNameList()
{
return currentNames;
}
private String listNames()
{
StringBuffer buf = new StringBuffer();
boolean isFirst = true;
for (Iterator i = names.iterator(); i.hasNext(); ) {
if (! isFirst) {
buf.append(sepStr);
}
String name = (String) i.next();
buf.append(name);
isFirst = false;
}
return buf.toString();
}
public String toString() { return getNameList(); }
}