1 25 43 package org.jgrapht.graph; 44 45 import java.util.*; 46 47 import org.jgrapht.*; 48 49 50 60 public abstract class AbstractGraph<V, E> 61 implements Graph<V, E> 62 { 63 64 66 69 public AbstractGraph() 70 { 71 } 72 73 75 78 public boolean containsEdge(V sourceVertex, V targetVertex) 79 { 80 return getEdge(sourceVertex, targetVertex) != null; 81 } 82 83 86 public boolean removeAllEdges(Collection<? extends E> edges) 87 { 88 boolean modified = false; 89 90 for (E e : edges) { 91 modified |= removeEdge(e); 92 } 93 94 return modified; 95 } 96 97 100 public Set<E> removeAllEdges(V sourceVertex, V targetVertex) 101 { 102 Set<E> removed = getAllEdges(sourceVertex, targetVertex); 103 removeAllEdges(removed); 104 105 return removed; 106 } 107 108 111 public boolean removeAllVertices(Collection<? extends V> vertices) 112 { 113 boolean modified = false; 114 115 for (V v : vertices) { 116 modified |= removeVertex(v); 117 } 118 119 return modified; 120 } 121 122 129 public String toString() 130 { 131 return 132 toStringFromSets( 133 vertexSet(), 134 edgeSet(), 135 (this instanceof DirectedGraph)); 136 } 137 138 150 protected boolean assertVertexExist(V v) 151 { 152 if (containsVertex(v)) { 153 return true; 154 } else if (v == null) { 155 throw new NullPointerException (); 156 } else { 157 throw new IllegalArgumentException ("no such vertex in graph"); 158 } 159 } 160 161 174 protected boolean removeAllEdges(E [] edges) 175 { 176 boolean modified = false; 177 178 for (int i = 0; i < edges.length; i++) { 179 modified |= removeEdge(edges[i]); 180 } 181 182 return modified; 183 } 184 185 195 protected String toStringFromSets( 196 Collection<? extends V> vertexSet, 197 Collection<? extends E> edgeSet, 198 boolean directed) 199 { 200 List<String > renderedEdges = new ArrayList<String >(); 201 202 StringBuffer sb = new StringBuffer (); 203 for (E e : edgeSet) { 204 if ( 205 (e.getClass() != DefaultEdge.class) 206 && (e.getClass() != DefaultWeightedEdge.class)) { 207 sb.append(e.toString()); 208 sb.append("="); 209 } 210 if (directed) { 211 sb.append("("); 212 } else { 213 sb.append("{"); 214 } 215 sb.append(getEdgeSource(e)); 216 sb.append(","); 217 sb.append(getEdgeTarget(e)); 218 if (directed) { 219 sb.append(")"); 220 } else { 221 sb.append("}"); 222 } 223 224 renderedEdges.add(sb.toString()); 226 sb.setLength(0); 227 } 228 229 return "(" + vertexSet + ", " + renderedEdges + ")"; 230 } 231 } 232 | Popular Tags |