"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.cast_de_nrw_schule_svws_core_data_gost_Abiturdaten = exports.Abiturdaten = void 0;
const JavaObject_1 = require("../../../java/lang/JavaObject");
const AbiturFachbelegung_1 = require("../../../core/data/gost/AbiturFachbelegung");
const GostBesondereLernleistung_1 = require("../../../core/types/gost/GostBesondereLernleistung");
const Vector_1 = require("../../../java/util/Vector");
const Sprachendaten_1 = require("../../../core/data/Sprachendaten");
class Abiturdaten extends JavaObject_1.JavaObject {
    schuelerID = 0;
    abiturjahr = 0;
    schuljahrAbitur = 0;
    bewertetesHalbjahr = Array(6).fill(false);
    fachbelegungen = new Vector_1.Vector();
    sprachendaten = new Sprachendaten_1.Sprachendaten();
    bilingualeSprache = null;
    sek1Fremdsprache2ManuellGeprueft = false;
    muttersprachenpruefungEndeEF = false;
    latinum = false;
    kleinesLatinum = false;
    graecum = false;
    hebraicum = false;
    block1FehlstundenGesamt = 0;
    block1FehlstundenUnentschuldigt = 0;
    projektKursThema = null;
    projektkursLeitfach1Kuerzel = null;
    projektkursLeitfach2Kuerzel = null;
    besondereLernleistung = GostBesondereLernleistung_1.GostBesondereLernleistung.KEINE.kuerzel;
    besondereLernleistungNotenKuerzel = null;
    besondereLernleistungThema = null;
    block1AnzahlKurse = null;
    block1DefiziteGesamt = null;
    block1DefiziteLK = null;
    block1PunktSummeGK = null;
    block1PunktSummeLK = null;
    block1PunktSummeNormiert = null;
    block1NotenpunkteDurchschnitt = null;
    block1Zulassung = null;
    freiwilligerRuecktritt = false;
    block2DefiziteGesamt = null;
    block2DefiziteLK = null;
    block2PunktSumme = null;
    gesamtPunkte = null;
    gesamtPunkteVerbesserung = null;
    gesamtPunkteVerschlechterung = null;
    pruefungBestanden = null;
    note = null;
    constructor() {
        super();
    }
    isTranspiledInstanceOf(name) {
        return ['de.nrw.schule.svws.core.data.gost.Abiturdaten'].includes(name);
    }
    static transpilerFromJSON(json) {
        const obj = JSON.parse(json);
        const result = new Abiturdaten();
        if (typeof obj.schuelerID === "undefined")
            throw new Error('invalid json format, missing attribute schuelerID');
        result.schuelerID = obj.schuelerID;
        if (typeof obj.abiturjahr === "undefined")
            throw new Error('invalid json format, missing attribute abiturjahr');
        result.abiturjahr = obj.abiturjahr;
        if (typeof obj.schuljahrAbitur === "undefined")
            throw new Error('invalid json format, missing attribute schuljahrAbitur');
        result.schuljahrAbitur = obj.schuljahrAbitur;
        for (let i = 0; i < obj.bewertetesHalbjahr.length; i++) {
            result.bewertetesHalbjahr[i] = obj.bewertetesHalbjahr[i];
        }
        if (!!obj.fachbelegungen) {
            for (let elem of obj.fachbelegungen) {
                result.fachbelegungen?.add(AbiturFachbelegung_1.AbiturFachbelegung.transpilerFromJSON(JSON.stringify(elem)));
            }
        }
        if (typeof obj.sprachendaten === "undefined")
            throw new Error('invalid json format, missing attribute sprachendaten');
        result.sprachendaten = Sprachendaten_1.Sprachendaten.transpilerFromJSON(JSON.stringify(obj.sprachendaten));
        result.bilingualeSprache = typeof obj.bilingualeSprache === "undefined" ? null : obj.bilingualeSprache;
        if (typeof obj.sek1Fremdsprache2ManuellGeprueft === "undefined")
            throw new Error('invalid json format, missing attribute sek1Fremdsprache2ManuellGeprueft');
        result.sek1Fremdsprache2ManuellGeprueft = obj.sek1Fremdsprache2ManuellGeprueft;
        if (typeof obj.muttersprachenpruefungEndeEF === "undefined")
            throw new Error('invalid json format, missing attribute muttersprachenpruefungEndeEF');
        result.muttersprachenpruefungEndeEF = obj.muttersprachenpruefungEndeEF;
        if (typeof obj.latinum === "undefined")
            throw new Error('invalid json format, missing attribute latinum');
        result.latinum = obj.latinum;
        if (typeof obj.kleinesLatinum === "undefined")
            throw new Error('invalid json format, missing attribute kleinesLatinum');
        result.kleinesLatinum = obj.kleinesLatinum;
        if (typeof obj.graecum === "undefined")
            throw new Error('invalid json format, missing attribute graecum');
        result.graecum = obj.graecum;
        if (typeof obj.hebraicum === "undefined")
            throw new Error('invalid json format, missing attribute hebraicum');
        result.hebraicum = obj.hebraicum;
        if (typeof obj.block1FehlstundenGesamt === "undefined")
            throw new Error('invalid json format, missing attribute block1FehlstundenGesamt');
        result.block1FehlstundenGesamt = obj.block1FehlstundenGesamt;
        if (typeof obj.block1FehlstundenUnentschuldigt === "undefined")
            throw new Error('invalid json format, missing attribute block1FehlstundenUnentschuldigt');
        result.block1FehlstundenUnentschuldigt = obj.block1FehlstundenUnentschuldigt;
        result.projektKursThema = typeof obj.projektKursThema === "undefined" ? null : obj.projektKursThema;
        result.projektkursLeitfach1Kuerzel = typeof obj.projektkursLeitfach1Kuerzel === "undefined" ? null : obj.projektkursLeitfach1Kuerzel;
        result.projektkursLeitfach2Kuerzel = typeof obj.projektkursLeitfach2Kuerzel === "undefined" ? null : obj.projektkursLeitfach2Kuerzel;
        result.besondereLernleistung = typeof obj.besondereLernleistung === "undefined" ? null : obj.besondereLernleistung;
        result.besondereLernleistungNotenKuerzel = typeof obj.besondereLernleistungNotenKuerzel === "undefined" ? null : obj.besondereLernleistungNotenKuerzel;
        result.besondereLernleistungThema = typeof obj.besondereLernleistungThema === "undefined" ? null : obj.besondereLernleistungThema;
        result.block1AnzahlKurse = typeof obj.block1AnzahlKurse === "undefined" ? null : obj.block1AnzahlKurse;
        result.block1DefiziteGesamt = typeof obj.block1DefiziteGesamt === "undefined" ? null : obj.block1DefiziteGesamt;
        result.block1DefiziteLK = typeof obj.block1DefiziteLK === "undefined" ? null : obj.block1DefiziteLK;
        result.block1PunktSummeGK = typeof obj.block1PunktSummeGK === "undefined" ? null : obj.block1PunktSummeGK;
        result.block1PunktSummeLK = typeof obj.block1PunktSummeLK === "undefined" ? null : obj.block1PunktSummeLK;
        result.block1PunktSummeNormiert = typeof obj.block1PunktSummeNormiert === "undefined" ? null : obj.block1PunktSummeNormiert;
        result.block1NotenpunkteDurchschnitt = typeof obj.block1NotenpunkteDurchschnitt === "undefined" ? null : obj.block1NotenpunkteDurchschnitt;
        result.block1Zulassung = typeof obj.block1Zulassung === "undefined" ? null : obj.block1Zulassung;
        if (typeof obj.freiwilligerRuecktritt === "undefined")
            throw new Error('invalid json format, missing attribute freiwilligerRuecktritt');
        result.freiwilligerRuecktritt = obj.freiwilligerRuecktritt;
        result.block2DefiziteGesamt = typeof obj.block2DefiziteGesamt === "undefined" ? null : obj.block2DefiziteGesamt;
        result.block2DefiziteLK = typeof obj.block2DefiziteLK === "undefined" ? null : obj.block2DefiziteLK;
        result.block2PunktSumme = typeof obj.block2PunktSumme === "undefined" ? null : obj.block2PunktSumme;
        result.gesamtPunkte = typeof obj.gesamtPunkte === "undefined" ? null : obj.gesamtPunkte;
        result.gesamtPunkteVerbesserung = typeof obj.gesamtPunkteVerbesserung === "undefined" ? null : obj.gesamtPunkteVerbesserung;
        result.gesamtPunkteVerschlechterung = typeof obj.gesamtPunkteVerschlechterung === "undefined" ? null : obj.gesamtPunkteVerschlechterung;
        result.pruefungBestanden = typeof obj.pruefungBestanden === "undefined" ? null : obj.pruefungBestanden;
        result.note = typeof obj.note === "undefined" ? null : obj.note;
        return result;
    }
    static transpilerToJSON(obj) {
        let result = '{';
        result += '"schuelerID" : ' + obj.schuelerID + ',';
        result += '"abiturjahr" : ' + obj.abiturjahr + ',';
        result += '"schuljahrAbitur" : ' + obj.schuljahrAbitur + ',';
        if (!obj.bewertetesHalbjahr) {
            result += '[]';
        }
        else {
            result += '[ ';
            for (let i = 0; i < obj.bewertetesHalbjahr.length; i++) {
                let elem = obj.bewertetesHalbjahr[i];
                result += JSON.stringify(elem);
                if (i < obj.bewertetesHalbjahr.length - 1)
                    result += ',';
            }
            result += ' ]' + ',';
        }
        if (!obj.fachbelegungen) {
            result += '[]';
        }
        else {
            result += '[ ';
            for (let i = 0; i < obj.fachbelegungen.size(); i++) {
                let elem = obj.fachbelegungen.get(i);
                result += AbiturFachbelegung_1.AbiturFachbelegung.transpilerToJSON(elem);
                if (i < obj.fachbelegungen.size() - 1)
                    result += ',';
            }
            result += ' ]' + ',';
        }
        result += '"sprachendaten" : ' + Sprachendaten_1.Sprachendaten.transpilerToJSON(obj.sprachendaten) + ',';
        result += '"bilingualeSprache" : ' + ((!obj.bilingualeSprache) ? 'null' : '"' + obj.bilingualeSprache.valueOf() + '"') + ',';
        result += '"sek1Fremdsprache2ManuellGeprueft" : ' + obj.sek1Fremdsprache2ManuellGeprueft + ',';
        result += '"muttersprachenpruefungEndeEF" : ' + obj.muttersprachenpruefungEndeEF + ',';
        result += '"latinum" : ' + obj.latinum + ',';
        result += '"kleinesLatinum" : ' + obj.kleinesLatinum + ',';
        result += '"graecum" : ' + obj.graecum + ',';
        result += '"hebraicum" : ' + obj.hebraicum + ',';
        result += '"block1FehlstundenGesamt" : ' + obj.block1FehlstundenGesamt + ',';
        result += '"block1FehlstundenUnentschuldigt" : ' + obj.block1FehlstundenUnentschuldigt + ',';
        result += '"projektKursThema" : ' + ((!obj.projektKursThema) ? 'null' : '"' + obj.projektKursThema.valueOf() + '"') + ',';
        result += '"projektkursLeitfach1Kuerzel" : ' + ((!obj.projektkursLeitfach1Kuerzel) ? 'null' : '"' + obj.projektkursLeitfach1Kuerzel.valueOf() + '"') + ',';
        result += '"projektkursLeitfach2Kuerzel" : ' + ((!obj.projektkursLeitfach2Kuerzel) ? 'null' : '"' + obj.projektkursLeitfach2Kuerzel.valueOf() + '"') + ',';
        result += '"besondereLernleistung" : ' + ((!obj.besondereLernleistung) ? 'null' : '"' + obj.besondereLernleistung.valueOf() + '"') + ',';
        result += '"besondereLernleistungNotenKuerzel" : ' + ((!obj.besondereLernleistungNotenKuerzel) ? 'null' : '"' + obj.besondereLernleistungNotenKuerzel.valueOf() + '"') + ',';
        result += '"besondereLernleistungThema" : ' + ((!obj.besondereLernleistungThema) ? 'null' : '"' + obj.besondereLernleistungThema.valueOf() + '"') + ',';
        result += '"block1AnzahlKurse" : ' + ((!obj.block1AnzahlKurse) ? 'null' : obj.block1AnzahlKurse.valueOf()) + ',';
        result += '"block1DefiziteGesamt" : ' + ((!obj.block1DefiziteGesamt) ? 'null' : obj.block1DefiziteGesamt.valueOf()) + ',';
        result += '"block1DefiziteLK" : ' + ((!obj.block1DefiziteLK) ? 'null' : obj.block1DefiziteLK.valueOf()) + ',';
        result += '"block1PunktSummeGK" : ' + ((!obj.block1PunktSummeGK) ? 'null' : obj.block1PunktSummeGK.valueOf()) + ',';
        result += '"block1PunktSummeLK" : ' + ((!obj.block1PunktSummeLK) ? 'null' : obj.block1PunktSummeLK.valueOf()) + ',';
        result += '"block1PunktSummeNormiert" : ' + ((!obj.block1PunktSummeNormiert) ? 'null' : obj.block1PunktSummeNormiert.valueOf()) + ',';
        result += '"block1NotenpunkteDurchschnitt" : ' + ((!obj.block1NotenpunkteDurchschnitt) ? 'null' : obj.block1NotenpunkteDurchschnitt.valueOf()) + ',';
        result += '"block1Zulassung" : ' + ((!obj.block1Zulassung) ? 'null' : obj.block1Zulassung.valueOf()) + ',';
        result += '"freiwilligerRuecktritt" : ' + obj.freiwilligerRuecktritt + ',';
        result += '"block2DefiziteGesamt" : ' + ((!obj.block2DefiziteGesamt) ? 'null' : obj.block2DefiziteGesamt.valueOf()) + ',';
        result += '"block2DefiziteLK" : ' + ((!obj.block2DefiziteLK) ? 'null' : obj.block2DefiziteLK.valueOf()) + ',';
        result += '"block2PunktSumme" : ' + ((!obj.block2PunktSumme) ? 'null' : obj.block2PunktSumme.valueOf()) + ',';
        result += '"gesamtPunkte" : ' + ((!obj.gesamtPunkte) ? 'null' : obj.gesamtPunkte.valueOf()) + ',';
        result += '"gesamtPunkteVerbesserung" : ' + ((!obj.gesamtPunkteVerbesserung) ? 'null' : obj.gesamtPunkteVerbesserung.valueOf()) + ',';
        result += '"gesamtPunkteVerschlechterung" : ' + ((!obj.gesamtPunkteVerschlechterung) ? 'null' : obj.gesamtPunkteVerschlechterung.valueOf()) + ',';
        result += '"pruefungBestanden" : ' + ((!obj.pruefungBestanden) ? 'null' : obj.pruefungBestanden.valueOf()) + ',';
        result += '"note" : ' + ((!obj.note) ? 'null' : '"' + obj.note.valueOf() + '"') + ',';
        result = result.slice(0, -1);
        result += '}';
        return result;
    }
    static transpilerToJSONPatch(obj) {
        let result = '{';
        if (typeof obj.schuelerID !== "undefined") {
            result += '"schuelerID" : ' + obj.schuelerID + ',';
        }
        if (typeof obj.abiturjahr !== "undefined") {
            result += '"abiturjahr" : ' + obj.abiturjahr + ',';
        }
        if (typeof obj.schuljahrAbitur !== "undefined") {
            result += '"schuljahrAbitur" : ' + obj.schuljahrAbitur + ',';
        }
        if (typeof obj.bewertetesHalbjahr !== "undefined") {
            let a = obj.bewertetesHalbjahr;
            if (!a) {
                result += '[]';
            }
            else {
                result += '[ ';
                for (let i = 0; i < a.length; i++) {
                    let elem = a[i];
                    result += JSON.stringify(elem);
                    if (i < a.length - 1)
                        result += ',';
                }
                result += ' ]' + ',';
            }
        }
        if (typeof obj.fachbelegungen !== "undefined") {
            if (!obj.fachbelegungen) {
                result += '[]';
            }
            else {
                result += '[ ';
                for (let i = 0; i < obj.fachbelegungen.size(); i++) {
                    let elem = obj.fachbelegungen.get(i);
                    result += AbiturFachbelegung_1.AbiturFachbelegung.transpilerToJSON(elem);
                    if (i < obj.fachbelegungen.size() - 1)
                        result += ',';
                }
                result += ' ]' + ',';
            }
        }
        if (typeof obj.sprachendaten !== "undefined") {
            result += '"sprachendaten" : ' + Sprachendaten_1.Sprachendaten.transpilerToJSON(obj.sprachendaten) + ',';
        }
        if (typeof obj.bilingualeSprache !== "undefined") {
            result += '"bilingualeSprache" : ' + ((!obj.bilingualeSprache) ? 'null' : '"' + obj.bilingualeSprache.valueOf() + '"') + ',';
        }
        if (typeof obj.sek1Fremdsprache2ManuellGeprueft !== "undefined") {
            result += '"sek1Fremdsprache2ManuellGeprueft" : ' + obj.sek1Fremdsprache2ManuellGeprueft + ',';
        }
        if (typeof obj.muttersprachenpruefungEndeEF !== "undefined") {
            result += '"muttersprachenpruefungEndeEF" : ' + obj.muttersprachenpruefungEndeEF + ',';
        }
        if (typeof obj.latinum !== "undefined") {
            result += '"latinum" : ' + obj.latinum + ',';
        }
        if (typeof obj.kleinesLatinum !== "undefined") {
            result += '"kleinesLatinum" : ' + obj.kleinesLatinum + ',';
        }
        if (typeof obj.graecum !== "undefined") {
            result += '"graecum" : ' + obj.graecum + ',';
        }
        if (typeof obj.hebraicum !== "undefined") {
            result += '"hebraicum" : ' + obj.hebraicum + ',';
        }
        if (typeof obj.block1FehlstundenGesamt !== "undefined") {
            result += '"block1FehlstundenGesamt" : ' + obj.block1FehlstundenGesamt + ',';
        }
        if (typeof obj.block1FehlstundenUnentschuldigt !== "undefined") {
            result += '"block1FehlstundenUnentschuldigt" : ' + obj.block1FehlstundenUnentschuldigt + ',';
        }
        if (typeof obj.projektKursThema !== "undefined") {
            result += '"projektKursThema" : ' + ((!obj.projektKursThema) ? 'null' : '"' + obj.projektKursThema.valueOf() + '"') + ',';
        }
        if (typeof obj.projektkursLeitfach1Kuerzel !== "undefined") {
            result += '"projektkursLeitfach1Kuerzel" : ' + ((!obj.projektkursLeitfach1Kuerzel) ? 'null' : '"' + obj.projektkursLeitfach1Kuerzel.valueOf() + '"') + ',';
        }
        if (typeof obj.projektkursLeitfach2Kuerzel !== "undefined") {
            result += '"projektkursLeitfach2Kuerzel" : ' + ((!obj.projektkursLeitfach2Kuerzel) ? 'null' : '"' + obj.projektkursLeitfach2Kuerzel.valueOf() + '"') + ',';
        }
        if (typeof obj.besondereLernleistung !== "undefined") {
            result += '"besondereLernleistung" : ' + ((!obj.besondereLernleistung) ? 'null' : '"' + obj.besondereLernleistung.valueOf() + '"') + ',';
        }
        if (typeof obj.besondereLernleistungNotenKuerzel !== "undefined") {
            result += '"besondereLernleistungNotenKuerzel" : ' + ((!obj.besondereLernleistungNotenKuerzel) ? 'null' : '"' + obj.besondereLernleistungNotenKuerzel.valueOf() + '"') + ',';
        }
        if (typeof obj.besondereLernleistungThema !== "undefined") {
            result += '"besondereLernleistungThema" : ' + ((!obj.besondereLernleistungThema) ? 'null' : '"' + obj.besondereLernleistungThema.valueOf() + '"') + ',';
        }
        if (typeof obj.block1AnzahlKurse !== "undefined") {
            result += '"block1AnzahlKurse" : ' + ((!obj.block1AnzahlKurse) ? 'null' : obj.block1AnzahlKurse.valueOf()) + ',';
        }
        if (typeof obj.block1DefiziteGesamt !== "undefined") {
            result += '"block1DefiziteGesamt" : ' + ((!obj.block1DefiziteGesamt) ? 'null' : obj.block1DefiziteGesamt.valueOf()) + ',';
        }
        if (typeof obj.block1DefiziteLK !== "undefined") {
            result += '"block1DefiziteLK" : ' + ((!obj.block1DefiziteLK) ? 'null' : obj.block1DefiziteLK.valueOf()) + ',';
        }
        if (typeof obj.block1PunktSummeGK !== "undefined") {
            result += '"block1PunktSummeGK" : ' + ((!obj.block1PunktSummeGK) ? 'null' : obj.block1PunktSummeGK.valueOf()) + ',';
        }
        if (typeof obj.block1PunktSummeLK !== "undefined") {
            result += '"block1PunktSummeLK" : ' + ((!obj.block1PunktSummeLK) ? 'null' : obj.block1PunktSummeLK.valueOf()) + ',';
        }
        if (typeof obj.block1PunktSummeNormiert !== "undefined") {
            result += '"block1PunktSummeNormiert" : ' + ((!obj.block1PunktSummeNormiert) ? 'null' : obj.block1PunktSummeNormiert.valueOf()) + ',';
        }
        if (typeof obj.block1NotenpunkteDurchschnitt !== "undefined") {
            result += '"block1NotenpunkteDurchschnitt" : ' + ((!obj.block1NotenpunkteDurchschnitt) ? 'null' : obj.block1NotenpunkteDurchschnitt.valueOf()) + ',';
        }
        if (typeof obj.block1Zulassung !== "undefined") {
            result += '"block1Zulassung" : ' + ((!obj.block1Zulassung) ? 'null' : obj.block1Zulassung.valueOf()) + ',';
        }
        if (typeof obj.freiwilligerRuecktritt !== "undefined") {
            result += '"freiwilligerRuecktritt" : ' + obj.freiwilligerRuecktritt + ',';
        }
        if (typeof obj.block2DefiziteGesamt !== "undefined") {
            result += '"block2DefiziteGesamt" : ' + ((!obj.block2DefiziteGesamt) ? 'null' : obj.block2DefiziteGesamt.valueOf()) + ',';
        }
        if (typeof obj.block2DefiziteLK !== "undefined") {
            result += '"block2DefiziteLK" : ' + ((!obj.block2DefiziteLK) ? 'null' : obj.block2DefiziteLK.valueOf()) + ',';
        }
        if (typeof obj.block2PunktSumme !== "undefined") {
            result += '"block2PunktSumme" : ' + ((!obj.block2PunktSumme) ? 'null' : obj.block2PunktSumme.valueOf()) + ',';
        }
        if (typeof obj.gesamtPunkte !== "undefined") {
            result += '"gesamtPunkte" : ' + ((!obj.gesamtPunkte) ? 'null' : obj.gesamtPunkte.valueOf()) + ',';
        }
        if (typeof obj.gesamtPunkteVerbesserung !== "undefined") {
            result += '"gesamtPunkteVerbesserung" : ' + ((!obj.gesamtPunkteVerbesserung) ? 'null' : obj.gesamtPunkteVerbesserung.valueOf()) + ',';
        }
        if (typeof obj.gesamtPunkteVerschlechterung !== "undefined") {
            result += '"gesamtPunkteVerschlechterung" : ' + ((!obj.gesamtPunkteVerschlechterung) ? 'null' : obj.gesamtPunkteVerschlechterung.valueOf()) + ',';
        }
        if (typeof obj.pruefungBestanden !== "undefined") {
            result += '"pruefungBestanden" : ' + ((!obj.pruefungBestanden) ? 'null' : obj.pruefungBestanden.valueOf()) + ',';
        }
        if (typeof obj.note !== "undefined") {
            result += '"note" : ' + ((!obj.note) ? 'null' : '"' + obj.note.valueOf() + '"') + ',';
        }
        result = result.slice(0, -1);
        result += '}';
        return result;
    }
}
exports.Abiturdaten = Abiturdaten;
function cast_de_nrw_schule_svws_core_data_gost_Abiturdaten(obj) {
    return obj;
}
exports.cast_de_nrw_schule_svws_core_data_gost_Abiturdaten = cast_de_nrw_schule_svws_core_data_gost_Abiturdaten;
//# sourceMappingURL=Abiturdaten.js.map