be-graphe/src/main/org/insa/graph/ArcBackward.java
2018-03-07 16:51:03 +01:00

61 lines
1.5 KiB
Java

package org.insa.graph;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Implementation of Arc that represents a "backward" arc in a graph, i.e. an
* arc that is the reverse of another one. This arc only holds a reference to
* the original arc.
*
*/
class ArcBackward implements Arc {
// Original arc
private final ArcForward originalArc;
/**
* Create a new backward arc which corresponds to the reverse arc of the given
* arc.
*
* @param originalArc Original forwarc arc corresponding to this backward arc.
*/
protected ArcBackward(ArcForward originalArc) {
this.originalArc = originalArc;
this.originalArc.getDestination().addSuccessor(this);
}
@Override
public Node getOrigin() {
return this.originalArc.getDestination();
}
@Override
public Node getDestination() {
return this.originalArc.getOrigin();
}
@Override
public int getLength() {
return this.originalArc.getLength();
}
@Override
public double getMinimumTravelTime() {
return this.originalArc.getMinimumTravelTime();
}
@Override
public RoadInformation getRoadInformation() {
return this.originalArc.getRoadInformation();
}
@Override
public List<Point> getPoints() {
List<Point> pts = new ArrayList<>(this.originalArc.getPoints());
Collections.reverse(pts);
return pts;
}
}