1 2 3 package org.quilt.graph; 4 5 11 12 public class MultiConnector extends Connector { 13 14 15 private Edge [] edges = null; 16 17 18 private Vertex source = null; 19 20 24 public MultiConnector (Edge seed, int n) { 25 if ( seed == null || n < 1) { 26 throw new IllegalArgumentException ( 27 "constructor arguments null or not in range"); 28 } 29 Vertex source = seed.getSource(); 30 source = seed.getSource(); 31 Vertex target = seed.getTarget(); 32 edges = new Edge[n]; 33 34 edges[0] = new Edge (seed); for (int i = 1; i < n; i++) { 36 edges[i] = new Edge (source, target); 37 } 38 } 39 44 public MultiConnector( Connector conn, int n) { 45 this( conn.getEdge(), n); 47 } 48 public Edge getEdge () { 50 return edges[0]; 51 } 52 public Vertex getTarget () { 53 return edges[0].getTarget(); 54 } 55 public void setTarget (Vertex v) { 56 checkTarget(v); 57 edges[0].setTarget(v); 58 } 59 private void checkTarget (final Vertex target) { 61 if (target == null) { 62 throw new IllegalArgumentException ("target may not be null"); 63 } 64 if ( target.getGraph() != source.getGraph() ) { 65 throw new IllegalArgumentException ( 66 "new target must be in same graph"); 67 } 68 } 69 private void rangeCheck (int n) { 70 if ( n < 0 || n >= edges.length ) { 71 throw new IllegalArgumentException ( 72 "MultiConnector index out of range"); 73 } 74 } 75 public Edge getEdge (int n) { 76 rangeCheck(n); 77 return edges[n]; 78 } 79 public Vertex getTarget (int n) { 80 rangeCheck(n); 81 return edges[n].getTarget(); 82 } 83 public void setTarget (Vertex v, int n) { 84 checkTarget(v); 85 rangeCheck(n); 86 edges[n].setTarget(v); 87 } 88 89 90 91 public int size () { 92 return edges.length; 93 } 94 } 95 | Popular Tags |