"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const RouteTypeEnums_1 = require("../../../../../../../helpers/RouteTypeEnums");
const CommonDelayAtStop_1 = __importDefault(require("./CommonDelayAtStop"));
const MetroDelayAtStop_1 = __importDefault(require("./MetroDelayAtStop"));
class FactoryDelayAtStop {
    static getInstance() {
        if (!this._instance) {
            this._instance = new FactoryDelayAtStop();
        }
        return this._instance;
    }
    constructor() {
        this.dictionary = new Map();
        this.dictionary.set(RouteTypeEnums_1.GTFSRouteTypeEnum.TRAM, new CommonDelayAtStop_1.default());
        this.dictionary.set(RouteTypeEnums_1.GTFSRouteTypeEnum.BUS, new CommonDelayAtStop_1.default());
        this.dictionary.set(RouteTypeEnums_1.GTFSRouteTypeEnum.TROLLEYBUS, new CommonDelayAtStop_1.default());
        this.dictionary.set(RouteTypeEnums_1.GTFSRouteTypeEnum.METRO, new MetroDelayAtStop_1.default());
    }
    getStrategy(gtfsRouteType) {
        if (this.dictionary.has(gtfsRouteType)) {
            return this.dictionary.get(gtfsRouteType);
        }
        return null;
    }
}
exports.default = FactoryDelayAtStop;
//# sourceMappingURL=FactoryDelayAtStop.js.map