private boolean cycleExits(DirectedWeightedMultigraph<Node, LabeledLink> model, Set<Node> columnNodes, Set<Node> traversedNodes, Node start, Node end) {
Set<Node> neighbors = GraphUtil.getOutNeighbors(GraphUtil.asDefaultGraph(model), start);
logger.debug("start:" + start.getDisplayId() + ", end:" + end.getDisplayId());
for (Node w : neighbors) {
if(w == end) {
return true;
}
if(columnNodes.contains(w) || traversedNodes.contains(w))
continue;
traversedNodes.add(w);
logger.debug("neighbour:" + w.getDisplayId());
boolean innerCycle = cycleExits(model, columnNodes, traversedNodes, w, end);
if(innerCycle)
return true;
}
return false;
}