public class Graph extends java.util.Observable implements SimpleGraph
Modifier and Type  Field and Description 

static int 
CLOSE_DISTANCE 
static char 
DIRECTED 
static int 
HORIZONTAL 
static int 
NORMAL_DISTANCE 
static char 
UNDIRECTED 
static int 
VERTICAL 
Constructor and Description 

Graph() 
Graph(Graph graph)
Deep copy constructor

Graph(cusack.hcg.database.Graph newGraph)
This constructor creates a new Graph object from a database.Graph object

Modifier and Type  Method and Description 

boolean 
addEdge(Vertex v1,
Vertex v2)
Adds an edge between two given vertices

java.util.ArrayList<Edge> 
addEdges(java.util.List<Edge> edges)
Adds edges to this graph from a given list

Vertex 
addNewVertex(java.awt.Point p)
Adds new vertex to the graph with coordinates given by the passed in Point

void 
addSubGraph(java.awt.Point offset,
Graph subgraph)
Add subgraph to this graph, offset by the given point.

void 
addVertex(Vertex v)
Adds a vertex to this graph.

void 
addVertices(java.util.List<Vertex> verts)
Adds all of the vertices in the list to this graph

boolean 
areThereMissingEdges()
A method to make sure an undirected graph was created properly.

java.util.ArrayList<Edge> 
connectAll(java.util.ArrayList<Vertex> verts)
This method creates edges between all the vertices that are passed in

Edge 
convertEdge(SimpleEdge simpleEdge)
Convert the SimpleEdge to an Edge, whether or not it is actually in the graph.

java.util.ArrayList<Edge> 
convertEdges(java.util.ArrayList<SimpleEdge> simpleEdges)
Return an ArrayList of Edges equivalent to the SimpleEdges passed in.

Graph 
copyOfOriginalGraph()
Makes a copy from the state of the graph when it was initialized (including from copy constructors) or when
makeCurrentStateInitialState() was called

java.util.ArrayList<Vertex> 
copySubgraph(java.util.ArrayList<Vertex> verts)
Creates a corresponding vertex for each given vertex and adds corresponding edges between them

java.util.ArrayList<Edge> 
disconnectAll(java.util.ArrayList<Vertex> verts)
This method removes edges between all the vertices that are passed in

void 
ensureAdjacencyConsistency()
For each edge in this graph make sure that the corresponding edge obtained by flipping the source and the destination vertices exists.

void 
fromString(java.lang.String adjList)
This method sets the adjacency list of all the vertices in the graph based on a string that is passed in.

int 
getDegree(int index)
The degree will be defined as the sum of the weights of the edges, including negative weights.

DegreeSequence 
getDegreeSequence() 
int 
getDiam() 
java.util.ArrayList<Edge> 
getEdges() 
java.util.ArrayList<Edge> 
getExistingEdges(java.util.ArrayList<Vertex> verts)
Create a list of edges that exist between the vertices that were passed in and makes those edges either directed
or undirected depending on the boolean flag's value

int 
getGraphID()
This method returns the graph ID.

java.lang.String 
getGraphName() 
static int 
getGridsize() 
java.lang.String 
getInitialVertexCoords()
Returns a String that represents the initial coordinates of all of the vertices in this graph
in the format 'x,y x2,y2' etc.

int 
getMaximumXCoordinate()
This method finds the vertex with the greatest xvalue and then returns that value.

int 
getMaximumYCoordinate()
This method finds the vertex with the greatest yvalue and then returns that value.

int 
getMinimumXCoordinate()
This method finds the vertex with the smallest xvalue and then returns that value.

int 
getMinimumYCoordinate()
This method finds the vertex with the smallest yvalue and then returns that value.

java.util.ArrayList<Edge> 
getMissingEdges()
Returns the edges that are not in the graph but the reverse edge is in the graph

java.util.ArrayList<Edge> 
getNonExistingEdges(java.util.ArrayList<Vertex> verts)
Given a list of vertices, finds all vertex pairs that do not have an edge between them

int 
getNumberOfEdges()
This method returns the number of edges in this graph between pairs of vertices.

int 
getNumberOfVertices() 
int 
getRadius() 
java.awt.Point 
getSubGraphLowerRightPoint(java.util.ArrayList<Vertex> list)
Find the smallest x and y values of this subgraph based on the vertices in the graph

