Update of /cvsroot/graphl/graphl/src/org/mediavirus/graphl/graph
In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv15693/src/org/mediavirus/graphl/graph
Modified Files:
DefaultGraph.java Graph.java
Log Message:
implementing XPath-based filters
Index: Graph.java
===================================================================
RCS file: /cvsroot/graphl/graphl/src/org/mediavirus/graphl/graph/Graph.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** Graph.java 8 Jun 2006 13:15:00 -0000 1.8
--- Graph.java 3 Jul 2006 15:26:33 -0000 1.9
***************
*** 51,55 ****
public void addElements(Collection<Node> nodes, Collection<Edge> edges);
! public void deleteElements(Collection<Node> nodes, Collection<Edge> edges);
}
--- 51,55 ----
public void addElements(Collection<Node> nodes, Collection<Edge> edges);
! public void removeElements(Collection<? extends GraphElement> elements);
}
Index: DefaultGraph.java
===================================================================
RCS file: /cvsroot/graphl/graphl/src/org/mediavirus/graphl/graph/DefaultGraph.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** DefaultGraph.java 8 Jun 2006 13:15:00 -0000 1.6
--- DefaultGraph.java 3 Jul 2006 15:26:33 -0000 1.7
***************
*** 74,115 ****
* Deletes elements from the graph.
*
! * @param nodes the nodes to delete (may be <code>null</code>)
! * @param edges the edges to delete (may be <code>null</code>)
*/
! public synchronized void deleteElements(Collection<Node> nodes, Collection<Edge> edges) {
! List<Edge> nodeEdges = new ArrayList<Edge>();
! if (nodes!=null) {
! Iterator<Node> nodesI=nodes.iterator();
! while (nodesI.hasNext()) {
! Node node = nodesI.next();
! for (Iterator<Edge> edgesI = node.getEdgesFrom().iterator(); edgesI.hasNext();) {
! Edge edge = edgesI.next();
if (allEdges.remove(edge)) {
edge.getTo().notifyEdgeRemoved(edge);
! nodeEdges.add(edge);
}
}
! for (Iterator<Edge> edgesI = node.getEdgesTo().iterator(); edgesI.hasNext();) {
! Edge edge = edgesI.next();
if (allEdges.remove(edge)) {
edge.getFrom().notifyEdgeRemoved(edge);
! nodeEdges.add(edge);
}
}
! allNodes.remove(node);
}
! }
! if (edges!=null) {
! Iterator<Edge> iterator = edges.iterator();
! while (iterator.hasNext()) {
! Edge edge = iterator.next();
if (allEdges.remove(edge)) {
edge.getFrom().notifyEdgeRemoved(edge);
edge.getTo().notifyEdgeRemoved(edge);
! }
}
}
! nodeEdges.addAll(edges);
! fireElementsRemoved(nodes,nodeEdges);
}
/**
--- 74,114 ----
* Deletes elements from the graph.
*
! * @param elements the elements to delete (may be <code>null</code>)
*/
! public synchronized void removeElements(Collection<? extends GraphElement> elements) {
!
! List<Edge> removedEdges = new ArrayList<Edge>();
! List<Node> removedNodes = new ArrayList<Node>();
!
! for (GraphElement element : elements) {
! if (element instanceof Node) {
! Node node = (Node)element;
! for (Edge edge: node.getEdgesFrom()) {
if (allEdges.remove(edge)) {
edge.getTo().notifyEdgeRemoved(edge);
! removedEdges.add(edge);
}
}
! for (Edge edge: node.getEdgesTo()) {
if (allEdges.remove(edge)) {
edge.getFrom().notifyEdgeRemoved(edge);
! removedEdges.add(edge);
}
}
! if (allNodes.remove(node)) {
! removedNodes.add(node);
! }
}
! else if (element instanceof Edge) {
! Edge edge = (Edge) element;
if (allEdges.remove(edge)) {
edge.getFrom().notifyEdgeRemoved(edge);
edge.getTo().notifyEdgeRemoved(edge);
! removedEdges.add(edge);
! }
}
}
!
! fireElementsRemoved(removedNodes,removedEdges);
}
/**
|