AbstractTrafficController.java

  1. package org.opentrafficsim.trafficcontrol;

  2. import org.djutils.event.EventProducer;
  3. import org.djutils.exceptions.Throw;
  4. import org.opentrafficsim.core.dsol.OTSSimulatorInterface;

  5. /**
  6.  * <p>
  7.  * Copyright (c) 2013-2020 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
  8.  * BSD-style license. See <a href="http://opentrafficsim.org/node/13">OpenTrafficSim License</a>.
  9.  * <p>
  10.  * @version $Revision$, $LastChangedDate$, by $Author$, initial version 21 feb. 2019 <br>
  11.  * @author <a href="http://www.tbm.tudelft.nl/averbraeck">Alexander Verbraeck</a>
  12.  * @author <a href="http://www.tudelft.nl/pknoppers">Peter Knoppers</a>
  13.  * @author <a href="http://www.transport.citg.tudelft.nl">Wouter Schakel</a>
  14.  */
  15. public abstract class AbstractTrafficController extends EventProducer implements TrafficController
  16. {

  17.     /** */
  18.     private static final long serialVersionUID = 20190221L;

  19.     /** Id of this controller. */
  20.     private final String id;

  21.     /**
  22.      * Constructor for traffic controller.
  23.      * @param id String; id
  24.      * @param simulator OTSSimulatorInterface; simulator
  25.      */
  26.     public AbstractTrafficController(final String id, final OTSSimulatorInterface simulator)
  27.     {
  28.         Throw.whenNull(id, "Id may not be null.");
  29.         this.id = id;
  30.         fireTimedEvent(TrafficController.TRAFFICCONTROL_CONTROLLER_CREATED,
  31.                 new Object[] {this.id, TrafficController.STARTING_UP}, simulator.getSimulatorTime());
  32.     }

  33.     /**
  34.      * @return id.
  35.      */
  36.     @Override
  37.     public String getId()
  38.     {
  39.         return this.id;
  40.     }

  41. }