java.awt.Point 
getSubGraphUpperLeftPoint(java.util.ArrayList<Vertex> list)
Find the smallest x and y values of this subgraph based on the vertices in the graph

int 
getUserID() 
Vertex 
getVertexAtIndex(int n)
This method returns the vertex at a specific index.

java.lang.String 
getVertexCoords()
This method gets the coordinates of all the vertices in this graph parsed into a string so that it can be stored
in the database.

java.util.ArrayList<Vertex> 
getVertices()
This method returns a list of all the vertices in the current graph.

void 
grow()
Spreads out the entire graph.

void 
grow(java.util.ArrayList<Vertex> verticesToGrow)
Spreads out the passed in vertices

void 
horizontalFlip()
Translates the vertices in this graph by flipping them across the x axis

void 
horizontalFlip(java.util.ArrayList<Vertex> verts)
Translates the group of vertices that are passed in by flipping them across a line on the x axis

int 
indexOf(Vertex vertex)
This method checks to see what the numerical location of a specific vertex is.

boolean 
isAcyclic() 
boolean 
isAdjacent(Vertex v1,
Vertex v2)
Given two vertices, checks whether or not there is an edge between them

boolean 
isCompleteGraph()
Checks whether or not this graph is a complete graph (each vertex is adjacent to all other vertices in the graph).

boolean 
isConnectedGraph()
Checks whether or not this graph is connected (any vertex can be reached from a source vertex traveling by edges in the graph)

boolean 
isDirectedGraph() 
boolean 
isEditable() 
boolean 
isSnapToGrid() 
void 
makeCurrentStateInitialState()
Makes the graph act as if the current data it has was the initial data it was given.

int 
nextTimestamp() 
java.util.ArrayList<Edge> 
pasteSubgraph(java.util.ArrayList<Vertex> verts,
int translateX,
int translateY)
This method adds the list of vertices that are passed in to the graph and creates the necessary edges between
them.

java.util.ArrayList<Edge> 
pasteSubgraphAndLink(java.util.ArrayList<Vertex> toPaste,
java.util.ArrayList<Vertex> toLink,
int translateX,
int translateY) 
boolean 
removeEdge(Vertex from,
Vertex to)
Removes an edge from this graph if the given vertices are adjacent

java.util.ArrayList<Edge> 
removeEdges(java.util.List<Edge> edges)
Removes edges contained in the given list from this graph

java.util.ArrayList<Edge> 
removeSubgraph(java.util.List<Vertex> verts)
Remove all of these vertices and the associated edges between them and to other vertices that are still in the
graph.

java.util.ArrayList<java.awt.Point> 
resetToInitialLocations(boolean notifyListeners)
This method forces all the vertices in this graph to return to their intial starting locations.

void 
setEditable(boolean editable) 
void 
setGraphID(int graphID)
This method sets the graph ID of this graph.

void 
setGraphName(java.lang.String graphName) 
void 
setSnapToGrid(boolean snapToGrid) 
void 
setUserID(int userID) 
void 
setVertexCoords(java.lang.String graphConfig,
boolean theseAreInitialCoords)
This method sets the coordinates of all the vertices in the list of vertices based on a string that is passed in
from the database.

void 
shrink()
Puts all the vertices in this graph closer together.

void 
shrink(java.util.ArrayList<Vertex> verticesToShrink)
Puts all the vertices in the passed in list closer together

void 
snapToGrid(Vertex vert)
Normalizes the locations of the passed in vertex
For example, if the grid size is 10, then it will round to the 10s place: (53, 36) would be rounded to (50, 40)

java.lang.String 
toString()
This method returns a string that contains all the vertices in the graphs's adjacency lists.

void 
translateGraph(java.awt.Point change)
This method translates all the vertices in this graph by point passed in.

void 
translateGraphCloseToHome() 
java.awt.Point 
translateGraphToHome() 
boolean 
translateVertex(Vertex vert,
java.awt.Point change)
This method takes a vertex that passed in an *shifts* (not translates) the vertex by the x and y coordinates that
are in the point that is passed in.

void 
translateVertices(java.util.ArrayList<Vertex> verts,
java.util.ArrayList<java.awt.Point> changes)
Adds the offset in 'changes' to the corresponding (same index) vertex's location (in 'verts').

void 
translateVertices(java.util.ArrayList<Vertex> toTranslate,
java.awt.Point change)
This method translates all the vertices in this graph by the two amounts that are passed in.

