package org.geotools.kml;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class FolderStack implements Iterable<Folder> {
private final List<Folder> stack;
public FolderStack() {
stack = new ArrayList<Folder>();
}
public void push(Folder folder) {
stack.add(folder);
}
private boolean elementsExist() {
return stack.size() > 0;
}
public Folder pop() {
return elementsExist() ? stack.remove(lastElementIndex()) : null;
}
private int lastElementIndex() {
return stack.size() - 1;
}
public Folder peek() {
return elementsExist() ? stack.get(lastElementIndex()) : null;
}
@Override
public Iterator<Folder> iterator() {
return stack.iterator();
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
for (Folder folder : this) {
String name = folder.getName();
if (name != null) {
String trimmedName = name.trim();
if (trimmedName.length() > 0) {
sb.append(sb.length() > 0 ? " -> " + trimmedName : trimmedName);
}
}
}
return sb.toString();
}
public List<Folder> asList() {
return new ArrayList<Folder>(stack);
}
}