package org.opentrafficsim.imb.kpi; import org.djunits.value.vdouble.scalar.Length; import org.opentrafficsim.kpi.interfaces.LaneDataInterface; import org.opentrafficsim.kpi.interfaces.LinkDataInterface; /** *
* Copyright (c) 2013-2019 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
* BSD-style license. See OpenTrafficSim License.
*
* @version $Revision$, $LastChangedDate$, by $Author$, initial version 13 okt. 2016
* @author Alexander Verbraeck
* @author Peter Knoppers
* @author Wouter Schakel
*/
public class LaneData implements LaneDataInterface
{
/** Corresponding Link. */
private LinkData linkData;
/** Wrapped lane. */
private final String laneName;
/** the link length. */
final Length length;
/**
* @param linkData LinkData; data about the link
* @param laneName String; name of the lane
* @param length Length; length of the lane
*/
public LaneData(final LinkData linkData, final String laneName, final Length length)
{
this.linkData = linkData;
this.laneName = laneName;
this.length = length;
this.linkData.addLaneData(this);
}
/** {@inheritDoc} */
@Override
public final Length getLength()
{
return this.length;
}
/** {@inheritDoc} */
@Override
public final LinkDataInterface getLinkData()
{
return this.linkData;
}
/**
* @return laneName
*/
public final String getLaneName()
{
return this.laneName;
}
/** {@inheritDoc} */
@Override
public String getId()
{
return getLaneName();
}
/**
* @param linkData LinkData; set linkData
*/
public final void setLinkData(LinkData linkData)
{
this.linkData = linkData;
}
/** {@inheritDoc} */
@Override
public int hashCode()
{
final int prime = 31;
int result = 1;
result = prime * result + ((this.laneName == null) ? 0 : this.laneName.hashCode());
return result;
}
/** {@inheritDoc} */
@Override
public boolean equals(Object obj)
{
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
LaneData other = (LaneData) obj;
if (this.laneName == null)
{
if (other.laneName != null)
return false;
}
else if (!this.laneName.equals(other.laneName))
return false;
return true;
}
/** {@inheritDoc} */
@Override
public String toString()
{
return "LaneData [linkData=" + this.linkData + ", laneName=" + this.laneName + ", length=" + this.length + "]";
}
}