void 
unResetToInitialLocations(java.util.ArrayList<java.awt.Point> oldLocations)
This method sets all the vertices in this graph to the passed in locations.

Vertex 
vertexAt(java.awt.Point p,
int widthRad,
int heightRad)
Returns a vertex which is "near" pwithin a small threshold.

boolean 
vertexCoordsChanged()
Returns true if at least one of the vertices in this graph have been moved from their initial coordinates

void 
verticalFlip()
Translates the vertices in this graph by flipping them across the y axis

void 
verticalFlip(java.util.ArrayList<Vertex> verts)
Translates the group of vertices that are passed in by flipping them across a line on the y axis

void 
xyFlip()
Translates the vertices in this graph by flipping them across the line y=x

void 
xyFlip(java.util.ArrayList<Vertex> verts)
Translates the group of vertices that are passed in by flipping them across the line y=x

public static final int HORIZONTAL
public static final int VERTICAL
public static final int CLOSE_DISTANCE
public static final int NORMAL_DISTANCE
public static final char UNDIRECTED
public static final char DIRECTED
public Graph()
public Graph(Graph graph)
graph
 The Graph to make the deep copy frompublic Graph(cusack.hcg.database.Graph newGraph)
newGraph
 The database.Graph object to be passed inpublic Graph copyOfOriginalGraph()
public void makeCurrentStateInitialState()
public void fromString(java.lang.String adjList)
adjList
 The adjacency list from the databasepublic java.lang.String toString()
toString
in class java.lang.Object
public int nextTimestamp()
public java.lang.String getGraphName()
public Vertex addNewVertex(java.awt.Point p)
p
 2Dimensional coordinates representing where the new vertex is addedpublic void addVertex(Vertex v)
v
 The vertex to be added to this graphpublic void addVertices(java.util.List<Vertex> verts)
verts
 The list of vertices to add to the graphpublic boolean addEdge(Vertex v1, Vertex v2)
v1
 The source vertex of the edgev2
 The destination vertex of the edgepublic boolean removeEdge(Vertex from, Vertex to)
from
 The source vertex of the edgeto
 The destination vertex of the edgepublic java.util.ArrayList<Edge> addEdges(java.util.List<Edge> edges)
edges
 A list of edges to be added to this graphpublic java.util.ArrayList<Edge> removeEdges(java.util.List<Edge> edges)
edges
 The edges to removepublic void addSubGraph(java.awt.Point offset, Graph subgraph)
offset
 The values that are added to the coordinates of the vertices of the subgraph before they are added
to this graph.
For example, if a vertex is at (4,5) in the original subgraph and the offset is (2,3),
then the corresponding vertex added to this graph will be at the point (6,8).subgraph
 A graph whose vertices and edges are added to this graphpublic java.util.ArrayList<Edge> removeSubgraph(java.util.List<Vertex> verts)
verts
 A list of the vertices of the subgraph to removepublic java.util.ArrayList<Edge> getEdges()
public java.util.ArrayList<Edge> connectAll(java.util.ArrayList<Vertex> verts)
verts
 The vertices that need to have edges created between thempublic java.util.ArrayList<Edge> disconnectAll(java.util.ArrayList<Vertex> verts)
verts
 The vertices that need to have edges removed between thempublic void horizontalFlip()
public void verticalFlip()
public void xyFlip()
public void horizontalFlip(java.util.ArrayList<Vertex> verts)
verts
 The list of vertices to be translatedpublic void verticalFlip(java.util.ArrayList<Vertex> verts)
verts
 The list of vertices to be translatedpublic void xyFlip(java.util.ArrayList<Vertex> verts)
verts
 The list of vertices to be translatedpublic java.util.ArrayList<Vertex> copySubgraph(java.util.ArrayList<Vertex> verts)
verts
 The list of vertices to be copiedpublic java.util.ArrayList<Edge> pasteSubgraph(java.util.ArrayList<Vertex> verts, int translateX, int translateY)
verts
 The list of vertices to be added to the graphpublic java.util.ArrayList<Edge> pasteSubgraphAndLink(java.util.ArrayList<Vertex> toPaste, java.util.ArrayList<Vertex> toLink, int translateX, int translateY)
public java.util.ArrayList<Edge> getExistingEdges(java.util.ArrayList<Vertex> verts)
verts
 The vertices that will be used to generate the list of edgesedgeExists
 If true this method will return the edges that exist. False, the edges that could, but don'tisDirected
 Determines whether or not the edges will be directed or undirectedpublic java.util.ArrayList<Edge> getNonExistingEdges(java.util.ArrayList<Vertex> verts)
