/home/gshute/instruction/cs4521/projects/Graph1/src/graph/PrioritizingGraphVisitor.java
package graph;

import java.util.Comparator;

/**
 * DOCME
 */
public abstract class PrioritizingGraphVisitor
        extends GraphVisitor {

  private Comparator<Object> comparator;

  public Comparator<Object> getComparator() {
    if (comparator == null) {
      comparator = new Comparator<Object>() {

        public int compare(Object edge1, Object edge2) {
          double weight1 = getEdgePriority(edge1);
          double weight2 = getEdgePriority(edge2);
          return (int) Math.signum(weight1 - weight2);
        }

      };
    }
    return comparator;
  }

  public abstract double getEdgePriority(Object edge);

  public abstract void startSearch(Graph graph, Object startVertex);

}