public boolean containsArc(GraphArc arc) { if (arc != null) { return arcs.containsKey(arc.getUserObject()); } return false; }
public boolean equals(Object o) { GraphArc arc = (GraphArc)o; return this.getUserObject().equals(arc.getUserObject()); }
protected void removeArcInternal(GraphArc arc) { if ((arc != null) && arcs.containsKey(arc.getUserObject())) { // remove this arc from the source and destination nodes arc.getSource().removeArc(arc); arc.getDestination().removeArc(arc); // now remove the arc from the model and fire the event arcs.remove(arc.getUserObject()); fireArcRemovedEvent(arc); } }
protected void removeNodeInternal(GraphNode node) { if (nodes.containsKey(node.getUserObject())) { // remove the arcs for this node first GraphArc[] arcs = node.getArcs().toArray(new GraphArc[node.getArcs().size()]); for (GraphArc arc : arcs) { removeArc(arc.getUserObject()); } // now remove the node from this model nodes.remove(node.getUserObject()); fireNodeRemovedEvent(node); } }
/** * Hides all arcs recursively from the given graphNode. * * @param graphNode * @param seen Set of URIs that have already been recursed on */ private void hideAll(GraphNode graphNode, Set<IRI> seen) { GraphArc[] arcs = graphNode.getArcs().toArray(new GraphArc[graphNode.getArcs().size()]); seen.add(((OWLEntity) graphNode.getUserObject()).getIRI()); for (GraphArc arc : arcs) { Object userObject = arc.getDestination().getUserObject(); GraphNode node = getNode(userObject); if (node == null || node.equals(graphNode)) { continue; } // recursively collapse the child node, check our seen object in order to avoid cycles removeArc(arc.getUserObject()); if (!seen.contains(((OWLEntity) userObject).getIRI())) { hideAll(node, seen); } if (node != null && isRemovable(node)) { removeNode(userObject); } } }
/** * Hides all incoming arcs and attempts to hide any nodes and their arcs. * * @param graphNode * @param seen The list of recursively visited items, need this to avoid cycles */ private void hideAscendants(GraphNode graphNode, Set<IRI> seen) { GraphArc[] arcs = graphNode.getArcs().toArray(new GraphArc[graphNode.getArcs().size()]); seen.add(((OWLEntity) graphNode.getUserObject()).getIRI()); for (GraphArc arc : arcs) { Object userObject = arc.getSource().getUserObject(); GraphNode node = getNode(userObject); // recursively collapse the child node, check our seen object in order to avoid cycles if (node != null && !node.equals(graphNode)) { removeArc(arc.getUserObject()); if (!seen.contains(((OWLEntity) userObject).getIRI())) { hideAll(node, seen); } if (isRemovable(node)) { removeNode(userObject); } } else { userObject = arc.getDestination().getUserObject(); seen.add(((OWLEntity) userObject).getIRI()); } } }
/** * Collapses the given graphNode by recursively removing all outgoing relationships and nodes * that become separate components. * * @param graphNode * @param seen The list of recursively visited items, need this to avoid cycles */ private void collapseNode(GraphNode graphNode, Set<IRI> seen) { GraphArc[] arcs = graphNode.getArcs().toArray(new GraphArc[graphNode.getArcs().size()]); //createOutgoingRelationships((Frame) graphNode.getUserObject(), true); seen.add(((OWLEntity) graphNode.getUserObject()).getIRI()); for (GraphArc arc : arcs) { Object userObject = arc.getDestination().getUserObject(); GraphNode node = getNode(userObject); // recursively collapse the child node, check our seen object in order to avoid cycles if (node != null && !node.equals(graphNode)) { removeArc(arc.getUserObject()); if (isRecursableArc(seen, userObject, arc)) { collapseNode(node, seen); } if (isRemovable(node)) { removeNode(userObject); } } } }