MultiLaneBasedMoveChecker.java

  1. package org.opentrafficsim.road.gtu.lane;

  2. import java.util.LinkedHashSet;
  3. import java.util.Set;

  4. import org.djutils.exceptions.Throw;
  5. import org.opentrafficsim.core.network.Network;

  6. /**
  7.  * Checker that invokes multiple checkers.
  8.  * <p>
  9.  * Copyright (c) 2013-2024 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
  10.  * BSD-style license. See <a href="https://opentrafficsim.org/docs/license.html">OpenTrafficSim License</a>.
  11.  * </p>
  12.  * @author <a href="https://github.com/averbraeck">Alexander Verbraeck</a>
  13.  * @author <a href="https://github.com/peter-knoppers">Peter Knoppers</a>
  14.  * @author <a href="https://github.com/wjschakel">Wouter Schakel</a>
  15.  */
  16. public class MultiLaneBasedMoveChecker extends AbstractLaneBasedMoveChecker
  17. {

  18.     /** Checkers. */
  19.     private Set<AbstractLaneBasedMoveChecker> checkers = new LinkedHashSet<>();

  20.     /**
  21.      * Constructor.
  22.      * @param network network
  23.      */
  24.     public MultiLaneBasedMoveChecker(final Network network)
  25.     {
  26.         super(network);
  27.     }

  28.     /**
  29.      * Constructor.
  30.      * @param network network
  31.      * @param checkers checkers
  32.      */
  33.     public MultiLaneBasedMoveChecker(final Network network, final AbstractLaneBasedMoveChecker... checkers)
  34.     {
  35.         super(network);
  36.         for (AbstractLaneBasedMoveChecker checker : checkers)
  37.         {
  38.             addChecker(checker);
  39.         }
  40.     }

  41.     /**
  42.      * Add checker.
  43.      * @param checker checker to add
  44.      */
  45.     final void addChecker(final AbstractLaneBasedMoveChecker checker)
  46.     {
  47.         Throw.whenNull(checker, "Checker may not be null.");
  48.         this.checkers.add(checker);
  49.     }

  50.     @Override
  51.     public void checkMove(final LaneBasedGtu gtu) throws Exception
  52.     {
  53.         for (AbstractLaneBasedMoveChecker checker : this.checkers)
  54.         {
  55.             checker.checkMove(gtu);
  56.         }
  57.     }

  58. }