"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.cast_de_nrw_schule_svws_core_types_statkue_ZulaessigeKursart = exports.ZulaessigeKursart = void 0;
const JavaObject_1 = require("../../../java/lang/JavaObject");
const HashMap_1 = require("../../../java/util/HashMap");
const Schulform_1 = require("../../../core/types/statkue/Schulform");
const Schulgliederung_1 = require("../../../core/types/statkue/Schulgliederung");
const Arrays_1 = require("../../../java/util/Arrays");
const Vector_1 = require("../../../java/util/Vector");
class ZulaessigeKursart extends JavaObject_1.JavaObject {
    /** the name of the enumeration value */
    __name;
    /** the ordinal value for the enumeration value */
    __ordinal;
    /** an array containing all values of this enumeration */
    static all_values_by_ordinal = [];
    /** an array containing all values of this enumeration indexed by their name*/
    static all_values_by_name = new Map();
    static AB3 = new ZulaessigeKursart("AB3", 0, "AB3", "AB3", "71", "3. Abiturfach", "null", "GK", "Grundkurs", true, Arrays_1.Arrays.asList("BK", "GE", "GM", "GY", "PS", "SB", "SG", "WB"), null);
    static AB4 = new ZulaessigeKursart("AB4", 1, "AB4", "AB4", "71", "4. Abiturfach", "null", "GK", "Grundkurs", true, Arrays_1.Arrays.asList("BK", "GE", "GM", "GY", "PS", "SB", "SG", "WB"), null);
    static AG = new ZulaessigeKursart("AG", 2, "AG", "AG", "67", "Arbeitsgemeinschaft gemäß APO SI", "gemäß § 3 Abs. 6 APO-SI", null, null, false, Arrays_1.Arrays.asList("GY", "H", "R", "SG", "SR"), Arrays_1.Arrays.asList("GY", "GY", "H", "R", "GY", "H", "R"));
    static AGGT = new ZulaessigeKursart("AGGT", 3, "AGGT", "AGGT", "36", "Arbeitsgemeinschaft im Ganztagsbereich", "gemäß § 9 Abs. 2, 3  SchulG", null, null, false, Arrays_1.Arrays.asList("G", "GE", "GM", "GY", "H", "PS", "R", "S", "SG", "SK", "SR", "V"), null);
    static AGKWB = new ZulaessigeKursart("AGKWB", 4, "AGKWB", "AGK", "28", "Stütz- und Angleichungskurs / Förderunterricht", "null", null, null, false, Arrays_1.Arrays.asList("WB"), null);
    static AGK = new ZulaessigeKursart("AGK", 5, "AGK", "AGK", "73", "Angleichungskurs", "null", null, null, false, Arrays_1.Arrays.asList("BK", "SB"), null);
    static AST = new ZulaessigeKursart("AST", 6, "AST", "AST", "33", "Arbeits- bzw. Übungsstunde ", "gemäß § 9 Abs. 2, 3  SchulG", null, null, false, Arrays_1.Arrays.asList("G", "GE", "GM", "GY", "H", "PS", "R", "S", "SG", "SK", "SR", "V"), null);
    static BSP = new ZulaessigeKursart("BSP", 7, "BSP", "BSP", "59", "Begegnung mit Sprachen in der Primarstufe", "null", null, null, false, Arrays_1.Arrays.asList("FW"), null);
    static BUS = new ZulaessigeKursart("BUS", 8, "BUS", "BUS", "94", "Unterricht im Rahmen von KAOA einschl. Schule trifft Arbeitswelt", "null", null, null, false, Arrays_1.Arrays.asList("GE", "GM", "GY", "H", "PS", "R", "S", "SG", "SK", "SR", "V"), null);
    static E = new ZulaessigeKursart("E", 9, "E", "E", "02", "Erweiterungsebene/-kurs", "null", "DK", "Differenzierungskurs", false, Arrays_1.Arrays.asList("GE", "GM", "PS", "SG", "SK"), null);
    static E_H = new ZulaessigeKursart("E_H", 10, "E_H", "E", "16", "Erweiterungskurs – Bildungsgang Hauptschule", "null", null, null, false, Arrays_1.Arrays.asList("H", "S", "V"), Arrays_1.Arrays.asList("H", "H", "H"));
    static EBA = new ZulaessigeKursart("EBA", 11, "EBA", "EBA", "88", "Erweitertes Bildungsangebot", "null", null, null, false, Arrays_1.Arrays.asList("H", "V"), Arrays_1.Arrays.asList("H", "H", "H"));
    static EF2 = new ZulaessigeKursart("EF2", 12, "EF2", "EF2", "57", "Einführung in die 2. Fremdsprache oder Ersatzfach", "null", null, null, false, Arrays_1.Arrays.asList("WB"), null);
    static EFSP = new ZulaessigeKursart("EFSP", 13, "EFSP", "EFSP", "71", "Ersatzfach für Sport als 4. Abiturfach", "null", "GK", "Grundkurs", true, Arrays_1.Arrays.asList("BK", "GE", "GM", "GY", "PS", "SB", "SG", "WB"), null);
    static EGS1 = new ZulaessigeKursart("EGS1", 14, "EGS1", "EGS1", "96", "Ergänzungsstunden", "gemäß § 3 Abs. 1, 3 und § 15 Abs. 3 APO-SI", null, null, false, Arrays_1.Arrays.asList("GE", "GM", "GY", "H", "PS", "R", "SG", "SK", "SR", "V"), null);
    static EGSN = new ZulaessigeKursart("EGSN", 15, "EGSN", "EGSN", "97", "Ergänzungsstunden mit Benotung", "gemäß § 3 Abs. 1, 3 und § 19 Abs. 3 Nr.2 und 4 APO-SI", null, null, false, Arrays_1.Arrays.asList("GE", "PS"), null);
    static EV = new ZulaessigeKursart("EV", 16, "EV", "EV", "41", "Ergänzungs- oder Vertiefungskurs", "null", null, null, false, Arrays_1.Arrays.asList("BK", "SB"), null);
    static EWBF = new ZulaessigeKursart("EWBF", 17, "EWBF", "EWBF", "12", "Erweiterungsunterricht Wahlbereich - berufsbezogen, fachübergreifend", "null", null, null, false, Arrays_1.Arrays.asList("BK", "SB"), null);
    static EWF = new ZulaessigeKursart("EWF", 18, "EWF", "EWF", "11", "Erweiterungsunterricht Wahlbereich - fach-, jedoch nicht abschlussbezogen", "null", null, null, false, Arrays_1.Arrays.asList("BK", "SB"), null);
    static EWFA = new ZulaessigeKursart("EWFA", 19, "EWFA", "EWFA", "10", "Erweiterungsunterricht Wahlbereich - fach- und abschlussbezogen", "null", null, null, false, Arrays_1.Arrays.asList("BK", "SB"), null);
    static F3 = new ZulaessigeKursart("F3", 20, "F3", "F3", "64", "Wahlplflichtunterricht: Einzelfach im math.-naturw., techn., gesellschaftsw., künstlerischen Schwerpunkt", "null", null, null, false, Arrays_1.Arrays.asList("GY", "SG"), Arrays_1.Arrays.asList("GY", "GY"));
    static FAG = new ZulaessigeKursart("FAG", 21, "FAG", "FAG", "58", "freiwillige Arbeitsgemeinschaft", "null", null, null, false, Arrays_1.Arrays.asList("WB"), null);
    static FFU = new ZulaessigeKursart("FFU", 22, "FFU", "FFU", "04", "Fachbezogener Förderunterricht", "null", null, null, false, Arrays_1.Arrays.asList("GE", "GM", "PS", "SG", "SK"), null);
    static FOGT = new ZulaessigeKursart("FOGT", 23, "FOGT", "FOGT", "37", "Förderangebot Ganztagsschule", "gemäß § 9 Abs. 2, 3  SchulG", null, null, false, Arrays_1.Arrays.asList("G", "GE", "GM", "GY", "H", "PS", "R", "S", "SG", "SK", "SR", "V"), null);
    static DFUT = new ZulaessigeKursart("DFUT", 24, "DFUT", "FS", "89", "Förderung neu zugewanderter Schüler in Deutschfördergruppen (teilweise äußere und innere Differenzierung)", "gemäß Erlass 13-63 Nr. 3", null, null, false, Arrays_1.Arrays.asList("G", "GE", "GM", "GY", "H", "PS", "R", "S", "SG", "SK", "SR", "V"), null);
    static FS3 = new ZulaessigeKursart("FS3", 25, "FS3", "FS3", "65", "Wahlpflichtbereich II (Kl. 09 und 10, bei G8: 08 und 09): 3. Fremdsprache", "null", null, null, false, Arrays_1.Arrays.asList("GY", "SG"), Arrays_1.Arrays.asList("GY", "GY", "GY"));
    static DFUK = new ZulaessigeKursart("DFUK", 26, "DFUK", "FSD", "90", "Förderung neu zugewanderter Schüler in Deutschförderklassen (vollständige äußere Differenzierung)", "gemäß Erlass 13-63 Nr. 3", null, null, false, Arrays_1.Arrays.asList("G", "GE", "GM", "GY", "H", "PS", "R", "S", "SG", "SK", "SR", "V"), null);
    static FU = new ZulaessigeKursart("FU", 27, "FU", "FU", "01", "Förderunterricht", "null", null, null, false, Arrays_1.Arrays.asList("S"), null);
    static FUAUS = new ZulaessigeKursart("FUAUS", 28, "FUAUS", "FU", "03", "Stützunterricht Wahlbereich - Förderunterricht für ausländische u. ausgesiedelte Schüler", "null", null, null, false, Arrays_1.Arrays.asList("BK", "SB"), null);
    static FUF = new ZulaessigeKursart("FUF", 29, "FUF", "FUF", "05", "Fachunabhängiger Förderunterricht", "null", null, null, false, Arrays_1.Arrays.asList("GE", "GM", "PS", "SG", "SK"), null);
    static FUK = new ZulaessigeKursart("FUK", 30, "FUK", "FUK", "99", "Förderunterricht im Klassenverband", "null", null, null, false, Arrays_1.Arrays.asList("G"), null);
    static FUT = new ZulaessigeKursart("FUT", 31, "FUT", "FUT", "00", "Förderunterricht für Teile von Klassen", "null", null, null, false, Arrays_1.Arrays.asList("G"), null);
    static FUEK = new ZulaessigeKursart("FUEK", 32, "FUEK", "FÜK", "79", "fächerübergreifender Kurs", "null", null, null, false, Arrays_1.Arrays.asList("WB"), null);
    static G = new ZulaessigeKursart("G", 33, "G", "G", "01", "Grundebene/-kurs", "null", "DK", "Differenzierungskurs", false, Arrays_1.Arrays.asList("GE", "GM", "PS", "SG", "SK"), null);
    static G_H = new ZulaessigeKursart("G_H", 34, "G_H", "G", "13", "Grundkurs – Bildungsgang Hauptschule", "null", null, null, false, Arrays_1.Arrays.asList("H", "S", "V"), Arrays_1.Arrays.asList("H", "H", "H"));
    static GKM = new ZulaessigeKursart("GKM", 35, "GKM", "GKM", "71", "Grundkurs mündlich", "null", "GK", "Grundkurs", true, Arrays_1.Arrays.asList("BK", "GE", "GM", "GY", "PS", "SB", "SG", "WB"), null);
    static GKS = new ZulaessigeKursart("GKS", 36, "GKS", "GKS", "71", "Grundkurs schriftlich", "null", "GK", "Grundkurs", true, Arrays_1.Arrays.asList("BK", "GE", "GM", "GY", "PS", "SB", "SG", "WB"), null);
    static HU = new ZulaessigeKursart("HU", 37, "HU", "HU", "99", "Hausunterricht", "null", null, null, false, Arrays_1.Arrays.asList("G", "GE", "GY", "H", "PS", "R", "S", "SG", "SK", "SR", "V", "WB"), null);
    static KMFOE = new ZulaessigeKursart("KMFOE", 38, "KMFOE", "KMFÖ", "95", "Zusätzlicher Förderunterricht im Rahmen der Initiative Komm mit", "null", null, null, false, Arrays_1.Arrays.asList("GE", "GM", "GY", "H", "PS", "R", "SG", "SK", "SR", "V"), null);
    static LK1 = new ZulaessigeKursart("LK1", 39, "LK1", "LK1", "72", "Leistungskurs I", "null", "LK", "Leistungskurs", true, Arrays_1.Arrays.asList("BK", "GE", "GM", "GY", "PS", "SB", "SG", "WB"), null);
    static LK2 = new ZulaessigeKursart("LK2", 40, "LK2", "LK2", "72", "Leistungskurs II", "null", "LK", "Leistungskurs", true, Arrays_1.Arrays.asList("BK", "GE", "GM", "GY", "PS", "SB", "SG", "WB"), null);
    static LRS = new ZulaessigeKursart("LRS", 41, "LRS", "LRS", "82", "Schülerinnen und Schüler mit besonderen Schwierigkeiten im Erlernen des Lesens und Rechtschreibens (LRS)", "null", null, null, false, Arrays_1.Arrays.asList("G", "GE", "GM", "GY", "H", "PS", "R", "S", "SG", "SK", "SR", "V"), null);
    static MEU = new ZulaessigeKursart("MEU", 42, "MEU", "MEU", "84", "Unterricht in der Herkunftssprache (Muttersprachlicher Unterricht)", "null", null, null, false, Arrays_1.Arrays.asList("G", "GE", "GM", "GY", "H", "PS", "R", "S", "SG", "SK", "SR", "V"), null);
    static DFUX = new ZulaessigeKursart("DFUX", 43, "DFUX", "MEU", "85", "Förderung in der deutschen Sprache außerhalb von Sprachfördermaßnahmen", "gemäß Erlass 13-63 Nr. 3", null, null, false, Arrays_1.Arrays.asList("G", "GE", "GM", "GY", "H", "PS", "R", "S", "SG", "SK", "SR", "V"), null);
    static NPG = new ZulaessigeKursart("NPG", 44, "NPG", "NPG", "31", "Neigungs- und Projektgruppe", "null", null, null, false, Arrays_1.Arrays.asList("BK", "SB"), null);
    static PJK = new ZulaessigeKursart("PJK", 45, "PJK", "PJK", "78", "Projektkurs", "gemäß § 11 Abs. 8  APO - GOSt", "PJK", "Projektkurs", true, Arrays_1.Arrays.asList("BK", "GE", "GM", "GY", "PS", "SB", "WB"), null);
    static PROJ = new ZulaessigeKursart("PROJ", 46, "PROJ", "PROJ", "55", "Profilklasse", "gemäß § 21 Abs. 3 APO-SI", null, null, false, Arrays_1.Arrays.asList("GE", "GY", "SK"), null);
    static PUK = new ZulaessigeKursart("PUK", 47, "PUK", "PUK", "99", "Unterricht im Klassenverband", "null", null, null, false, Arrays_1.Arrays.asList("BK", "G", "GE", "GM", "GY", "H", "PS", "R", "S", "SB", "SG", "SK", "SR", "V"), null);
    static PUT = new ZulaessigeKursart("PUT", 48, "PUT", "PUT", "00", "Pflichtunterricht für Teile von Klassen", "null", null, null, false, Arrays_1.Arrays.asList("FW", "G", "GE", "GM", "GY", "H", "PS", "R", "S", "SG", "SK", "SR", "V", "WB"), null);
    static SF = new ZulaessigeKursart("SF", 49, "SF", "SF", "42", "Stütz- oder Förderkurs", "null", null, null, false, Arrays_1.Arrays.asList("BK", "SB"), null);
    static SLP = new ZulaessigeKursart("SLP", 50, "SLP", "SLP", "44", "Selbstlernphase", "null", null, null, false, Arrays_1.Arrays.asList("BK", "SB"), null);
    static SPA = new ZulaessigeKursart("SPA", 51, "SPA", "SPA", "63", "Wahlpflichtunterricht: Schwerpunktübergreifende Angebote", "null", null, null, false, Arrays_1.Arrays.asList("GY"), Arrays_1.Arrays.asList("GY", "GY", "GY"));
    static SPFU = new ZulaessigeKursart("SPFU", 52, "SPFU", "SPFU", "81", "Sportförderunterricht", "null", null, null, false, Arrays_1.Arrays.asList("G", "GE", "GM", "GY", "H", "PS", "R", "S", "SG", "SK", "SR", "V"), null);
    static SPFOE = new ZulaessigeKursart("SPFOE", 53, "SPFOE", "SPFÖ", "99", "sonderpädagogische Förderung", "null", null, null, false, Arrays_1.Arrays.asList("S"), null);
    static SWFB = new ZulaessigeKursart("SWFB", 54, "SWFB", "SWFB", "01", "Stützunterricht Wahlbereich - fachbezogen", "null", null, null, false, Arrays_1.Arrays.asList("BK", "SB"), null);
    static SWFW = new ZulaessigeKursart("SWFW", 55, "SWFW", "SWFW", "02", "Stützunterricht Wahlbereich - fachübergreifend", "null", null, null, false, Arrays_1.Arrays.asList("BK", "SB"), null);
    static TAL = new ZulaessigeKursart("TAL", 56, "TAL", "TAL", "91", "Unterricht im Rahmen des Schulversuchs Talentschule", "null", null, null, false, Arrays_1.Arrays.asList("GE", "GM", "GY", "H", "R", "SK"), null);
    static UMPF = new ZulaessigeKursart("UMPF", 57, "UMPF", "UMPF", "56", "Unterricht in der Herkunftssprache anstelle einer Pflichtfremdsprache oder eines Wahlpflichtfaches", "null", null, null, false, Arrays_1.Arrays.asList("GE", "GM", "GY", "PS", "R", "S", "SG", "SK", "SR", "V"), Arrays_1.Arrays.asList("R"));
    static VSU = new ZulaessigeKursart("VSU", 58, "VSU", "VSU", "17", "Förderunterricht", "null", null, null, false, Arrays_1.Arrays.asList("H", "V"), Arrays_1.Arrays.asList("H", "H"));
    static VTF = new ZulaessigeKursart("VTF", 59, "VTF", "VTF", "77", "Vertiefungsfach", "gemäß § 8, 11  APO - GOSt", "VTF", "Vertiefungskurs", true, Arrays_1.Arrays.asList("BK", "GE", "GM", "GY", "PS", "SB", "SG", "WB"), null);
    static VUW = new ZulaessigeKursart("VUW", 60, "VUW", "VUW", "21", "Vertiefungsunterricht Wahlbereich - berufsfeld- / berufsbezogener fachpraxisorientierter Kurs", "null", null, null, false, Arrays_1.Arrays.asList("BK", "SB"), null);
    static WP = new ZulaessigeKursart("WP", 61, "WP", "WP", "27", "Wahlpflichtbereich", "null", null, null, false, Arrays_1.Arrays.asList("WB"), null);
    static WP1FS = new ZulaessigeKursart("WP1FS", 62, "WP1FS", "WP1FS", "61", "Wahlpflichtbereich: Fremdsprachlich", "null", null, null, false, Arrays_1.Arrays.asList("R", "SG", "SR"), Arrays_1.Arrays.asList("GY", "GY", "R", "R", "R", "GY", "R"));
    static WP1MU = new ZulaessigeKursart("WP1MU", 63, "WP1MU", "WP1MU", "64", "Wahlpflichtbereich: Musisch-künstlerisch", "null", null, null, false, Arrays_1.Arrays.asList("R", "SR"), Arrays_1.Arrays.asList("R", "R", "R", "R"));
    static WP1NT = new ZulaessigeKursart("WP1NT", 64, "WP1NT", "WP1NT", "63", "Wahlpflichtbereich: Naturwissenschaftlich - technisch", "null", null, null, false, Arrays_1.Arrays.asList("R", "SR"), Arrays_1.Arrays.asList("R", "R", "R", "R"));
    static WP1SW = new ZulaessigeKursart("WP1SW", 65, "WP1SW", "WP1SW", "62", "Wahlpflichtbereich: Sozialwissenschaftlich", "null", null, null, false, Arrays_1.Arrays.asList("R", "SR"), Arrays_1.Arrays.asList("GY", "R", "R", "R", "R"));
    static WP1WW = new ZulaessigeKursart("WP1WW", 66, "WP1WW", "WP1WW", "68", "Wahlpflichtbereich: Wirtschaftlich", "null", null, null, false, Arrays_1.Arrays.asList("R", "SR"), Arrays_1.Arrays.asList("R", "R", "R", "R"));
    static WPF = new ZulaessigeKursart("WPF", 67, "WPF", "WPF", "29", "Wahlpflichtfach", "null", null, null, false, Arrays_1.Arrays.asList("H", "S", "V"), Arrays_1.Arrays.asList("H", "H"));
    static WPI = new ZulaessigeKursart("WPI", 68, "WPI", "WPI", "10", "Wahlpflichtbereich I", "null", null, null, false, Arrays_1.Arrays.asList("GE", "GM", "PS", "SG", "SK"), null);
    static WPI_GY = new ZulaessigeKursart("WPI_GY", 69, "WPI_GY", "WPI", "61", "Wahlpflichtbereich I: 2. Fremdsprache", "null", null, null, false, Arrays_1.Arrays.asList("GY"), null);
    static WPII = new ZulaessigeKursart("WPII", 70, "WPII", "WPII", "62", "Wahlpflichtbereich II - Fächerkombination im math.-naturwiss, gesellschaftswiss. oder künstlerischen Schwerpunkt", "null", null, null, false, Arrays_1.Arrays.asList("GY", "SG"), Arrays_1.Arrays.asList("GY", "GY"));
    static WPU = new ZulaessigeKursart("WPU", 71, "WPU", "WPU", "26", "Wahlpflichtunterricht", "null", null, null, false, Arrays_1.Arrays.asList("H", "S", "V"), Arrays_1.Arrays.asList("H", "H", "H"));
    static ZK = new ZulaessigeKursart("ZK", 72, "ZK", "ZK", "76", "Zusatzkurs", "gemäß § 12 APO-GOSt", "ZK", "Zusatzkurs", true, Arrays_1.Arrays.asList("BK", "GE", "GM", "GY", "PS", "SB", "SG"), null);
    static ZUV = new ZulaessigeKursart("ZUV", 73, "ZUV", "ZUV", "99", "zusätzliche Unterrichtsveranstaltung", "null", null, null, true, Arrays_1.Arrays.asList("G", "GE", "GM", "GY", "H", "PS", "R", "S", "SG", "SK", "SR", "V"), null);
    static _kursarten = new HashMap_1.HashMap();
    static _kursartenASD = new HashMap_1.HashMap();
    ID;
    kuerzel;
    nummer;
    bezeichnung;
    bemerkungen;
    kuerzelAllg;
    bezeichnungAllg;
    erlaubtGOSt;
    schulformenKuerzel;
    schulformen = null;
    gliederungenKuerzel;
    gliederungen = null;
    gueltigVon;
    gueltigBis;
    /**
     * Erzeugt eine zulässige Kursart in der Aufzählung.
     *
     * @param ID                    die eindeutige ID der Kursart - orientiert sich an der Bezeichnung der in
     *                              dem amtlichen Schulstatistik verwendeten Kursart, ist aber eindeutig
     * @param kuerzel               das Kürzel der Kursart entsprechend der Vorgaben der amtlichen Schulstatistik
     * @param nummer                die Nummer der Kursart entsprechend der Vorgaben der amtlichen Schulstatistik
     * @param bezeichnung           die Bezeichnung der Kursart
     * @param bemerkungen           ergänzende Bemerkungen zu der Kursart
     * @param kuerzelAllg           das Kürzel einer verallgemeinerten Kursart, sofern diese angegeben ist
     * @param bezeichnungAllg       die Bezeichnung der verallgemeinerter Kursart, sofern diese angegeben ist
     * @param schulformenKuerzel    die Schulformen, für welche die Kursart gültig ist, sofern es für die Schulform nicht
     *                              auf einzelne Gliederungen eingeschränkt ist
     * @param gliederungenKuerzel   die Schulgliederungen, bei den Schulformen, wo die Kursart nur bei einzelnen
     *                              Schulgliederungen zulässig ist.
     */
    constructor(name, ordinal, ID, kuerzel, nummer, bezeichnung, bemerkungen, kuerzelAllg, bezeichnungAllg, erlaubtGOSt, schulformenKuerzel, gliederungenKuerzel) {
        super();
        this.__name = name;
        this.__ordinal = ordinal;
        ZulaessigeKursart.all_values_by_ordinal.push(this);
        ZulaessigeKursart.all_values_by_name.set(name, this);
        this.ID = ID;
        this.kuerzel = kuerzel;
        this.nummer = nummer;
        this.bezeichnung = bezeichnung;
        this.bemerkungen = bemerkungen;
        this.kuerzelAllg = kuerzelAllg;
        this.bezeichnungAllg = bezeichnungAllg;
        this.erlaubtGOSt = erlaubtGOSt;
        this.schulformenKuerzel = schulformenKuerzel;
        this.gliederungenKuerzel = gliederungenKuerzel;
        this.gueltigVon = null;
        this.gueltigBis = null;
    }
    /**
     * Gibt eine Map von den IDs der Kursarten auf die zugehörigen Kursarten
     * zurück. Sollte diese noch nicht initialisiert sein, so wird sie initielisiert.
     *
     * @return die Map von den IDs der Kursarten auf die zugehörigen Kursarten
     */
    static getMapKursartenByID() {
        if (ZulaessigeKursart._kursarten.size() === 0)
            for (let s of ZulaessigeKursart.values())
                ZulaessigeKursart._kursarten.put(s.ID, s);
        return ZulaessigeKursart._kursarten;
    }
    /**
     * Gibt eine Map von den Kürzeln der Kursarten auf die zugehörigen Kursarten
     * zurück. Sollte diese noch nicht initialisiert sein, so wird sie initielisiert.
     *
     * @return die Map von den Kürzeln der Kursarten auf die zugehörigen Kursarten
     */
    static getMapKursartenByKuerzel() {
        if (ZulaessigeKursart._kursartenASD.size() === 0)
            for (let s of ZulaessigeKursart.values())
                ZulaessigeKursart._kursartenASD.put(s.kuerzel, s);
        return ZulaessigeKursart._kursartenASD;
    }
    /**
     * Prüft, ob die Schulform bei dieser Kursart in irgendeiner Gliederung der
     * angegebenen Schulform zulässig ist.
     *
     * @param schulform    die Schulform
     *
     * @return true, falls die Kursart in der Schulform zulässig ist, ansonsten false.
     */
    hasSchulform(schulform) {
        if (schulform === null)
            return false;
        if (this.schulformenKuerzel !== null) {
            for (let sf of this.schulformenKuerzel) {
                if (JavaObject_1.JavaObject.equalsTranspiler(sf, (schulform.kuerzel)))
                    return true;
            }
        }
        if (this.gliederungenKuerzel !== null) {
            for (let glKuerzel of this.gliederungenKuerzel) {
                let gl = Schulgliederung_1.Schulgliederung.getByKuerzel(glKuerzel);
                if ((gl !== null) && (gl.hasSchulformByKuerzel(schulform.kuerzel)))
                    return true;
            }
        }
        return false;
    }
    /**
     * Bestimmt alle Kursarten, die in irgendeiner Gliederung der angegebenen Schulform
     * zulässig sind.
     *
     * @param schulform    die Schulform
     *
     * @return die zulässigen Kursarten in der angegebenen Schulform
     */
    static get(schulform) {
        let kursarten = new Vector_1.Vector();
        if (schulform === null)
            return kursarten;
        for (let kursart of ZulaessigeKursart.values())
            if (kursart.hasSchulform(schulform))
                kursarten.add(kursart);
        return kursarten;
    }
    /**
     * Liefert alle Schulformen zurück, für welche die Kursart gültig ist, sofern sie für
     * die Schulform nicht auf einzelne Gliederungen eingeschränkt ist.
     *
     * @return eine Liste der Schulformen
     */
    getSchulformen() {
        if (this.schulformen === null) {
            this.schulformen = new Vector_1.Vector();
            if (this.schulformenKuerzel !== null) {
                for (let sfKuerzel of this.schulformenKuerzel) {
                    let schulform = Schulform_1.Schulform.getByKuerzel(sfKuerzel);
                    if (schulform !== null)
                        this.schulformen.add(schulform);
                }
            }
        }
        return this.schulformen;
    }
    /**
     * Liefert die Schulgliederungen, bei den Schulformen, wo die Kursart nur bei
     * einzelnen Schulgliederungen zulässig ist, zurück.
     *
     * @return eine Liste der Schulgliederungen
     */
    getGliederungen() {
        if (this.gliederungen === null) {
            this.gliederungen = new Vector_1.Vector();
            if (this.gliederungenKuerzel !== null) {
                for (let sgKuerzel of this.gliederungenKuerzel) {
                    let gliederung = Schulgliederung_1.Schulgliederung.getByKuerzel(sgKuerzel);
                    if (gliederung !== null)
                        this.gliederungen.add(gliederung);
                }
            }
        }
        return this.gliederungen;
    }
    /**
     * Bestimmt anhand des nicht unbedingt eindeutigen (!) Statistik-Kürzels, die
     * zuläsige Kursart.
     *
     * @param kursart   das nicht unbedingt eindeutige Statistik-Kürzel
     *
     * @return die Kursart oder null, wenn keine Zuordnung für das übergebene Kürzel vorhanden ist
     */
    static getByASDKursart(kursart) {
        return ZulaessigeKursart.getMapKursartenByKuerzel().get(kursart);
    }
    /**
     * Returns the name of this enumeration value.
     *
     * @returns the name
     */
    name() {
        return this.__name;
    }
    /**
     * Returns the ordinal value of this enumeration value.
     *
     * @returns the ordinal value
     */
    ordinal() {
        return this.__ordinal;
    }
    /**
     * Returns the name of this enumeration value.
     *
     * @returns the name
     */
    toString() {
        return this.__name;
    }
    /**
     * Returns true if this and the other enumeration values are equal.
     *
     * @param other   the other enumeration value
     *
     * @returns true if they are equal and false otherwise
     */
    equals(other) {
        if (!(other instanceof ZulaessigeKursart))
            return false;
        return this === other;
    }
    /**
     * Returns the ordinal value as hashcode, since the ordinal value is unique.
     *
     * @returns the ordinal value as hashcode
     */
    hashCode() {
        return this.__ordinal;
    }
    /**
     * Compares this enumeration value with the other enumeration value by their ordinal value.
     *
     * @param other   the other enumeration value
     *
     * @returns a negative, zero or postive value as this enumeration value is less than, equal to
     *          or greater than the other enumeration value
     */
    compareTo(other) {
        return this.__ordinal - other.__ordinal;
    }
    /**
     * Returns an array with enumeration values.
     *
     * @returns the array with enumeration values
     */
    static values() {
        return [...this.all_values_by_ordinal];
    }
    /**
     * Returns the enumeration value with the specified name.
     *
     * @param name   the name of the enumeration value
     *
     * @returns the enumeration values or null
     */
    static valueOf(name) {
        let tmp = this.all_values_by_name.get(name);
        return (!tmp) ? null : tmp;
    }
    isTranspiledInstanceOf(name) {
        return ['de.nrw.schule.svws.core.types.statkue.ZulaessigeKursart'].includes(name);
    }
}
exports.ZulaessigeKursart = ZulaessigeKursart;
function cast_de_nrw_schule_svws_core_types_statkue_ZulaessigeKursart(obj) {
    return obj;
}
exports.cast_de_nrw_schule_svws_core_types_statkue_ZulaessigeKursart = cast_de_nrw_schule_svws_core_types_statkue_ZulaessigeKursart;
//# sourceMappingURL=ZulaessigeKursart.js.map