Class LinkType

  • All Implemented Interfaces:
    Serializable, Identifiable, Compatibility<GtuType,​LinkType>

    public class LinkType
    extends HierarchicalType<LinkType>
    implements Serializable, Identifiable, Compatibility<GtuType,​LinkType>
    A LinkType determines compatibility of a link with GTU types. The id of a LinkType should be unique within a simulation. This is, however, not checked or enforced, as different simulations running in the same JVM can have different compatibilitySets for LinkTypes with the same id. Therefore, uniqueness is not enforced. XXX Explain why uniqueness cannot be enforced as LinkType is stored in the Network.

    Copyright (c) 2013-2020 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
    BSD-style license. See OpenTrafficSim License.

    $LastChangedDate: 2015-08-30 00:16:51 +0200 (Sun, 30 Aug 2015) $, @version $Revision: 1329 $, by $Author: averbraeck $, initial version Aug 21, 2014
    Author:
    Alexander Verbraeck, Peter Knoppers
    See Also:
    Serialized Form
    • Constructor Detail

      • LinkType

        public LinkType​(String id,
                        LinkType parent,
                        GtuCompatibility<LinkType> compatibility,
                        Network network)
        Create a new LinkType with compatibility set.
        Parameters:
        id - String; the id of the lane type (may not be null)
        parent - LinkType; the parent type (may be null)
        compatibility - the collection of compatible GTUTypes for this LinkType; can be null (resulting in a LinkType that is inaccessible to all GTU types). This constructor makes a deep copy of the compatibility.
        network - Network; The network to which the LinkType belongs
    • Method Detail

      • isOfType

        public boolean isOfType​(LinkType.DEFAULTS type)
        Report whether this, or any of the parent types, equals the given type.
        Parameters:
        type - DEFAULTS; type
        Returns:
        boolean; true if this, or any of the parent types, equals the given type, false if this and none of the parent types equals the given type
      • isCompatible

        public Boolean isCompatible​(GtuType gtuType,
                                    GtuDirectionality directionality)
        Test if a GTUType can travel over the infrastructure.
        Specified by:
        isCompatible in interface Compatibility<GtuType,​LinkType>
        Parameters:
        gtuType - G; the type of the GTU
        directionality - GtuDirectionality; the direction of the GTU with respect to the design direction of the infrastructure
        Returns:
        boolean; true if the GTU can travel over the infrastructure in the given direction; false if the GTU can not travel over the infrastructure in the given direction; null if the decision should be made by calling isCompatible on a higher level in the infrastructure hierarchy
      • getCompatibility

        public GtuCompatibility<LinkType> getCompatibility()
        This method won't work correctly in a ReverseLinkType; it should only be used to clone a network; nowhere else.
        Returns:
        GTUCompatibility<LinkType>; the GTU compatibility for this LinkType
      • reverse

        public final LinkType reverse()
        Returns a link type with directionality reversed.
        Returns:
        LinkType; link type with directionality reversed
      • isNone

        public final boolean isNone()
        Report whether this LinkType is incompatible with any kind of GTU.
        Returns:
        boolean; true if this LinkType is incompatible with any kind of GTU; false if there this LinkType is compatible with at least one type of GTU.
      • isRoad

        public final boolean isRoad()
        Report whether this LinkType is a ROAD.
        Returns:
        boolean; true if this LinkType is a road; false if this LinkType is not a road
      • isWaterWay

        public final boolean isWaterWay()
        Report whether this LinkType is a WATER_WAY.
        Returns:
        boolean; true if this LinkType is a water way; false if this LinkType is not a water way
      • isRailWay

        public final boolean isRailWay()
        Report whether this LinkType is a RAIL_WAY.
        Returns:
        boolean; true if this LinkType is a railway; false if this LinkType is not a railway
      • isConnector

        public final boolean isConnector()
        Report whether this LinkType is a CONNECTOR.
        Returns:
        boolean; true if this LinkType is a connector; false if this LinkType is not a connector
      • getNetwork

        public Network getNetwork()
        Retrieve the network.
        Returns:
        Network; the network to which the LinkType belongs
      • getDirectionality

        public LongitudinalDirectionality getDirectionality​(GtuType gtuType,
                                                            boolean tryParentsOfGTUType)
        Retrieve the allowed driving directions for a GTUType. If there is no match for the specified GTUType in this infrastructure type, this method will recursively check the parent types of the infrastructure element until either a match is found or the root parental type of the infrastructure is reached. When the latter happens without finding a match, what happens next depends on the value of tryParentsOfGTUType.
        If tryParentsOfGTUType is false, the value null is returned. If true; the parent of the GTUType is used and the search is repeated, etc. If none of the parents of the GTUType yields a result, this method returns LongitudinalDirectionality.DIR_NONE.
        Specified by:
        getDirectionality in interface Compatibility<GtuType,​LinkType>
        Parameters:
        gtuType - G; type of the GTU
        tryParentsOfGTUType - boolean; if true; the parents of the GTUType are tried if no match was found for the given GTUType
        Returns:
        LongitudinalDirectionality; the driving directions for the GTUType, or LongitudinalDirectionality.DIR_NONE if neither the GTUType or any of its parents specifies a directionality