"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.cast_de_nrw_schule_svws_core_types_Sprachreferenzniveau = exports.Sprachreferenzniveau = void 0;
const JavaObject_1 = require("../../java/lang/JavaObject");
const JavaInteger_1 = require("../../java/lang/JavaInteger");
const HashMap_1 = require("../../java/util/HashMap");
class Sprachreferenzniveau extends JavaObject_1.JavaObject {
    static mapBezeichnung = new HashMap_1.HashMap();
    static A1 = new Sprachreferenzniveau(1, "A1");
    static A1P = new Sprachreferenzniveau(2, "A1+");
    static A1A2 = new Sprachreferenzniveau(3, "A1/A2");
    static A2 = new Sprachreferenzniveau(4, "A2");
    static A2P = new Sprachreferenzniveau(5, "A2+");
    static A2B1 = new Sprachreferenzniveau(6, "A2/B1");
    static B1 = new Sprachreferenzniveau(7, "B1");
    static B1P = new Sprachreferenzniveau(8, "B1+");
    static B1B2 = new Sprachreferenzniveau(9, "B1/B2");
    static B2 = new Sprachreferenzniveau(10, "B2");
    static B2C1 = new Sprachreferenzniveau(11, "B2/C1");
    static C1 = new Sprachreferenzniveau(12, "C1");
    static C2 = new Sprachreferenzniveau(13, "C2");
    sortierung;
    bezeichnung;
    /**
     *
     * Erstellt ein neues Sprachreferenzniveau dieser Aufzählung.
     *
     * @param sortierung    die Sortierung, welche nur intern für den vergleich von
     *                      Referenzniveaus genutzt wird.
     * @param bezeichnung   die Bezeichnung des Sprachreferenzniveaus
     */
    constructor(sortierung, bezeichnung) {
        super();
        this.sortierung = sortierung;
        this.bezeichnung = bezeichnung;
        Sprachreferenzniveau.mapBezeichnung.put(bezeichnung, this);
    }
    /**
     * Gibt das Sprachreferenzniveau für die übergebene Bezeichnung zurück.
     *
     * @param bezeichnung   die Bezeichnung des Sprachreferenzniveaus
     *
     * @return das Sprachreferenzniveau oder null im Fehlerfall
     */
    static getByBezeichnung(bezeichnung) {
        return Sprachreferenzniveau.mapBezeichnung.get(bezeichnung);
    }
    /**
     * Implementation for method overloads of 'compareTo'
     */
    compareTo(__param0) {
        if (((typeof __param0 !== "undefined") && ((__param0 instanceof JavaObject_1.JavaObject) && (__param0.isTranspiledInstanceOf('de.nrw.schule.svws.core.types.Sprachreferenzniveau'))) || (__param0 === null))) {
            let other = cast_de_nrw_schule_svws_core_types_Sprachreferenzniveau(__param0);
            if (other === null)
                return 1;
            return JavaInteger_1.JavaInteger.compare(this.sortierung, other.sortierung);
        }
        else if (((typeof __param0 !== "undefined") && ((__param0 instanceof String) || (typeof __param0 === "string")) || (__param0 === null))) {
            let bezeichnung = __param0;
            return this.compareTo(Sprachreferenzniveau.getByBezeichnung(bezeichnung));
        }
        else
            throw new Error('invalid method overload');
    }
    isTranspiledInstanceOf(name) {
        return ['java.lang.Comparable', 'de.nrw.schule.svws.core.types.Sprachreferenzniveau'].includes(name);
    }
}
exports.Sprachreferenzniveau = Sprachreferenzniveau;
function cast_de_nrw_schule_svws_core_types_Sprachreferenzniveau(obj) {
    return obj;
}
exports.cast_de_nrw_schule_svws_core_types_Sprachreferenzniveau = cast_de_nrw_schule_svws_core_types_Sprachreferenzniveau;
//# sourceMappingURL=Sprachreferenzniveau.js.map