// @topic S-0303-03-05-20 Java Abstract Factory Example
// @brief Class ElevatorBank uses IElevatorFactory

package bcc.week10_abstract_factory;

import java.util.ArrayList;

public class ElevatorBank {
    //--------------------------
    // data attributes
    //--------------------------
    private IElevatorFactory elevatorFactory = null;
    private ArrayList< IElevator > elevators =
            new ArrayList<>();

    //--------------------------
    // constructors    
    //--------------------------
    public ElevatorBank( IElevatorFactory elevatorFactory )
    {
        this.elevatorFactory = elevatorFactory;
    }//ElevatorBank


    //--------------------------
    // operations
    //--------------------------
    public void setElevatorFactory(IElevatorFactory elevatorFactory) {
        this.elevatorFactory = elevatorFactory;
    }//setElevatorFactory

    
    public void createElevators( char fromID, char toID ) {
        for ( char id = fromID; id <= toID; ++id ) {
            elevators.add( elevatorFactory.createElevator( id ) );
        }
    }//createElevators

}//class ElevatorBank