"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.cast_de_nrw_schule_svws_core_abschluss_ge_AbschlussFaecherGruppe = exports.AbschlussFaecherGruppe = void 0; const JavaObject_1 = require("../../../java/lang/JavaObject"); const StringBuilder_1 = require("../../../java/lang/StringBuilder"); const Vector_1 = require("../../../java/util/Vector"); const GELeistungsdifferenzierteKursart_1 = require("../../../core/types/ge/GELeistungsdifferenzierteKursart"); const AbschlussManager_1 = require("../../../core/abschluss/AbschlussManager"); class AbschlussFaecherGruppe extends JavaObject_1.JavaObject { faecher = new Vector_1.Vector(); /** * Erzeugt eine Fächergruppe aus den angegebenen Fächern und den vorgegebenen Kriterien. * * @param faecherAlle eine Liste aller vorhandenen Leistungen * @param faecherNutzen nur die gelisteten Fächer nutzen, null bedeutet grundsätzlich alle benoteten Fächer nutzen (außer den gefilterten) * @param faecherFiltern null bedeutet keinen Filter verwenden, ansonsten werden die gelisteten Fächer gefiltert */ constructor(faecherAlle, faecherNutzen, faecherFiltern) { super(); if (faecherAlle === null) return; for (let i = 0; i < faecherAlle.size(); i++) { let fach = faecherAlle.get(i); if (fach.kuerzel === null) continue; if ((faecherFiltern !== null) && faecherFiltern.contains(fach.kuerzel)) continue; if ((faecherNutzen !== null) && !faecherNutzen.contains(fach.kuerzel)) continue; this.faecher.add(AbschlussManager_1.AbschlussManager.erstelleAbschlussFach(fach.kuerzel, fach.bezeichnung, fach.note, GELeistungsdifferenzierteKursart_1.GELeistungsdifferenzierteKursart.from(fach.kursart), fach.istFremdsprache)); } } /** * Prüft, ob die gelisteten Fächer in der Fächergruppe sind und nur diese. * * @param faecherAbgleich die Fächer, welche in der Fächergruppe sein sollen. * * @return true, falls die angegebenen Fächer und nur diese in der Fächergruppe sind, ansonsten false. */ istVollstaendig(faecherAbgleich) { if (faecherAbgleich === null) return true; if (this.isEmpty()) return false; for (let kuerzel of faecherAbgleich) { if (!this.contains(kuerzel)) return false; } for (let i = 0; i < this.faecher.size(); i++) { let fach = this.faecher.get(i); if (!faecherAbgleich.contains(fach.kuerzel)) return false; } return true; } /** * Gibt zurück, ob die Fächergruppe leer ist oder mindestens ein Fach beinhaltet. * * @return true, falls die Fächergruppe leer ist, ansonsten false */ isEmpty() { return (this.faecher === null) || (this.faecher.isEmpty()); } /** * Prüft, ob das Fach mit dem angegebenen Fachkürzel in der Fächergruppe enthalten ist * oder nicht. * * @param kuerzel das Kürzel des Faches, welches geprüft werden soll. * * @return true, falls das Fach vorhanden ist, und ansonsten false */ contains(kuerzel) { if (kuerzel === null) return false; for (let i = 0; i < this.faecher.size(); i++) { let fach = this.faecher.get(i); if ((fach !== null) && (JavaObject_1.JavaObject.equalsTranspiler(fach.kuerzel, (kuerzel)))) return true; } return false; } /** * Entfernt alle Fächer aus der Fächergruppe, die dem übergebenen Filter entsprechen. * * @param filter die Funktion, um die zu entfernenden Fächer zu bestimmen * * @return die Liste der tatsächlich entfernten Fächer */ entferneFaecher(filter) { let selected = new Vector_1.Vector(); for (let i = 0; i < this.faecher.size(); i++) { let fach = this.faecher.get(i); if (filter.test(fach)) selected.add(fach); } this.faecher.removeAll(selected); return selected; } /** * Bestimmt das Fach, welches dem übergebenen Filter entspricht. Entsprechen * mehrere Fächer dem Filterkriterium, so wird nur das erste Fach * der internen Liste zurückgegeben. * * @param filter die Funktion, die das Kriterium für das gesuchte Fach angibt. * * @return das Fach, sofern eines gefunden wurde, ansonsten false */ getFach(filter) { for (let i = 0; i < this.faecher.size(); i++) { let fach = this.faecher.get(i); if (filter.test(fach)) return fach; } return null; } /** * Bestimmt alle Fächer, welche dem übergebenen Filterkriterium entsprechen. * * @param filter die Funktion, die das Kriterium für die gesuchten Fächer angibt. * * @return eine Liste der Fächer, die dem Filterkriterium entsprechen */ getFaecher(filter) { let result = new Vector_1.Vector(); for (let i = 0; i < this.faecher.size(); i++) { let fach = this.faecher.get(i); if (filter.test(fach)) result.add(fach); } return result; } /** * Gibt die Anzahl der Fächer zurück, welche dem übergebenen Filterkriterium entsprechen. * * @param filter die Funktion, die das Kriterium für die gesuchten Fächer angibt. * * @return die Anzahl der Fächer */ getFaecherAnzahl(filter) { let count = 0; for (let i = 0; i < this.faecher.size(); i++) { let fach = this.faecher.get(i); if (filter.test(fach)) count++; } return count; } /** * Bestimmt die Kürzel aller Fächer, welche dem übergebenen Filterkriterium entsprechen. * * @param filter die Funktion, die das Kriterium für die gesuchten Fächer angibt. * * @return eine Liste der Kürzel der Fächer, die dem Filterkriterium entsprechen */ getKuerzel(filter) { let result = new Vector_1.Vector(); for (let i = 0; i < this.faecher.size(); i++) { let fach = this.faecher.get(i); if (filter.test(fach) && (fach.kuerzel !== null)) result.add(fach.kuerzel); } return result; } /** * Erstellt eine Zeichenkette mit einer Komma-separierten Liste der Kürzel aller Fächer, * welche dem übergebenen Filterkriterium entsprechen. * * @param filter die Funktion, die das Kriterium für die gesuchten Fächer angibt. * * @return die Zeichenkette mit einer Komma-separierten Liste der Fächerkürzel */ getKuerzelListe(filter) { let sb = new StringBuilder_1.StringBuilder(); for (let i = 0; i < this.faecher.size(); i++) { let fach = this.faecher.get(i); if (filter.test(fach)) { if (sb.length() > 0) sb.append(", "); sb.append(fach.kuerzel); } } return sb.toString(); } /** * Gibt eine Komma-separierte Liste, der Abschlussfächer aus. Dabei wird * die toString Methode der Klasse AbschlussFach verwendet. */ toString() { let sb = new StringBuilder_1.StringBuilder(); for (let i = 0; i < this.faecher.size(); i++) { let fach = this.faecher.get(i); if (sb.length() > 0) sb.append(", "); let diffkursinfo = ""; if ((fach.kursart === null) || (fach.kuerzel === null)) continue; if (!GELeistungsdifferenzierteKursart_1.GELeistungsdifferenzierteKursart.Sonstige.hat(fach.kursart)) diffkursinfo += fach.kursart + ","; sb.append(fach.kuerzel + "(" + diffkursinfo.valueOf() + fach.note + ")"); } return sb.toString(); } isTranspiledInstanceOf(name) { return ['de.nrw.schule.svws.core.abschluss.ge.AbschlussFaecherGruppe'].includes(name); } } exports.AbschlussFaecherGruppe = AbschlussFaecherGruppe; function cast_de_nrw_schule_svws_core_abschluss_ge_AbschlussFaecherGruppe(obj) { return obj; } exports.cast_de_nrw_schule_svws_core_abschluss_ge_AbschlussFaecherGruppe = cast_de_nrw_schule_svws_core_abschluss_ge_AbschlussFaecherGruppe; //# sourceMappingURL=AbschlussFaecherGruppe.js.map