edgeFilters.add((EdgeFilter) f);
}
}
if (nodeFilters.size() > 0) {
for (Iterator<NodeFilter> itr = nodeFilters.iterator(); itr.hasNext();) {
NodeFilter nf = itr.next();
if (!nf.init(hgraph)) {
itr.remove();
}
}
List<Node> nodesToRemove = new ArrayList<Node>();
for (Node n : hgraph.getNodes()) {
boolean remove = true;
for (NodeFilter nf : nodeFilters) {
if (nf.evaluate(hgraph, n)) {
remove = false;
}
}
if (remove) {
nodesToRemove.add(n);
}
}
for (Node n : nodesToRemove) {
hgraph.removeNode(n);
}
for (NodeFilter nf : nodeFilters) {
nf.finish();
}
}
if (edgeFilters.size() > 0) {
for (Iterator<EdgeFilter> itr = edgeFilters.iterator(); itr.hasNext();) {
EdgeFilter ef = itr.next();