"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.cast_de_nrw_schule_svws_core_types_gost_GostFachbereich = exports.GostFachbereich = void 0;
const JavaObject_1 = require("../../../java/lang/JavaObject");
const GostFach_1 = require("../../../core/data/gost/GostFach");
const Vector_1 = require("../../../java/util/Vector");
const System_1 = require("../../../java/lang/System");
class GostFachbereich extends JavaObject_1.JavaObject {
    static all = new Vector_1.Vector();
    static kuerzel_DEUTSCH = ["D"];
    static kuerzel_FREMDSPRACHE = ["A", "A0", "A5", "A6", "A7", "A8", "A9", "C", "C0", "C5", "C6", "C7", "C8", "C9", "E", "E0", "E5", "E6", "E7", "E8", "E9", "F", "F0", "F5", "F6", "F7", "F8", "F9", "G", "G0", "G5", "G6", "G7", "G8", "G9", "H", "H0", "H5", "H6", "H7", "H8", "H9", "I", "I0", "I5", "I6", "I7", "I8", "I9", "K", "K0", "K5", "K6", "K7", "K8", "K9", "L", "L0", "L5", "L6", "L7", "L8", "L9", "N", "N0", "N5", "N6", "N7", "N8", "N9", "O", "O0", "O5", "O6", "O7", "O8", "O9", "P", "P0", "P5", "P6", "P7", "P8", "P9", "R", "R0", "R5", "R6", "R7", "R8", "R9", "S", "S0", "S5", "S6", "S7", "S8", "S9", "T", "T0", "T5", "T6", "T7", "T8", "T9", "U", "U0", "U5", "U6", "U7", "U8", "U9", "Z", "Z0", "Z5", "Z6", "Z7", "Z8", "Z9"];
    static kuerzel_KUNST_MUSIK = ["KU", "MU"];
    static kuerzel_LITERARISCH_KUENSTLERISCH_ERSATZ = ["LI", "IN", "IV", "VO"];
    static kuerzel_GESCHICHTE = ["GE"];
    static kuerzel_SOZIALWISSENSCHAFTEN = ["SW"];
    static kuerzel_PHILOSOPHIE = ["PL"];
    static kuerzel_GESELLSCHAFTSWISSENSCHAFTLICH_SONSTIGE = ["EK", "PA", "PS", "RK"];
    static kuerzel_MATHEMATIK = ["M"];
    static kuerzel_NATURWISSENSCHAFTLICH_KLASSISCH = ["BI", "CH", "PH"];
    static kuerzel_NATURWISSENSCHAFTLICH_NEU_EINSETZEND = ["EL", "IF", "TC"];
    static kuerzel_RELIGION = ["HR", "OR", "YR", "ER", "KR", "IL"];
    static kuerzel_SPORT = ["SP"];
    static SPRACHLICH_LITERARISCH_KUENSTLERISCH = new GostFachbereich(GostFachbereich.kuerzel_DEUTSCH, GostFachbereich.kuerzel_FREMDSPRACHE, GostFachbereich.kuerzel_KUNST_MUSIK, GostFachbereich.kuerzel_LITERARISCH_KUENSTLERISCH_ERSATZ);
    static DEUTSCH = new GostFachbereich(GostFachbereich.kuerzel_DEUTSCH);
    static FREMDSPRACHE = new GostFachbereich(GostFachbereich.kuerzel_FREMDSPRACHE);
    static KUNST_MUSIK = new GostFachbereich(GostFachbereich.kuerzel_KUNST_MUSIK);
    static LITERARISCH_KUENSTLERISCH = new GostFachbereich(GostFachbereich.kuerzel_KUNST_MUSIK, GostFachbereich.kuerzel_LITERARISCH_KUENSTLERISCH_ERSATZ);
    static LITERARISCH_KUENSTLERISCH_ERSATZ = new GostFachbereich(GostFachbereich.kuerzel_LITERARISCH_KUENSTLERISCH_ERSATZ);
    static GESELLSCHAFTSWISSENSCHAFTLICH = new GostFachbereich(GostFachbereich.kuerzel_GESCHICHTE, GostFachbereich.kuerzel_SOZIALWISSENSCHAFTEN, GostFachbereich.kuerzel_PHILOSOPHIE, GostFachbereich.kuerzel_GESELLSCHAFTSWISSENSCHAFTLICH_SONSTIGE);
    static GESCHICHTE = new GostFachbereich(GostFachbereich.kuerzel_GESCHICHTE);
    static SOZIALWISSENSCHAFTEN = new GostFachbereich(GostFachbereich.kuerzel_SOZIALWISSENSCHAFTEN);
    static PHILOSOPHIE = new GostFachbereich(GostFachbereich.kuerzel_PHILOSOPHIE);
    static GESELLSCHAFTSWISSENSCHAFTLICH_SONSTIGE = new GostFachbereich(GostFachbereich.kuerzel_GESELLSCHAFTSWISSENSCHAFTLICH_SONSTIGE);
    static GESELLSCHAFTSWISSENSCHAFTLICH_MIT_RELIGION = new GostFachbereich(GostFachbereich.kuerzel_GESCHICHTE, GostFachbereich.kuerzel_SOZIALWISSENSCHAFTEN, GostFachbereich.kuerzel_PHILOSOPHIE, GostFachbereich.kuerzel_GESELLSCHAFTSWISSENSCHAFTLICH_SONSTIGE, GostFachbereich.kuerzel_RELIGION);
    static MATHEMATIK = new GostFachbereich(GostFachbereich.kuerzel_MATHEMATIK);
    static MATHEMATISCH_NATURWISSENSCHAFTLICH = new GostFachbereich(GostFachbereich.kuerzel_MATHEMATIK, GostFachbereich.kuerzel_NATURWISSENSCHAFTLICH_KLASSISCH, GostFachbereich.kuerzel_NATURWISSENSCHAFTLICH_NEU_EINSETZEND);
    static NATURWISSENSCHAFTLICH = new GostFachbereich(GostFachbereich.kuerzel_NATURWISSENSCHAFTLICH_KLASSISCH, GostFachbereich.kuerzel_NATURWISSENSCHAFTLICH_NEU_EINSETZEND);
    static NATURWISSENSCHAFTLICH_KLASSISCH = new GostFachbereich(GostFachbereich.kuerzel_NATURWISSENSCHAFTLICH_KLASSISCH);
    static NATURWISSENSCHAFTLICH_NEU_EINSETZEND = new GostFachbereich(GostFachbereich.kuerzel_NATURWISSENSCHAFTLICH_NEU_EINSETZEND);
    static RELIGION = new GostFachbereich(GostFachbereich.kuerzel_RELIGION);
    static SPORT = new GostFachbereich(GostFachbereich.kuerzel_SPORT);
    kuerzel;
    /**
     * Erstellt einen neuen Fachbereich mit den übergebenen Kürzeln von Fächern
     *
     * @param kuerzel   die Kürzel der Fächer des Fachbereichs
     */
    constructor(...kuerzelArrays) {
        super();
        let pos = 0;
        for (let a of kuerzelArrays) {
            pos += a.length;
        }
        this.kuerzel = Array(pos).fill(null);
        pos = 0;
        for (let a of kuerzelArrays) {
            System_1.System.arraycopy(a, 0, this.kuerzel, pos, a.length);
            pos += a.length;
        }
        GostFachbereich.all.add(this);
    }
    /**
     * Implementation for method overloads of 'hat'
     */
    hat(__param0) {
        if (((typeof __param0 !== "undefined") && ((__param0 instanceof JavaObject_1.JavaObject) && (__param0.isTranspiledInstanceOf('de.nrw.schule.svws.core.data.gost.GostFach'))) || (__param0 === null))) {
            let fach = (0, GostFach_1.cast_de_nrw_schule_svws_core_data_gost_GostFach)(__param0);
            return fach === null ? false : this.hat(fach.kuerzel);
        }
        else if (((typeof __param0 !== "undefined") && ((__param0 instanceof String) || (typeof __param0 === "string")) || (__param0 === null))) {
            let kuerzel = __param0;
            if (kuerzel === null)
                return false;
            let fbAlleKuerzel = this.getAlleKuerzel();
            for (let fbKuerzel of fbAlleKuerzel) {
                if (JavaObject_1.JavaObject.equalsTranspiler(kuerzel, (fbKuerzel)))
                    return true;
            }
            return false;
        }
        else
            throw new Error('invalid method overload');
    }
    /**
     * Liefert alle Kürzel der Fächer zurück, die zu diesem Fachbereich gehören.
     *
     * @return alle Kürzel der Fächer dieses Fachbereichs
     */
    getAlleKuerzel() {
        return this.kuerzel;
    }
    /**
     * Implementation for method overloads of 'getBereiche'
     */
    static getBereiche(__param0) {
        if (((typeof __param0 !== "undefined") && ((__param0 instanceof String) || (typeof __param0 === "string")) || (__param0 === null))) {
            let kuerzel = __param0;
            let result = new Vector_1.Vector();
            for (let i = 0; i < GostFachbereich.all.size(); i++) {
                if (GostFachbereich.all.get(i).hat(kuerzel))
                    result.add(GostFachbereich.all.get(i));
            }
            return result;
        }
        else if (((typeof __param0 !== "undefined") && ((__param0 instanceof JavaObject_1.JavaObject) && (__param0.isTranspiledInstanceOf('de.nrw.schule.svws.core.data.gost.GostFach'))) || (__param0 === null))) {
            let fach = (0, GostFach_1.cast_de_nrw_schule_svws_core_data_gost_GostFach)(__param0);
            let result = new Vector_1.Vector();
            for (let i = 0; i < GostFachbereich.all.size(); i++) {
                if (GostFachbereich.all.get(i).hat(fach))
                    result.add(GostFachbereich.all.get(i));
            }
            return result;
        }
        else
            throw new Error('invalid method overload');
    }
    /**
     * Liefert eine Liste mit allen Fachbereichen zurück.
     *
     * @return eine Liste mit allen Fachbereichen.
     */
    static values() {
        return new Vector_1.Vector(GostFachbereich.all);
    }
    isTranspiledInstanceOf(name) {
        return ['de.nrw.schule.svws.core.types.gost.GostFachbereich'].includes(name);
    }
}
exports.GostFachbereich = GostFachbereich;
function cast_de_nrw_schule_svws_core_types_gost_GostFachbereich(obj) {
    return obj;
}
exports.cast_de_nrw_schule_svws_core_types_gost_GostFachbereich = cast_de_nrw_schule_svws_core_types_gost_GostFachbereich;
//# sourceMappingURL=GostFachbereich.js.map