package net.x4a42.volksempfaenger.feedparser;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Queue;
public class SubscriptionTree implements Iterable<SubscriptionTree> {
private ArrayList<SubscriptionTree> children;
public String url;
public String title;
public int depth;
public int id;
// Constructor for root element
public SubscriptionTree() {
super();
children = new ArrayList<SubscriptionTree>();
depth = 0;
}
// Constructor for feed element
public SubscriptionTree(String title, String url) {
this.title = title;
this.url = url;
}
// Constructor for folder element
public SubscriptionTree(String title) {
this.title = title;
children = new ArrayList<SubscriptionTree>();
}
public boolean isFolder() {
if (children == null) {
return false;
} else {
return true;
}
}
public SubscriptionTree addChild(SubscriptionTree child) {
if (!isFolder()) {
return null;
}
children.add(child);
child.depth = depth + 1;
return child;
}
@Override
public Iterator<SubscriptionTree> iterator() {
return new Iterator<SubscriptionTree>() {
Queue<SubscriptionTree> queue = new LinkedList<SubscriptionTree>();
{
for (SubscriptionTree child : children) {
queue.add(child);
if (child.isFolder()) {
for (SubscriptionTree subchild : child) {
queue.add(subchild);
}
}
}
}
@Override
public boolean hasNext() {
return !queue.isEmpty();
}
@Override
public SubscriptionTree next() {
return queue.remove();
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
};
}
}