verts
 The list of vertices that will be used to determine what the possible edges that will be returned arepublic boolean isAdjacent(Vertex v1, Vertex v2)
v1
 The source vertexv2
 The destination vertexpublic int indexOf(Vertex vertex)
vertex
 The vertex to checkpublic Vertex getVertexAtIndex(int n)
n
 The index at which the vertex is expected to be foundpublic java.util.ArrayList<Vertex> getVertices()
public int getNumberOfVertices()
getNumberOfVertices
in interface SimpleGraph
public int getNumberOfEdges()
getNumberOfEdges
in interface SimpleGraph
public boolean isCompleteGraph()
public boolean isConnectedGraph()
public void ensureAdjacencyConsistency()
public int getUserID()
public void setUserID(int userID)
userID
 the userID to setpublic void translateVertices(java.util.ArrayList<Vertex> verts, java.util.ArrayList<java.awt.Point> changes)
verts
 A list of vertices to be shiftedchanges
 A list of points. Their x and y values are added to the corresponding vertex's coordinatespublic boolean translateVertex(Vertex vert, java.awt.Point change)
vert
 The vertex to movechange
 The Point that holds the amount to shift this vertex bypublic void translateVertices(java.util.ArrayList<Vertex> toTranslate, java.awt.Point change)
edges
 The list of vertices to translatexAmount
 The amount to move them horizontallyyAmount
 The amount to move them verticallypublic void translateGraph(java.awt.Point change)
public java.awt.Point translateGraphToHome()
public void translateGraphCloseToHome()
public void grow()
public void grow(java.util.ArrayList<Vertex> verticesToGrow)
verticesToGrow
 The vertices to spread outpublic void shrink()
public void shrink(java.util.ArrayList<Vertex> verticesToShrink)
verticesToShrink
 The vertices to be put closer together.public boolean isDirectedGraph()
public int getGraphID()
public void setGraphID(int graphID)
graphID
 The int value that will be set as the graph IDpublic void setGraphName(java.lang.String graphName)
public void setVertexCoords(java.lang.String graphConfig, boolean theseAreInitialCoords)
graphConfig
 The string that contains all the coordinate informationpublic boolean vertexCoordsChanged()
public java.lang.String getVertexCoords()
public java.lang.String getInitialVertexCoords()
public Vertex vertexAt(java.awt.Point p, int widthRad, int heightRad)
p
 The center of the area that is searched for a vertexwidthRad
 Distance from the center that the x value of a vertex is allowed to differ and still be selectedheightRad
 Distance from the center that the y value of a vertex is allowed to differ and still be selectedpublic static int getGridsize()
public boolean isSnapToGrid()
public void setSnapToGrid(boolean snapToGrid)
snapToGrid
 the snapToGrid to setpublic void snapToGrid(Vertex vert)
vert
 public boolean isEditable()
public void setEditable(boolean editable)
public java.util.ArrayList<java.awt.Point> resetToInitialLocations(boolean notifyListeners)
notifyListeners
 TODOpublic void unResetToInitialLocations(java.util.ArrayList<java.awt.Point> oldLocations)
oldLocations
 The locations that the points are moved topublic int getMinimumYCoordinate()
public int getMaximumYCoordinate()
public int getMinimumXCoordinate()
public int getMaximumXCoordinate()
public java.awt.Point getSubGraphUpperLeftPoint(java.util.ArrayList<Vertex> list)
list
 The subgraph to checkpublic java.awt.Point getSubGraphLowerRightPoint(java.util.ArrayList<Vertex> list)
list
 The subgraph to checkpublic boolean areThereMissingEdges()
public java.util.ArrayList<Edge> getMissingEdges()
public int getDegree(int index)
getDegree
in interface SimpleGraph
index
 Index of the vertex whose degree we want to checkpublic int getDiam()
public int getRadius()
public boolean isAcyclic()
public DegreeSequence getDegreeSequence()
getDegreeSequence
in interface SimpleGraph
public java.util.ArrayList<Edge> convertEdges(java.util.ArrayList<SimpleEdge> simpleEdges)
simpleEdges
 A list of Simple Edges to be convertedpublic Edge convertEdge(SimpleEdge simpleEdge)