package edu.brown.graphs.exceptions;
import edu.brown.graphs.AbstractEdge;
import edu.brown.graphs.AbstractGraphElement;
import edu.brown.graphs.AbstractVertex;
import edu.brown.graphs.IGraph;
public class InvalidGraphElementException extends Exception {
private static final long serialVersionUID = 1L;
private final IGraph<? extends AbstractVertex, ? extends AbstractEdge> graph;
private final AbstractGraphElement element;
public InvalidGraphElementException(IGraph<? extends AbstractVertex, ? extends AbstractEdge> graph, AbstractGraphElement element, String message) {
super((element instanceof AbstractEdge ? String.format("EDGE[%s]", ((AbstractEdge)element).toStringPath(graph)) :
(element instanceof AbstractVertex) ? String.format("VERTEX[%s]", element.toString()) :
String.format("????[%s]", element.toString()))
+ " " + message);
this.graph = graph;
this.element = element;
}
@SuppressWarnings("unchecked")
public <GE extends AbstractGraphElement> GE getElement() {
return (GE)this.element;
}
public IGraph<? extends AbstractVertex, ? extends AbstractEdge> getGraph() {
return this.graph;
}
}