"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.cast_de_nrw_schule_svws_core_data_enm_ENMDaten = exports.ENMDaten = void 0;
const JavaObject_1 = require("../../../java/lang/JavaObject");
const ENMKlasse_1 = require("../../../core/data/enm/ENMKlasse");
const ENMTeilleistungsart_1 = require("../../../core/data/enm/ENMTeilleistungsart");
const ENMFach_1 = require("../../../core/data/enm/ENMFach");
const ENMJahrgang_1 = require("../../../core/data/enm/ENMJahrgang");
const ENMLerngruppe_1 = require("../../../core/data/enm/ENMLerngruppe");
const ENMLehrer_1 = require("../../../core/data/enm/ENMLehrer");
const ENMSchueler_1 = require("../../../core/data/enm/ENMSchueler");
const ENMNote_1 = require("../../../core/data/enm/ENMNote");
const Vector_1 = require("../../../java/util/Vector");
const ENMFoerderschwerpunkt_1 = require("../../../core/data/enm/ENMFoerderschwerpunkt");
const ENMFloskelgruppe_1 = require("../../../core/data/enm/ENMFloskelgruppe");
class ENMDaten extends JavaObject_1.JavaObject {
    enmRevision = -1;
    schuljahr = 0;
    anzahlAbschnitte = 0;
    aktuellerAbschnitt = 0;
    publicKey = null;
    lehrerID = 0;
    fehlstundenEingabe = false;
    fehlstundenSIFachbezogen = false;
    fehlstundenSIIFachbezogen = false;
    schulform = null;
    mailadresse = null;
    noten = new Vector_1.Vector();
    foerderschwerpunkte = new Vector_1.Vector();
    jahrgaenge = new Vector_1.Vector();
    klassen = new Vector_1.Vector();
    floskelgruppen = new Vector_1.Vector();
    lehrer = new Vector_1.Vector();
    faecher = new Vector_1.Vector();
    teilleistungsarten = new Vector_1.Vector();
    lerngruppen = new Vector_1.Vector();
    schueler = new Vector_1.Vector();
    constructor() {
        super();
    }
    isTranspiledInstanceOf(name) {
        return ['de.nrw.schule.svws.core.data.enm.ENMDaten'].includes(name);
    }
    static transpilerFromJSON(json) {
        const obj = JSON.parse(json);
        const result = new ENMDaten();
        if (typeof obj.enmRevision === "undefined")
            throw new Error('invalid json format, missing attribute enmRevision');
        result.enmRevision = obj.enmRevision;
        if (typeof obj.schuljahr === "undefined")
            throw new Error('invalid json format, missing attribute schuljahr');
        result.schuljahr = obj.schuljahr;
        if (typeof obj.anzahlAbschnitte === "undefined")
            throw new Error('invalid json format, missing attribute anzahlAbschnitte');
        result.anzahlAbschnitte = obj.anzahlAbschnitte;
        if (typeof obj.aktuellerAbschnitt === "undefined")
            throw new Error('invalid json format, missing attribute aktuellerAbschnitt');
        result.aktuellerAbschnitt = obj.aktuellerAbschnitt;
        result.publicKey = typeof obj.publicKey === "undefined" ? null : obj.publicKey;
        if (typeof obj.lehrerID === "undefined")
            throw new Error('invalid json format, missing attribute lehrerID');
        result.lehrerID = obj.lehrerID;
        if (typeof obj.fehlstundenEingabe === "undefined")
            throw new Error('invalid json format, missing attribute fehlstundenEingabe');
        result.fehlstundenEingabe = obj.fehlstundenEingabe;
        if (typeof obj.fehlstundenSIFachbezogen === "undefined")
            throw new Error('invalid json format, missing attribute fehlstundenSIFachbezogen');
        result.fehlstundenSIFachbezogen = obj.fehlstundenSIFachbezogen;
        if (typeof obj.fehlstundenSIIFachbezogen === "undefined")
            throw new Error('invalid json format, missing attribute fehlstundenSIIFachbezogen');
        result.fehlstundenSIIFachbezogen = obj.fehlstundenSIIFachbezogen;
        result.schulform = typeof obj.schulform === "undefined" ? null : obj.schulform;
        result.mailadresse = typeof obj.mailadresse === "undefined" ? null : obj.mailadresse;
        if (!!obj.noten) {
            for (let elem of obj.noten) {
                result.noten?.add(ENMNote_1.ENMNote.transpilerFromJSON(JSON.stringify(elem)));
            }
        }
        if (!!obj.foerderschwerpunkte) {
            for (let elem of obj.foerderschwerpunkte) {
                result.foerderschwerpunkte?.add(ENMFoerderschwerpunkt_1.ENMFoerderschwerpunkt.transpilerFromJSON(JSON.stringify(elem)));
            }
        }
        if (!!obj.jahrgaenge) {
            for (let elem of obj.jahrgaenge) {
                result.jahrgaenge?.add(ENMJahrgang_1.ENMJahrgang.transpilerFromJSON(JSON.stringify(elem)));
            }
        }
        if (!!obj.klassen) {
            for (let elem of obj.klassen) {
                result.klassen?.add(ENMKlasse_1.ENMKlasse.transpilerFromJSON(JSON.stringify(elem)));
            }
        }
        if (!!obj.floskelgruppen) {
            for (let elem of obj.floskelgruppen) {
                result.floskelgruppen?.add(ENMFloskelgruppe_1.ENMFloskelgruppe.transpilerFromJSON(JSON.stringify(elem)));
            }
        }
        if (!!obj.lehrer) {
            for (let elem of obj.lehrer) {
                result.lehrer?.add(ENMLehrer_1.ENMLehrer.transpilerFromJSON(JSON.stringify(elem)));
            }
        }
        if (!!obj.faecher) {
            for (let elem of obj.faecher) {
                result.faecher?.add(ENMFach_1.ENMFach.transpilerFromJSON(JSON.stringify(elem)));
            }
        }
        if (!!obj.teilleistungsarten) {
            for (let elem of obj.teilleistungsarten) {
                result.teilleistungsarten?.add(ENMTeilleistungsart_1.ENMTeilleistungsart.transpilerFromJSON(JSON.stringify(elem)));
            }
        }
        if (!!obj.lerngruppen) {
            for (let elem of obj.lerngruppen) {
                result.lerngruppen?.add(ENMLerngruppe_1.ENMLerngruppe.transpilerFromJSON(JSON.stringify(elem)));
            }
        }
        if (!!obj.schueler) {
            for (let elem of obj.schueler) {
                result.schueler?.add(ENMSchueler_1.ENMSchueler.transpilerFromJSON(JSON.stringify(elem)));
            }
        }
        return result;
    }
    static transpilerToJSON(obj) {
        let result = '{';
        result += '"enmRevision" : ' + obj.enmRevision + ',';
        result += '"schuljahr" : ' + obj.schuljahr + ',';
        result += '"anzahlAbschnitte" : ' + obj.anzahlAbschnitte + ',';
        result += '"aktuellerAbschnitt" : ' + obj.aktuellerAbschnitt + ',';
        result += '"publicKey" : ' + ((!obj.publicKey) ? 'null' : '"' + obj.publicKey.valueOf() + '"') + ',';
        result += '"lehrerID" : ' + obj.lehrerID + ',';
        result += '"fehlstundenEingabe" : ' + obj.fehlstundenEingabe + ',';
        result += '"fehlstundenSIFachbezogen" : ' + obj.fehlstundenSIFachbezogen + ',';
        result += '"fehlstundenSIIFachbezogen" : ' + obj.fehlstundenSIIFachbezogen + ',';
        result += '"schulform" : ' + ((!obj.schulform) ? 'null' : '"' + obj.schulform.valueOf() + '"') + ',';
        result += '"mailadresse" : ' + ((!obj.mailadresse) ? 'null' : '"' + obj.mailadresse.valueOf() + '"') + ',';
        if (!obj.noten) {
            result += '[]';
        }
        else {
            result += '[ ';
            for (let i = 0; i < obj.noten.size(); i++) {
                let elem = obj.noten.get(i);
                result += ENMNote_1.ENMNote.transpilerToJSON(elem);
                if (i < obj.noten.size() - 1)
                    result += ',';
            }
            result += ' ]' + ',';
        }
        if (!obj.foerderschwerpunkte) {
            result += '[]';
        }
        else {
            result += '[ ';
            for (let i = 0; i < obj.foerderschwerpunkte.size(); i++) {
                let elem = obj.foerderschwerpunkte.get(i);
                result += ENMFoerderschwerpunkt_1.ENMFoerderschwerpunkt.transpilerToJSON(elem);
                if (i < obj.foerderschwerpunkte.size() - 1)
                    result += ',';
            }
            result += ' ]' + ',';
        }
        if (!obj.jahrgaenge) {
            result += '[]';
        }
        else {
            result += '[ ';
            for (let i = 0; i < obj.jahrgaenge.size(); i++) {
                let elem = obj.jahrgaenge.get(i);
                result += ENMJahrgang_1.ENMJahrgang.transpilerToJSON(elem);
                if (i < obj.jahrgaenge.size() - 1)
                    result += ',';
            }
            result += ' ]' + ',';
        }
        if (!obj.klassen) {
            result += '[]';
        }
        else {
            result += '[ ';
            for (let i = 0; i < obj.klassen.size(); i++) {
                let elem = obj.klassen.get(i);
                result += ENMKlasse_1.ENMKlasse.transpilerToJSON(elem);
                if (i < obj.klassen.size() - 1)
                    result += ',';
            }
            result += ' ]' + ',';
        }
        if (!obj.floskelgruppen) {
            result += '[]';
        }
        else {
            result += '[ ';
            for (let i = 0; i < obj.floskelgruppen.size(); i++) {
                let elem = obj.floskelgruppen.get(i);
                result += ENMFloskelgruppe_1.ENMFloskelgruppe.transpilerToJSON(elem);
                if (i < obj.floskelgruppen.size() - 1)
                    result += ',';
            }
            result += ' ]' + ',';
        }
        if (!obj.lehrer) {
            result += '[]';
        }
        else {
            result += '[ ';
            for (let i = 0; i < obj.lehrer.size(); i++) {
                let elem = obj.lehrer.get(i);
                result += ENMLehrer_1.ENMLehrer.transpilerToJSON(elem);
                if (i < obj.lehrer.size() - 1)
                    result += ',';
            }
            result += ' ]' + ',';
        }
        if (!obj.faecher) {
            result += '[]';
        }
        else {
            result += '[ ';
            for (let i = 0; i < obj.faecher.size(); i++) {
                let elem = obj.faecher.get(i);
                result += ENMFach_1.ENMFach.transpilerToJSON(elem);
                if (i < obj.faecher.size() - 1)
                    result += ',';
            }
            result += ' ]' + ',';
        }
        if (!obj.teilleistungsarten) {
            result += '[]';
        }
        else {
            result += '[ ';
            for (let i = 0; i < obj.teilleistungsarten.size(); i++) {
                let elem = obj.teilleistungsarten.get(i);
                result += ENMTeilleistungsart_1.ENMTeilleistungsart.transpilerToJSON(elem);
                if (i < obj.teilleistungsarten.size() - 1)
                    result += ',';
            }
            result += ' ]' + ',';
        }
        if (!obj.lerngruppen) {
            result += '[]';
        }
        else {
            result += '[ ';
            for (let i = 0; i < obj.lerngruppen.size(); i++) {
                let elem = obj.lerngruppen.get(i);
                result += ENMLerngruppe_1.ENMLerngruppe.transpilerToJSON(elem);
                if (i < obj.lerngruppen.size() - 1)
                    result += ',';
            }
            result += ' ]' + ',';
        }
        if (!obj.schueler) {
            result += '[]';
        }
        else {
            result += '[ ';
            for (let i = 0; i < obj.schueler.size(); i++) {
                let elem = obj.schueler.get(i);
                result += ENMSchueler_1.ENMSchueler.transpilerToJSON(elem);
                if (i < obj.schueler.size() - 1)
                    result += ',';
            }
            result += ' ]' + ',';
        }
        result = result.slice(0, -1);
        result += '}';
        return result;
    }
    static transpilerToJSONPatch(obj) {
        let result = '{';
        if (typeof obj.enmRevision !== "undefined") {
            result += '"enmRevision" : ' + obj.enmRevision + ',';
        }
        if (typeof obj.schuljahr !== "undefined") {
            result += '"schuljahr" : ' + obj.schuljahr + ',';
        }
        if (typeof obj.anzahlAbschnitte !== "undefined") {
            result += '"anzahlAbschnitte" : ' + obj.anzahlAbschnitte + ',';
        }
        if (typeof obj.aktuellerAbschnitt !== "undefined") {
            result += '"aktuellerAbschnitt" : ' + obj.aktuellerAbschnitt + ',';
        }
        if (typeof obj.publicKey !== "undefined") {
            result += '"publicKey" : ' + ((!obj.publicKey) ? 'null' : '"' + obj.publicKey.valueOf() + '"') + ',';
        }
        if (typeof obj.lehrerID !== "undefined") {
            result += '"lehrerID" : ' + obj.lehrerID + ',';
        }
        if (typeof obj.fehlstundenEingabe !== "undefined") {
            result += '"fehlstundenEingabe" : ' + obj.fehlstundenEingabe + ',';
        }
        if (typeof obj.fehlstundenSIFachbezogen !== "undefined") {
            result += '"fehlstundenSIFachbezogen" : ' + obj.fehlstundenSIFachbezogen + ',';
        }
        if (typeof obj.fehlstundenSIIFachbezogen !== "undefined") {
            result += '"fehlstundenSIIFachbezogen" : ' + obj.fehlstundenSIIFachbezogen + ',';
        }
        if (typeof obj.schulform !== "undefined") {
            result += '"schulform" : ' + ((!obj.schulform) ? 'null' : '"' + obj.schulform.valueOf() + '"') + ',';
        }
        if (typeof obj.mailadresse !== "undefined") {
            result += '"mailadresse" : ' + ((!obj.mailadresse) ? 'null' : '"' + obj.mailadresse.valueOf() + '"') + ',';
        }
        if (typeof obj.noten !== "undefined") {
            if (!obj.noten) {
                result += '[]';
            }
            else {
                result += '[ ';
                for (let i = 0; i < obj.noten.size(); i++) {
                    let elem = obj.noten.get(i);
                    result += ENMNote_1.ENMNote.transpilerToJSON(elem);
                    if (i < obj.noten.size() - 1)
                        result += ',';
                }
                result += ' ]' + ',';
            }
        }
        if (typeof obj.foerderschwerpunkte !== "undefined") {
            if (!obj.foerderschwerpunkte) {
                result += '[]';
            }
            else {
                result += '[ ';
                for (let i = 0; i < obj.foerderschwerpunkte.size(); i++) {
                    let elem = obj.foerderschwerpunkte.get(i);
                    result += ENMFoerderschwerpunkt_1.ENMFoerderschwerpunkt.transpilerToJSON(elem);
                    if (i < obj.foerderschwerpunkte.size() - 1)
                        result += ',';
                }
                result += ' ]' + ',';
            }
        }
        if (typeof obj.jahrgaenge !== "undefined") {
            if (!obj.jahrgaenge) {
                result += '[]';
            }
            else {
                result += '[ ';
                for (let i = 0; i < obj.jahrgaenge.size(); i++) {
                    let elem = obj.jahrgaenge.get(i);
                    result += ENMJahrgang_1.ENMJahrgang.transpilerToJSON(elem);
                    if (i < obj.jahrgaenge.size() - 1)
                        result += ',';
                }
                result += ' ]' + ',';
            }
        }
        if (typeof obj.klassen !== "undefined") {
            if (!obj.klassen) {
                result += '[]';
            }
            else {
                result += '[ ';
                for (let i = 0; i < obj.klassen.size(); i++) {
                    let elem = obj.klassen.get(i);
                    result += ENMKlasse_1.ENMKlasse.transpilerToJSON(elem);
                    if (i < obj.klassen.size() - 1)
                        result += ',';
                }
                result += ' ]' + ',';
            }
        }
        if (typeof obj.floskelgruppen !== "undefined") {
            if (!obj.floskelgruppen) {
                result += '[]';
            }
            else {
                result += '[ ';
                for (let i = 0; i < obj.floskelgruppen.size(); i++) {
                    let elem = obj.floskelgruppen.get(i);
                    result += ENMFloskelgruppe_1.ENMFloskelgruppe.transpilerToJSON(elem);
                    if (i < obj.floskelgruppen.size() - 1)
                        result += ',';
                }
                result += ' ]' + ',';
            }
        }
        if (typeof obj.lehrer !== "undefined") {
            if (!obj.lehrer) {
                result += '[]';
            }
            else {
                result += '[ ';
                for (let i = 0; i < obj.lehrer.size(); i++) {
                    let elem = obj.lehrer.get(i);
                    result += ENMLehrer_1.ENMLehrer.transpilerToJSON(elem);
                    if (i < obj.lehrer.size() - 1)
                        result += ',';
                }
                result += ' ]' + ',';
            }
        }
        if (typeof obj.faecher !== "undefined") {
            if (!obj.faecher) {
                result += '[]';
            }
            else {
                result += '[ ';
                for (let i = 0; i < obj.faecher.size(); i++) {
                    let elem = obj.faecher.get(i);
                    result += ENMFach_1.ENMFach.transpilerToJSON(elem);
                    if (i < obj.faecher.size() - 1)
                        result += ',';
                }
                result += ' ]' + ',';
            }
        }
        if (typeof obj.teilleistungsarten !== "undefined") {
            if (!obj.teilleistungsarten) {
                result += '[]';
            }
            else {
                result += '[ ';
                for (let i = 0; i < obj.teilleistungsarten.size(); i++) {
                    let elem = obj.teilleistungsarten.get(i);
                    result += ENMTeilleistungsart_1.ENMTeilleistungsart.transpilerToJSON(elem);
                    if (i < obj.teilleistungsarten.size() - 1)
                        result += ',';
                }
                result += ' ]' + ',';
            }
        }
        if (typeof obj.lerngruppen !== "undefined") {
            if (!obj.lerngruppen) {
                result += '[]';
            }
            else {
                result += '[ ';
                for (let i = 0; i < obj.lerngruppen.size(); i++) {
                    let elem = obj.lerngruppen.get(i);
                    result += ENMLerngruppe_1.ENMLerngruppe.transpilerToJSON(elem);
                    if (i < obj.lerngruppen.size() - 1)
                        result += ',';
                }
                result += ' ]' + ',';
            }
        }
        if (typeof obj.schueler !== "undefined") {
            if (!obj.schueler) {
                result += '[]';
            }
            else {
                result += '[ ';
                for (let i = 0; i < obj.schueler.size(); i++) {
                    let elem = obj.schueler.get(i);
                    result += ENMSchueler_1.ENMSchueler.transpilerToJSON(elem);
                    if (i < obj.schueler.size() - 1)
                        result += ',';
                }
                result += ' ]' + ',';
            }
        }
        result = result.slice(0, -1);
        result += '}';
        return result;
    }
}
exports.ENMDaten = ENMDaten;
function cast_de_nrw_schule_svws_core_data_enm_ENMDaten(obj) {
    return obj;
}
exports.cast_de_nrw_schule_svws_core_data_enm_ENMDaten = cast_de_nrw_schule_svws_core_data_enm_ENMDaten;
//# sourceMappingURL=ENMDaten.js.map