

package org.arakhne.afc.math.graph;

/** This interface representes a graph's segment.
 * 
 * @author $Author: sgalland$
 * @version $FullVersion$
 * @mavengroupid $GroupId$
 * @mavenartifactid $ArtifactId$
 */
class SegmentStub implements GraphSegment<SegmentStub,ConnectionStub> {

	/**
	 */
	public final ConnectionStub c1;
	/**
	 */
	public final ConnectionStub c2;
	
	private final String id;
	
	/**
	 * @param id1
	 * @param c11
	 * @param c21
	 */
	public SegmentStub(String id1, ConnectionStub c11, ConnectionStub c21) {
		this.id = id1;
		this.c1 = c11;
		this.c2 = c21;
		this.c1.segments.add(this);
		this.c2.segments.add(this);
	}
	
	@Override
	public String toString() {
		return this.id;
	}

	/** {@inheritDoc}
	 */
	@Override
	public ConnectionStub getBeginPoint() {
		return this.c1;
	}

	/** {@inheritDoc}
	 */
	@Override
	public ConnectionStub getEndPoint() {
		return this.c2;
	}

	/** {@inheritDoc}
	 */
	@Override
	public ConnectionStub getOtherSidePoint(ConnectionStub point) {
		if (point==this.c1) return this.c2;
		return this.c1;
	}
	
	/** {@inheritDoc}
	 */
	@Override
	public double getLength() {
		return 1.;
	}

}
