/** * */ package vroom.common.heuristics.cw; import vroom.common.modeling.dataModel.Arc; import vroom.common.modeling.dataModel.IArc; import vroom.common.modeling.dataModel.INodeVisit; /** * <code>JCWRouteArc</code> is a specialization of {@link Arc} that includes a saving value * <p> * Creation date: Apr 28, 2010 - 4:36:43 PM * * @author Victor Pillac, <a href="http://uniandes.edu.co">Universidad de Los Andes</a>-<a * href="http://copa.uniandes.edu.co">Copa</a> <a href="http://www.emn.fr">Ecole des Mines de Nantes</a>-<a * href="http://www.irccyn.ec-nantes.fr/irccyn/d/en/equipes/Slp">SLP</a> * @version 1.0 */ public class JCWArc implements IJCWArc, IArc { /** the wrapped arc **/ private final IArc mArc; /** the saving associated with this arc **/ private final double mSaving; /** * Creates a new <code>JCWRouteArc</code> * * @param currentArc */ public JCWArc(IArc arc, double saving) { mArc = arc; mSaving = saving; } /* (non-Javadoc) * @see vroom.common.heuristics.jcw.IJCWArc#compareTo(vroom.common.heuristics.jcw.IJCWArc) */ @Override public int compareTo(IJCWArc anotherArc) { int comp = Double.compare(anotherArc.getSaving(), this.getSaving()); if (comp == 0 && anotherArc instanceof JCWArc) { comp = ((JCWArc) anotherArc).mArc.getTailNode().getID() - mArc.getTailNode().getID(); if (comp == 0) comp = ((JCWArc) anotherArc).mArc.getHeadNode().getID() - mArc.getHeadNode().getID(); } return comp; } /* (non-Javadoc) * @see vroom.common.heuristics.jcw.IJCWArc#getHeadNode() */ @Override public INodeVisit getHeadNode() { return mArc.getHeadNode(); } /* (non-Javadoc) * @see vroom.common.heuristics.jcw.IJCWArc#getSaving() */ @Override public double getSaving() { return mSaving; } /* (non-Javadoc) * @see vroom.common.heuristics.jcw.IJCWArc#getTailNode() */ @Override public INodeVisit getTailNode() { return mArc.getTailNode(); } /* (non-Javadoc) * @see vroom.common.modeling.dataModel.IArc#getDistance() */ @Override public double getDistance() { return mArc.getDistance(); } /* (non-Javadoc) * @see vroom.common.modeling.dataModel.IArc#isDirected() */ @Override public boolean isDirected() { return mArc.isDirected(); } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return String.format("(%s,%s)=%.2f", mArc.getTailNode().getID(), mArc.getHeadNode().getID(), getSaving()); } }