[graphl-cvs] graphl/src/org/mediavirus/graphl/graph DefaultGraph.java Graph.java
Status: Pre-Alpha
Brought to you by:
flo1
From: Flo L. <fl...@us...> - 2006-07-03 15:26:48
|
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); } /** |