import { JavaObject } from '../../../java/lang/JavaObject';
import { GostBlockungsergebnisBewertung } from '../../../core/data/gost/GostBlockungsergebnisBewertung';
import { GostKursart } from '../../../core/types/gost/GostKursart';
import type { List } from '../../../java/util/List';
import { GostBlockungKurs } from '../../../core/data/gost/GostBlockungKurs';
import { GostFachwahl } from '../../../core/data/gost/GostFachwahl';
import { GostBlockungsergebnisKursSchuelerZuordnungUpdate } from '../../../core/data/gost/GostBlockungsergebnisKursSchuelerZuordnungUpdate';
import { Schueler } from '../../../asd/data/schueler/Schueler';
import { Class } from '../../../java/lang/Class';
import type { JavaMap } from '../../../java/util/JavaMap';
import { GostBlockungsergebnisSchiene } from '../../../core/data/gost/GostBlockungsergebnisSchiene';
import { GostBlockungsergebnisKursSchuelerZuordnung } from '../../../core/data/gost/GostBlockungsergebnisKursSchuelerZuordnung';
import type { JavaSet } from '../../../java/util/JavaSet';
import { GostBlockungsergebnisKurs } from '../../../core/data/gost/GostBlockungsergebnisKurs';
import { Logger } from '../../../core/logger/Logger';
import { GostBlockungsergebnisKursSchienenZuordnung } from '../../../core/data/gost/GostBlockungsergebnisKursSchienenZuordnung';
import { GostBlockungsergebnisKursSchienenZuordnungUpdate } from '../../../core/data/gost/GostBlockungsergebnisKursSchienenZuordnungUpdate';
import { GostSchriftlichkeit } from '../../../core/types/gost/GostSchriftlichkeit';
import { Geschlecht } from '../../../asd/types/Geschlecht';
import { Pair } from '../../../asd/adt/Pair';
import { GostFach } from '../../../core/data/gost/GostFach';
import { GostBlockungsdatenManager } from '../../../core/utils/gost/GostBlockungsdatenManager';
import { GostBlockungsergebnis } from '../../../core/data/gost/GostBlockungsergebnis';
import { GostBlockungRegelUpdate } from '../../../core/data/gost/GostBlockungRegelUpdate';
import { GostBlockungSchiene } from '../../../core/data/gost/GostBlockungSchiene';
export declare class GostBlockungsergebnisManager extends JavaObject {
/**
* Der Blockungsdaten-Manager ist das Elternteil dieses Objektes.
*/
private readonly _parent;
/**
* Das Blockungsergebnis ist das zugehörige Eltern-Datenobjekt.
*/
private _ergebnis;
/**
* Liste aller Fehlermeldungen.
*/
private _fehlermeldungen;
/**
* Set aller Schienen-IDs.
*/
private _schienenIDset;
/**
* Set aller Schienen-Nummern.
*/
private _schienenNRset;
/**
* Set aller Kurs-IDs.
*/
private _kursIDset;
/**
* Set aller Fach-IDs.
*/
private _fachIDset;
/**
* Set aller Schüler-IDs.
*/
private _schuelerIDset;
/**
* Map von Schienen-ID nach {@link GostBlockungsergebnisSchiene}.
*/
private _schienenID_to_schiene;
/**
* Map von Schienen-NR nach {@link GostBlockungsergebnisSchiene}.
*/
private _schienenNR_to_schiene;
/**
* Map von Kurs-ID nach {@link GostBlockungsergebnisKurs}.
*/
private _kursID_to_kurs;
/**
* Map von Schueler-ID nach {@link Schueler}.
*/
private _schuelerID_to_schueler;
/**
* Map von Schienen-ID nach Long-Set (von Kursen).
*/
private _schienenID_to_kursIDSet;
/**
* Map von Schueler-ID nach {@link GostBlockungsergebnisKurs}-Set (Kurse des Schüler, die aufgrund der aktuellen Fachwahlen ungültig sind).
*/
private _schuelerID_to_ungueltigeKurseSet;
/**
* Map von Kurs-ID nach Long-Set (von Schülern).
*/
private _kursID_to_schuelerIDSet;
/**
* Map von Fach-ID nach {@link GostBlockungsergebnisKurs}-List.
*/
private _fachID_to_kurseList;
/**
* Map von Kurs-ID nach {@link GostBlockungsergebnisSchiene}-Set.
*/
private _kursID_to_schienenSet;
/**
* Map von Kurs-ID nach Integer (Anzahl an externen SuS).
*/
private _kursID_to_dummySuS;
/**
* Map von Fachart-ID nach {@link GostBlockungsergebnisKurs}-List (Alle Kurse der selben Fachart).
*/
private _fachartID_to_kurseList;
/**
* Map von Schüler-ID nach {@link GostBlockungsergebnisKurs}-Set.
*/
private _schuelerID_to_kurseSet;
/**
* Menge aller Fachart-IDs sortiert nach der aktuellen Sortiervariante.
*/
private _fachartIDList_sortiert;
/**
* Map von Fachart-ID nach Integer (Kursdifferenz der Fachart).
*/
private _fachartID_to_kursdifferenz;
/**
* Map von Schienen-ID nach Integer (Anzahl an Kollisionen in der Schiene).
*/
private _schienenID_to_kollisionen;
/**
* Map von Schienen-ID nach Integer (Anzahl der SuS in der Schiene).
*/
private _schienenID_to_susAnzahl;
/**
* Map von Schüler-ID nach Map von Schienen-ID nach {@link GostBlockungsergebnisKurs}-Set (Alle Kurse des Schülers in der Schiene).
*/
private _schuelerID_schienenID_to_kurseSet;
/**
* Map von Schienen-ID nach Map von Fachart-ID nach {@link GostBlockungsergebnisKurs}-List (Alle Kurse pro Schiene und Fachart).
*/
private _schienenID_fachartID_to_kurseList;
/**
* Map von Kursdifferenz nach String-List (Facharten mit dieser Kursdifferenzen).
*/
private _kursdifferenz_to_fachartenList;
/**
* Map von Schüler-ID Integer (Summe aller Kollisionen des Schülers).
*/
private _schuelerID_to_kollisionen;
/**
* Map von Schüler-ID nach Map von Fach-ID nach {@link GostBlockungsergebnisKurs} (Die zugeordnete Wahl des Schülers in dem Fach, auch NULL möglich).
*/
private _schuelerID_fachID_to_kurs_or_null;
/**
* Von Regel-ID Regel-TYP nach List (alle Regelverletzungen des Typs als String-Menge).
*/
private _regelTyp_to_verletzungList;
/**
* Von Regel-ID nach String (Beschreibung der Regelverletzung).
*/
private _regelID_to_verletzungString;
/**
* Textuelle Darstellung aller Regelverletzungen der definierten Regeln.
*/
private _regelverletzungen_tooltip1_regeln;
/**
* Textuelle Darstellung aller Regelverletzungen der Wahlkonflikte.
*/
private _regelverletzungen_tooltip2_wahlkonflikte;
/**
* Textuelle Darstellung aller Regelverletzungen der Kursdifferenzen.
*/
private _regelverletzungen_tooltip3_kursdifferenzen;
/**
* Textuelle Darstellung aller Regelverletzungen der Fächerparallelität.
*/
private _regelverletzungen_tooltip4_faecherparallelitaet;
/**
* Entscheidet, welcher Comparator verwendet wird mit 1 = (KURSART, FACH) andernfalls (FACH, KURSART).
*/
private _fachartmenge_sortierung;
/**
* Comparator für die Facharten nach (KURSART, FACH).
*/
private readonly _fachartComparator_kursart_fach;
/**
* Comparator für die Facharten nach (FACH, KURSART).
*/
private readonly _fachartComparator_fach_kursart;
/**
* Ein Comparator für Kurse der Blockung (KURSART, FACH, KURSNUMMER)
*/
private readonly _kursComparator_kursart_fach_kursnummer;
/**
* Ein Comparator für Kurse der Blockung (FACH, KURSART, KURSNUMMER).
*/
private readonly _kursComparator_fach_kursart_kursnummer;
private _bewertung3_KD_nur_LK;
private _bewertung3_KD_nur_GK;
private _bewertung3_KD_nur_REST;
/**
* Erstellt einen leeren GostBlockungsergebnisManager in Bezug auf GostBlockungsdatenManager. Die ID des leeren
* Ergebnisses ist -1 und muss noch gesetzt werden.
*
* @param pParent Das Eltern-Objekt. (Daten-Manager für die grundlegenden Definitionen der
* Blockung)
* @param pGostBlockungsergebnisID Die ID des Blockungsergebnisses.
*/
constructor(pParent: GostBlockungsdatenManager, pGostBlockungsergebnisID: number);
/**
* Erstellt einen neuen Manager mit den Daten aus dem übergebenen Ergebnis.
*
* @param pParent Das Eltern-Objekt. (Daten-Manager für die grundlegenden Definitionen der Blockung)
* @param pErgebnis Das Ergebnis, welches kopiert wird.
*/
constructor(pParent: GostBlockungsdatenManager, pErgebnis: GostBlockungsergebnis);
/**
* Baut alle Datenstrukturen neu auf.
*/
stateRevalidateEverything(): void;
private stateClear;
private stateClearErgebnisBewertung1;
private stateClearErgebnisTooltip1;
private stateClearErgebnisBewertung2;
private stateClearErgebnisTooltip2;
private stateClearErgebnisBewertung3;
private stateClearErgebnisTooltip3;
private stateClearErgebnisBewertung4;
private stateClearErgebnisTooltip4;
private stateClearErgebnisTooltip4proSchiene;
private stateClearErgebnisTooltip4proSchieneUndFachart;
private update_0_schienenIDset_schienenNRset;
private update_0_kursIDset;
private update_0_fachIDset;
private update_0_schuelerIDset;
/**
* Wichtig: Die Methode muss auf gelöschte und hinzugefügt Schienen reagieren
* und die eigene Datenstruktur anpassen.
*/
private update_0_schienenID_to_schiene_schienenNR_to_schiene;
/**
* Um Bugs zu verhindern, muss die DTO-Datenstruktor hier korrigiert werden,
* denn Multi-Schienen-Kurse existieren in der jeweiligen Schiene als Kopie.
* Alle Kopien müssen durch das selbe Kurs-Objekt ersetzt werden.
*/
private update_0_kursID_to_kurs;
private update_0_schuelerID_to_schueler;
private update_0_schienenID_to_kursIDSet;
private update_1_kursID_to_schuelerIDSet_schuelerID_to_ungueltigeKurseSet;
private update_1_kursID_to_dummySuS;
private update_1_fachID_to_kurseList;
private update_1_kursID_to_schienenSet;
private update_1_fachartID_to_kurseList;
private update_2_schuelerID_to_kurseSet;
private update_2_fachartIDList_sortiert;
private update_2_fachartID_to_kursdifferenz;
private update_2_schienenID_to_kollisionen;
private update_2_schienenID_to_susAnzahl;
private update_2_schuelerID_schienenID_to_kurseSet;
private update_2_schienenID_fachartID_to_kurseList;
private update_3_kursdifferenz_to_fachartenList;
private update_3_schuelerID_to_kollisionen;
private update_3_schuelerID_fachID_to_kurs_or_null;
private stateRegelvalidierung1_kursart_sperren_in_schiene_von_bis;
private stateRegelvalidierung2_kurs_fixieren_in_schiene;
private stateRegelvalidierung3_kurs_sperren_in_schiene;
private stateRegelvalidierung4_schueler_fixieren_in_kurs;
private stateRegelvalidierung5_schueler_verbieten_in_kurs;
private stateRegelvalidierung6_kursart_allein_in_schiene_von_bis;
private stateRegelvalidierung7_kurs_verbieten_mit_kurs;
private stateRegelvalidierung8_kurs_zusammen_mit_kurs;
private stateRegelvalidierung10_lehrkraefte_beachten;
private stateRegelvalidierung11_schueler_zusammen_mit_schueler_in_fach;
private stateRegelvalidierung12_schueler_verbieten_mit_schueler_in_fach;
private stateRegelvalidierung13_schueler_zusammen_mit_schueler;
private stateRegelvalidierung14_schueler_verbieten_mit_schueler;
private stateRegelvalidierung15_kurs_maximale_schueleranzahl;
private stateRegelvalidierung18_fach_kursart_maxProSchiene;
/**
* Fügt den Schüler dem Kurs hinzu und revalidiert nicht den Zustand.
* Hinweis: Ist die Wahl des Kurses für diesen Schüler ungültig, wird der Schüler nicht hinzugefügt.
* Stattdessen wird die ungültige Wahl in einer Map gespeichert.
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param idKurs Die Datenbank-ID des Kurses.
*/
private stateSchuelerKursHinzufuegenOhneRevalidierung;
/**
* Entfernt den Schüler aus dem Kurs und revalidiert nicht den Zustand.
* Hinweis: Ist die Wahl des Kurses für diesen Schüler ungültig, so wird der Schüler aus der zuvor gespeichert
* Zuordnung aller ungültigen Wahlen gelöscht.
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param idKurs Die Datenbank-ID des Kurses.
*/
private stateSchuelerKursEntfernenOhneRevalidierung;
/**
* Fügt den Kurs der Schiene hinzu und revalidiert nicht den Zustand.
*
* @param idKurs Die Datenbank-ID des Kurses.
* @param idSchiene Die Datenbank-ID der Schiene.
*/
private stateKursSchieneHinzufuegenOhneRegelvalidierung;
/**
* Entfernt den Kurs aus der Schiene.
*
* @param idKurs Die Datenbank-ID des Kurses.
* @param idSchiene Die Datenbank-ID der Schiene.
*/
private stateKursSchieneEntfernenOhneRegelvalidierung;
/**
* Liefert die Anzahl an externen SuS.
*
* @return die Anzahl an externen SuS.
*/
getAnzahlSchuelerExterne(): number;
/**
* Liefert die Anzahl an E-Schienen.
*
* @return die Anzahl an E-Schienen.
*/
getAnzahlSchienen(): number;
/**
* Liefert die Anzahl an Dummy-SuS.
*
* @return die Anzahl an Dummy-SuS.
*/
getAnzahlSchuelerDummy(): number;
/**
* Liefert die Datenbank-ID der Blockungs. Das ist die ID des Elternteils.
*
* @return die Datenbank-ID der Blockungs. Das ist die ID des Elternteils.
*/
getBlockungsdatenID(): number;
/**
* Liefert das Blockungsergebnis, potentiell auch mit Schüler-Kurs-Zuordnungen, die nicht zu den Fachwahlen passen.
*
* @return das Blockungsergebnis, potentiell auch mit Schüler-Kurs-Zuordnungen, die nicht zu den Fachwahlen passen.
*/
getErgebnis(): GostBlockungsergebnis;
/**
* Liefert die Menge (meistens eine) aller Fehlermeldungen.
*
Falls die Liste nicht leer ist, sollte die GUI den Benutzer warnen, dass die Blockung nicht vollständig geladen wurde!
*
* @return die Menge (meistens eine) aller Fehlermeldungen.
*/
getFehlermeldungen(): List;
/**
* Liefert den zugehörigen Daten-Manager für diesen Ergebnis-Manager.
*
* @return den zugehörigen Daten-Manager für diesen Ergebnis-Manager.
*/
getParent(): GostBlockungsdatenManager;
/**
* Liefert eine Güte eines Bewertungskriteriums im Bereich [0;1], mit 0=optimal.
*
* @param value der Wert des Bewertungskriteriums
*
* @return die Güte des Bewertungskriteriums im Bereich [0;1], mit 0=optimal.
*/
private static getOfBewertungFarbcodeStatic;
/**
* Liefert den Wert des 1. Bewertungskriteriums. Darin enthalten sind:
* - Die Anzahl der Regelverletzungen.
* - Die Anzahl der nicht genügend gesetzten Kurse.
*
* @param bewertung die Bewertung vom Ergebnis
*
* @return Den Wert des 1. Bewertungskriteriums.
*/
static getOfBewertung1WertStatic(bewertung: GostBlockungsergebnisBewertung): number;
/**
* Liefert den Wert des 1. Bewertungskriteriums. Darin enthalten sind:
* - Die Anzahl der Regelverletzungen.
* - Die Anzahl der nicht genügend gesetzten Kurse.
*
* @return Den Wert des 1. Bewertungskriteriums.
*/
getOfBewertung1Wert(): number;
/**
* Liefert eine Güte des 1. Bewertungskriteriums im Bereich [0;1], mit 0=optimal. Darin enthalten sind:
* - Die Anzahl der Regelverletzungen.
* - Die Anzahl der nicht genügend gesetzten Kurse.
*
* @param bewertung die Bewertung vom Ergebnis
*
* @return Eine Güte des 1. Bewertungskriteriums im Bereich [0;1], mit 0=optimal.
*/
private static getOfBewertung1FarbcodeStatic;
/**
* Liefert eine Güte des 1. Bewertungskriteriums im Bereich [0;1], mit 0=optimal. Darin enthalten sind:
* - Die Anzahl der Regelverletzungen.
* - Die Anzahl der nicht genügend gesetzten Kurse.
*
* @return Eine Güte des 1. Bewertungskriteriums im Bereich [0;1], mit 0=optimal.
*/
getOfBewertung1Farbcode(): number;
/**
* Liefert den Wert des 2. Bewertungskriteriums. Darin enthalten sind:
* - Die Anzahl der nicht zugeordneten Schülerfachwahlen.
* - Die Anzahl der Schülerkollisionen.
*
* @param bewertung die Bewertung vom Ergebnis
*
* @return Den Wert des 2. Bewertungskriteriums.
*/
private static getOfBewertung2WertStatic;
/**
* Liefert den Wert des 2. Bewertungskriteriums. Darin enthalten sind:
* - Die Anzahl der nicht zugeordneten Schülerfachwahlen.
* - Die Anzahl der Schülerkollisionen.
*
* @return Den Wert des 2. Bewertungskriteriums.
*/
getOfBewertung2Wert(): number;
/**
* Liefert eine Güte des 2. Bewertungskriteriums im Bereich [0;1], mit 0=optimal. Darin enthalten sind:
* - Die Anzahl der nicht zugeordneten Schülerfachwahlen.
* - Die Anzahl der Schülerkollisionen.
*
* @param bewertung die Bewertung vom Ergebnis
*
* @return Eine Güte des 2. Bewertungskriteriums im Bereich [0;1], mit 0=optimal.
*/
private static getOfBewertung2FarbcodeStatic;
/**
* Liefert eine Güte des 2. Bewertungskriteriums im Bereich [0;1], mit 0=optimal. Darin enthalten sind:
* - Die Anzahl der nicht zugeordneten Schülerfachwahlen.
* - Die Anzahl der Schülerkollisionen.
*
* @return Eine Güte des 2. Bewertungskriteriums im Bereich [0;1], mit 0=optimal.
*/
getOfBewertung2Farbcode(): number;
/**
* Liefert den Wert des 3. Bewertungskriteriums (Kursdifferenz).
*
* @return den Wert des 3. Bewertungskriteriums (Kursdifferenz).
*/
getOfBewertung3Wert(): number;
/**
* Liefert eine Güte des 3. Bewertungskriteriums (Kursdifferenz) im Bereich [0;1], mit 0=optimal.
*
* @return eine Güte des 3. Bewertungskriteriums (Kursdifferenz) im Bereich [0;1], mit 0=optimal.
*/
getOfBewertung3Farbcode(): number;
/**
* Liefert den Wert des 3. Bewertungskriteriums (Kursdifferenz) nur bezogen auf die Kursart LK.
*
* @return den Wert des 3. Bewertungskriteriums (Kursdifferenz) nur bezogen auf die Kursart LK.
*/
getOfBewertung3Wert_nur_LK(): number;
/**
* Liefert eine Güte des 3. Bewertungskriteriums (Kursdifferenz, nur LK) im Bereich [0;1], mit 0=optimal.
*
* @return eine Güte des 3. Bewertungskriteriums (Kursdifferenz, nur LK) im Bereich [0;1], mit 0=optimal.
*/
getOfBewertung3Farbcode_nur_LK(): number;
/**
* Liefert den Wert des 3. Bewertungskriteriums (Kursdifferenz) nur bezogen auf die Kursart GK.
*
* @return den Wert des 3. Bewertungskriteriums (Kursdifferenz) nur bezogen auf die Kursart GK.
*/
getOfBewertung3Wert_nur_GK(): number;
/**
* Liefert eine Güte des 3. Bewertungskriteriums (Kursdifferenz, nur GK) im Bereich [0;1], mit 0=optimal.
*
* @return eine Güte des 3. Bewertungskriteriums (Kursdifferenz, nur GK) im Bereich [0;1], mit 0=optimal.
*/
getOfBewertung3Farbcode_nur_GK(): number;
/**
* Liefert den Wert des 3. Bewertungskriteriums (Kursdifferenz) nur bezogen auf Kursarten die nicht LK oder GK sind.
*
* @return den Wert des 3. Bewertungskriteriums (Kursdifferenz) nur bezogen auf Kursarten die nicht LK oder GK sind.
*/
getOfBewertung3Wert_nur_REST(): number;
/**
* Liefert eine Güte des 3. Bewertungskriteriums (Kursdifferenz, alles außer LK und GK) im Bereich [0;1], mit 0=optimal.
*
* @return eine Güte des 3. Bewertungskriteriums (Kursdifferenz, alles außer LK und GK) im Bereich [0;1], mit 0=optimal.
*/
getOfBewertung3Farbcode_nur_REST(): number;
/**
* Liefert den Wert des 3. Bewertungskriteriums als Histogramm (Array der Länge 10).
*
Darin enthalten sind:
*
- Das Histogramm der ersten 10 Kursdifferenzen (Kursdifferenz 0 bis Kursdifferenz 9).
*
- Das Histogramm hat eine garantierte Länge von 10.
*
* @param bewertung Die Bewertung vom Ergebnis.
*
* @return den Wert des 3. Bewertungskriteriums als Histogramm (Array der Länge 10).
*/
private static getOfBewertung3HistogrammStatic;
/**
* Liefert den Wert des 3. Bewertungskriteriums als Histogramm (Array der Länge 10).
*
- Das Histogramm der ersten 10 Kursdifferenzen (Kursdifferenz 0 bis Kursdifferenz 9).
*
- Das Histogramm hat eine garantierte Länge von 10.
*
* @return den Wert des 3. Bewertungskriteriums als Histogramm (Array der Länge 10).
*/
private getOfBewertung3Histogramm;
/**
* Liefert den Wert des 4. Bewertungskriteriums. Darin enthalten sind:
* - Die Anzahl an Kursen mit gleicher Fachart (Fach, Kursart) in einer Schiene.
* Dieses Bewertungskriterium wird teilweise absichtlich verletzt, wenn z. B. Schienen erzeugt werden mit dem selben
* Fach (Sport-Schiene). Nichtsdestotrotz möchte man häufig nicht die selben Fächer in einer Schiene, aufgrund von
* Raumkapazitäten (Fachräume).
*
* @param bewertung die Bewertung vom Ergebnis
*
* @return Den Wert des 4. Bewertungskriteriums.
*/
private static getOfBewertung4WertStatic;
/**
* Liefert den Wert des 4. Bewertungskriteriums. Darin enthalten sind:
* - Die Anzahl an Kursen mit gleicher Fachart (Fach, Kursart) in einer Schiene.
* Dieses Bewertungskriterium wird teilweise absichtlich verletzt, wenn z. B. Schienen erzeugt werden mit dem selben
* Fach (Sport-Schiene). Nichtsdestotrotz möchte man häufig nicht die selben Fächer in einer Schiene, aufgrund von
* Raumkapazitäten (Fachräume).
*
* @return Den Wert des 4. Bewertungskriteriums.
*/
getOfBewertung4Wert(): number;
/**
* Liefert eine Güte des 4. Bewertungskriteriums im Bereich [0;1], mit 0=optimal. Darin enthalten sind:
* - Die Anzahl an Kursen mit gleicher Fachart (Fach, Kursart) in einer Schiene.
* Dieses Bewertungskriterium wird teilweise absichtlich verletzt, wenn z. B. Schienen erzeugt werden mit dem selben
* Fach (Sport-Schiene). Nichtsdestotrotz möchte man häufig nicht die selben Fächer in einer Schiene, aufgrund von
* Raumkapazitäten (Fachräume).
*
* @param bewertung die Bewertung vom Ergebnis
*
* @return Eine Güte des 4. Bewertungskriteriums im Bereich [0;1], mit 0=optimal.
*/
private static getOfBewertung4FarbcodeStatic;
/**
* Liefert eine Güte des 4. Bewertungskriteriums im Bereich [0;1], mit 0=optimal. Darin enthalten sind:
* - Die Anzahl an Kursen mit gleicher Fachart (Fach, Kursart) in einer Schiene.
* Dieses Bewertungskriterium wird teilweise absichtlich verletzt, wenn z. B. Schienen erzeugt werden mit dem selben
* Fach (Sport-Schiene). Nichtsdestotrotz möchte man häufig nicht die selben Fächer in einer Schiene, aufgrund von
* Raumkapazitäten (Fachräume).
*
* @return Eine Güte des 4. Bewertungskriteriums im Bereich [0;1], mit 0=optimal.
*/
getOfBewertung4Farbcode(): number;
/**
* Liefert die Anzahl nicht vollständig verteilter Kurse.
* Ein Multikurse der über mehrere Schienen geht und gar nicht zugeteilt wurde, wird mehrfach gezählt.
*
* @return die Anzahl nicht vollständig verteilter Kurse.
*/
getOfBewertungAnzahlNichtZugeordneterKurse(): number;
/**
* Liefert die Anzahl an Fachwahlen, die nicht zugeordnet wurden.
*
* @return die Anzahl an Fachwahlen, die nicht zugeordnet wurden.
*/
getOfBewertungAnzahlNichtzugeordneterFachwahlen(): number;
/**
* Ermittelt das {@link GostFach} für die angegebene ID. Delegiert den Aufruf an den Fächer-Manager des Eltern-Objektes {@link GostBlockungsdatenManager}.
* Wirft eine {@link DeveloperNotificationException} falls die ID unbekannt ist.
*
* @param idFach Die Datenbank-ID des Faches.
*
* @return Das {@link GostFach}-Objekt.
* @throws DeveloperNotificationException falls die ID unbekannt ist.
*/
getFach(idFach: number): GostFach;
/**
* Liefert die Menge aller Kurse mit dem angegebenen Fach-ID.
*
* @param idFach Die Datenbank-ID des Faches.
*
* @return die Menge aller Kurse mit dem angegebenen Fach-ID.
* @throws DeveloperNotificationException falls die Fach-ID unbekannt ist.
*/
getOfFachKursmenge(idFach: number): List;
/**
* Liefert die Kursmenge, die zur Fachart gehört. Die Fachart-ID wird berechnet über: {@link GostKursart#getFachartID(long, int)}.
*
Hinweis: Die Kursmenge pro Fachart ist sortiert nach {@link #kursSetSortierungFachKursartNummer()} oder {@link #kursSetSortierungKursartFachNummer()}.
*
Hinweis: Wirft eine {@link DeveloperNotificationException} falls die Fachart-ID unbekannt ist.
*
* @param idFachart Die Fachart-ID wird berechnet über: {@link GostKursart#getFachartID(long, int)}.
*
* @return die Kursmenge, die zur Fachart gehört.
* @throws DeveloperNotificationException falls die Fachart-ID unbekannt ist.
*/
getOfFachartKursmenge(idFachart: number): List;
/**
* Liefert die Kursdifferenz der Fachart und beachtet dabei Dummy-SuS von Kursen.
* Die Fachart-ID wird berechnet über: {@link GostKursart#getFachartID(long, int)}.
* Die Methode beachtet auch Kurse mit Dummy-SuS.
* Wirft eine {@link DeveloperNotificationException} falls die Fachart-ID unbekannt ist.
*
* @param idFachart Die Fachart-ID wird berechnet über: {@link GostKursart#getFachartID(long, int)}.
*
* @return die Kursdifferenz der Fachart und beachtet dabei Dummy-SuS von Kursen.
* @throws DeveloperNotificationException falls die Fachart-ID unbekannt ist.
*/
getOfFachartKursdifferenz(idFachart: number): number;
/**
* Liefert die Kursdifferenz der Fachart, übergeben als (Fach, Kursart).
* Die Methode beachtet auch Kurse mit Dummy-SuS.
* Wirft eine {@link DeveloperNotificationException} falls die Fachart-ID unbekannt ist.
*
* @param idFach Die Datenbank-ID des Faches.
* @param idKursart Die ID der Kursart.
*
* @return die Kursdifferenz der Fachart, übergeben als (Fach, Kursart).
* @throws DeveloperNotificationException falls die Fachart-ID unbekannt ist.
*/
getOfFachOfKursartKursdifferenz(idFach: number, idKursart: number): number;
/**
* Liefert den Namen der Fachart, z. B. D-LK.
*
* @param idFachart Die ID der Fachart.
*
* @return den Namen der Fachart, z. B. D-LK.
*/
private getOfFachartName;
/**
* Liefert die Menge aller Facharten (Fach + Kursart) sortiert nach der aktuellen Sortiervariante.
*
Hinweis: Die Sortierung lässt sich mit {@link #kursSetSortierungFachKursartNummer()} und {@link #kursSetSortierungKursartFachNummer()} ändern.
*
* @return die Menge aller Facharten (Fach + Kursart) sortiert nach der aktuellen Sortiervariante.
*/
private getOfFachartMengeSortiert;
/**
* Ändert die aktuelle Sortierung von Facharten und Kursen.
*
Hinweis: Sortiert zuerst nach LK/GK, dann nach der Fachsortierung, zuletzt nach der Kursnummer.
*/
kursSetSortierungKursartFachNummer(): void;
/**
* Ändert die aktuelle Sortierung von Facharten und Kursen.
*
Hinweis: Sortiert zuerst nach der Fachsortierung, dann nach LK/GK, zuletzt nach der Kursnummer.
*/
kursSetSortierungFachKursartNummer(): void;
/**
* Liefert das {@link Schueler}-Objekt zur übergebenen ID.
* Delegiert den Aufruf an das Eltern-Objekt {@link GostBlockungsdatenManager}.
*
* @param idSchueler Die Datenbank-ID des Schülers.
*
* @return das {@link Schueler}-Objekt zur übergebenen ID.
* @throws DeveloperNotificationException falls die Schüler-ID unbekannt ist.
*/
private getSchuelerG;
/**
* Liefert einen Schüler-String im Format: 'Nachname, Vorname'.
*
* @param idSchueler Die Datenbank-ID des Schülers.
*
* @return einen Schüler-String im Format: 'Nachname, Vorname'.
*/
getOfSchuelerNameVorname(idSchueler: number): string;
/**
* Liefert die Menge aller Kurse, die dem Schüler zugeordnet sind.
* Wirft eine Exception, wenn der ID kein Schüler zugeordnet ist.
*
* @param idSchueler Die Datenbank-ID des Schülers.
*
* @return Die Menge aller Kurse, die dem Schüler zugeordnet sind.
*/
getOfSchuelerKursmenge(idSchueler: number): JavaSet;
/**
* Liefert die sortierte Menge aller Kurse, die dem Schüler zugeordnet sind.
*
Hinweis: Die Sortierung wird mit {@link #kursSetSortierungFachKursartNummer()} und {@link #kursSetSortierungKursartFachNummer()} definiert.
*
Wirft eine Exception, wenn der ID kein Schüler zugeordnet ist.
*
* @param idSchueler Die Datenbank-ID des Schülers.
*
* @return die sortierte Menge aller Kurse, die dem Schüler zugeordnet sind.
*/
private getOfSchuelerKursmengeSortiert;
/**
* Liefert die Menge aller Kurse des Schülers mit Kollisionen.
*
* @param idSchueler Die Datenbank-ID des Schülers.
*
* @return Die Menge aller Kurse des Schülers mit Kollisionen.
*/
getOfSchuelerKursmengeMitKollisionen(idSchueler: number): JavaSet;
/**
* Liefert die Menge aller Fachwahlen eines Schülers, die keinem Kurs zugeordnet sind.
*
* @param idSchueler Die Datenbank-ID des Schülers.
*
* @return die Menge aller Fachwahlen eines Schülers, die keinem Kurs zugeordnet sind.
*/
getOfSchuelerFachwahlmengeOhneKurszuordnung(idSchueler: number): List;
/**
* Liefert TRUE, falls der Schüler mindestens eine Nichtwahl hat.
*
* @param idSchueler Die Datenbank-ID des Schülers.
*
* @return TRUE, falls der Schüler mindestens eine Nichtwahl hat.
*/
getOfSchuelerHatNichtwahl(idSchueler: number): boolean;
/**
* Liefert TRUE, falls der übergebene Schüler die entsprechende Fachwahl (Fach + Kursart) hat.
*
* @param idSchueler Die Datenbank.ID des Schülers.
* @param idFach Die Datenbank-ID des Faches der Fachwahl des Schülers.
* @param idKursart Die ID der Kursart der Fachwahl des Schülers.
*
* @return TRUE, falls der übergebene Schüler die entsprechende Fachwahl (Fach + Kursart) hat.
*/
getOfSchuelerHatFachwahl(idSchueler: number, idFach: number, idKursart: number): boolean;
/**
* Liefert TRUE, falls der übergebene Schüler das entsprechende Fach (unabhängig von der Kursart) gewählt hat.
*
* @param idSchueler Die Datenbank.ID des Schülers.
* @param idFach Die Datenbank-ID des Faches der Fachwahl des Schülers.
*
* @return TRUE, falls der übergebene Schüler das entsprechende Fach (unabhängig von der Kursart) gewählt hat.
*/
private getOfSchuelerHatFach;
/**
* Liefert TRUE, falls der Schüler mindestens eine Kollision hat.
* Ein Schüler, der N>1 Mal in einer Schiene ist, erzeugt N-1 Kollisionen.
*
* @param idSchueler Die Datenbank-ID des Schülers.
*
* @return TRUE, falls der Schüler mindestens eine Kollision hat.
*/
getOfSchuelerHatKollision(idSchueler: number): boolean;
/**
* Liefert die Anzahl der Schüler, die den Filterkriterien entsprechen.
*
* @param idKurs falls >= 0, werden Schüler des Kurses herausgefiltert.
* @param idFach falls >= 0, werden Schüler mit diesem Fach herausgefiltert.
* @param idKursart falls >= 0 und idFach >= 0, werden Schüler mit dieser Fach/Kursart Kombination herausgefiltert.
* @param konfliktTyp falls 1 = mit Kollisionen, 2 = mit Nichtwahlen, 3 = mit Kollisionen und Nichtwahlen, sonst alle Schüler.
* @param subString falls |pSubString| > 0 werden Schüler deren Vor- oder Nachname diesen String enthält herausgefiltert.
* @param geschlecht falls != null, werden die Schüler mit diesem {@link Geschlecht} herausgefiltert.
* @param schriftlichkeit falls != null, werden die Schüler mit dieser {@link GostSchriftlichkeit} herausgefiltert (isKurs oder idFach/idKursart müssen definiert sein).
*
* @return die Anzahl der Schüler, die den Filterkriterien entsprechen.
*/
getOfSchuelerAnzahlGefiltert(idKurs: number, idFach: number, idKursart: number, konfliktTyp: number, subString: string, geschlecht: Geschlecht | null, schriftlichkeit: GostSchriftlichkeit | null): number;
/**
* Liefert die Menge der zugeordneten Kurse des Schülers in der Schiene.
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param idSchiene Die Datenbank-ID der Schiene.
*
* @return die Menge der zugeordneten Kurse des Schülers in der Schiene.
*/
private getOfSchuelerOfSchieneKursmenge;
/**
* Liefert TRUE, falls der Schüler in der Schiene mehr als einen Kurs belegt hat.
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param idSchiene Die Datenbank-ID der Schiene.
*
* @return TRUE, falls der Schüler in der Schiene mehr als einen Kurs belegt hat.
*/
getOfSchuelerOfSchieneHatKollision(idSchueler: number, idSchiene: number): boolean;
/**
* Liefert die zu (idSchueler, idFach) die jeweilige Kursart.
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param idFach Die Datenbank-ID des Faches.
*
* @return Die zu (idSchueler, idFach) die jeweilige Kursart.
*/
getOfSchuelerOfFachKursart(idSchueler: number, idFach: number): GostKursart;
/**
* Liefert den zu (idSchueler, idFach) passenden Kurs oder NULL.
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param idFach Die Datenbank-ID des Faches.
*
* @return den zu (idSchueler, idFach) passenden Kurs oder NULL.
*/
getOfSchuelerOfFachZugeordneterKurs(idSchueler: number, idFach: number): GostBlockungsergebnisKurs | null;
/**
* Liefert ein {@link SchuelerblockungOutput}-Objekt, welches für den Schüler eine Neuzuordnung der Kurse vorschlägt.
*
* @param idSchueler Die ID des {@link Schueler}-Objekts.
* @param fixiereBelegteKurse falls TRUE, werden alle Kurse fixiert, in denen der Schüler momentan ist.
*
* @return ein {@link SchuelerblockungOutput}-Objekt, welches für den Schüler eine Neuzuordnung der Kurse vorschlägt.
*/
private getOfSchuelerNeuzuordnungMitFixierung;
private getOfSchuelerNeuzuordnungErzeugeKurs;
/**
* Liefert ein {@link GostBlockungsergebnisKursSchuelerZuordnungUpdate}-Objekt, welches für den Schüler eine berechnete Neuzuordnung der Kurse beinhaltet.
*
* @param idSchueler Die ID des {@link Schueler}-Objekts.
* @param fixiereBelegteKurse falls TRUE, werden alle Kurse fixiert, in denen der Schüler momentan ist.
*
* @return ein {@link SchuelerblockungOutput}-Objekt, welches für den Schüler eine Neuzuordnung der Kurse beinhaltet.
*/
getOfSchuelerNeuzuordnung(idSchueler: number, fixiereBelegteKurse: boolean): GostBlockungsergebnisKursSchuelerZuordnungUpdate;
/**
* Liefert TRUE, falls der Schüler dem Kurs zugeordnet ist.
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return TRUE, falls der Schüler dem Kurs zugeordnet ist.
*/
getOfSchuelerOfKursIstZugeordnet(idSchueler: number, idKurs: number): boolean;
/**
* Liefert TRUE, falls der Schüler dem Kurs zugeordnet ist, aber keine entsprechende Fachwahl hat.
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return TRUE, falls der Schüler dem Kurs zugeordnet ist, aber keine entsprechende Fachwahl hat.
*/
getOfSchuelerOfKursIstUngueltig(idSchueler: number, idKurs: number): boolean;
/**
* Liefert TRUE, falls der Schüler im Kurs via Regel fixiert sein soll.
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return TRUE, falls der Schüler im Kurs via Regel fixiert sein soll.
*/
private getOfSchuelerOfKursIstFixiert;
/**
* Liefert TRUE, falls der Schüler den Kurs als LK gewählt hat.
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return TRUE, falls der Schüler den Kurs als LK gewählt hat.
*/
private getOfSchuelerOfKursIstLK;
/**
* Liefert TRUE, falls der Schüler den Kurs als AB3 gewählt hat.
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return TRUE, falls der Schüler den Kurs als AB3 gewählt hat.
*/
private getOfSchuelerOfKursIstAB3;
/**
* Liefert TRUE, falls der Schüler den Kurs als LK oder AB3 gewählt hat.
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return TRUE, falls der Schüler den Kurs als LK oder AB3 gewählt hat.
*/
private getOfSchuelerOfKursIstLKoderAB3;
/**
* Liefert TRUE, falls der Schüler den Kurs als AB4 gewählt hat.
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return TRUE, falls der Schüler den Kurs als AB4 gewählt hat.
*/
private getOfSchuelerOfKursIstAB4;
/**
* Liefert TRUE, falls der Schüler den Kurs als Abiturfach gewählt hat.
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return TRUE, falls der Schüler den Kurs als Abiturfach gewählt hat.
*/
private getOfSchuelerOfKursIstAbiturfach;
/**
* Liefert den Wert (1-4) des Abiturfaches oder 0, falls es kein Abiturfach ist.
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return den Wert (1-4) des Abiturfaches oder 0, falls es kein Abiturfach ist.
*/
private getOfSchuelerOfKursAbiturfach;
/**
* Liefert TRUE, falls der Schüler den Kurs als Abiturfach gewählt hat.
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return TRUE, falls der Schüler den Kurs als Abiturfach gewählt hat.
*/
private getOfSchuelerOfKursIstSchriftlich;
/**
* Liefert TRUE, falls der Schüler im Kurs via Regel gesperrt sein soll.
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return TRUE, falls der Schüler im Kurs via Regel gesperrt sein soll.
*/
getOfSchuelerOfKursIstGesperrt(idSchueler: number, idKurs: number): boolean;
/**
* Liefert TRUE, falls der Sub-String im Nachnamen oder im Vornamen des Schülers vorkommt (Groß- und Kleinschreibung wird dabei ignoriert).
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param subString Der zu suchende Sub-String.
*
* @return TRUE, falls der Sub-String im Nachnamen oder im Vornamen des Schülers vorkommt (Groß- und Kleinschreibung wird dabei ignoriert).
*/
private getOfSchuelerHatImNamenSubstring;
/**
* Liefert das {@link Geschlecht} des Schülers.
* Wirft eine Exception, falls das Enum {@link Geschlecht} nicht definiert ist.
*
* @param idSchueler Die Datenbank-ID des Schülers.
*
* @return das {@link Geschlecht} des Schülers.
* @throws DeveloperNotificationException falls das Enum {@link Geschlecht} nicht definiert ist.
*/
private getOfSchuelerGeschlechtOrException;
/**
* Liefert TRUE, falls der Schüler den Status {@link SchuelerStatus#EXTERN} hat.
*
* @param idSchueler Die Datenbank-ID des Schülers.
*
* @return TRUE, falls der Schüler den Status {@link SchuelerStatus#EXTERN} hat.
*/
private getOfSchuelerHatStatusExtern;
/**
* Liefert die Fachwahl des Schüler passend zu den Kurs.
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return die Fachwahl des Schüler passend zu den Kurs.
*/
getOfSchuelerOfKursFachwahl(idSchueler: number, idKurs: number): GostFachwahl;
/**
* Liefert die Fachwahl des Schüler passend zum Fach.
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param idFach Die Datenbank-ID des Faches.
*
* @return die Fachwahl des Schüler passend zum Fach.
*/
private getOfSchuelerOfFachFachwahl;
/**
* Liefert eine nach Kriterien gefilterte Menge aller Schüler.
*
* @param idKurs falls >= 0, werden Schüler des Kurses herausgefiltert.
* @param idFach falls >= 0, werden Schüler mit diesem Fach herausgefiltert.
* @param idKursart falls >= 0 und idFach >= 0, werden Schüler mit dieser Fach/Kursart Kombination herausgefiltert.
* @param konfliktTyp falls 1 = mit Kollisionen, 2 = mit Nichtwahlen, 3 = mit Kollisionen und Nichtwahlen, sonst alle Schüler.
* @param subString falls |pSubString| > 0 werden Schüler deren Vor- oder Nachname diesen String enthält herausgefiltert.
*
* @return eine nach Kriterien gefilterte Menge aller Schüler.
*/
getOfSchuelerMengeGefiltert(idKurs: number, idFach: number, idKursart: number, konfliktTyp: number, subString: string): List;
/**
* Liefert eine Liste aller Schüler, deren Abiturjahrgang nicht dem der Blockung entspricht.
*
Hinweis: Das kann passieren, wenn nach der Erstellung eines Blockungsergebnisses, ein Schüler nicht versetzt wird.
*
* @return eine Liste aller Schüler, deren Abiturjahrgang nicht dem der Blockung entspricht.
*/
getOfSchuelerMengeMitAbweichendemAbijahrgang(): List;
/**
* Liefert TRUE, falls der Schüler alle definierten Kriterien erfüllt.
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param idKurs Falls >= 0, muss der Schüler in dem Kurs sein.
* @param idFach Falls >= 0, muss der Schüler das Fach haben.
* @param idKursart Falls >= 0, und idFach >= muss der Schüler auch die zugehörige Kursart haben.
* @param konfliktTyp Falls > 0 muss der Schüler "1=Kollisionen", "2=Nichtwahlen" oder "3= Kollisionen und Nichtwahlen" haben.
* @param subString Falls length() > 0 muss der Schüler den Substring im Vor- oder Nachnamen haben.
* @param geschlecht Falls != null, muss der Schüler das definierte Geschlecht haben.
* @param schriftlichkeit Falls != null, muss der Schüler das definierte {@link GostSchriftlichkeit} haben.
*
* @return TRUE, falls der Schüler alle definierten Kriterien erfüllt.
*/
private getOfSchuelerErfuelltKriterien;
/**
* Liefert die Map, welche einer Schüler-ID die Menge aller ungültigen Kurse zuordnet.
* Hinweis 1: Hat ein Schüler keine ungültige Kurse, dann gibt es die ID nicht.
* Hinweis 2: Gibt es keine ungültigen Wahlen, so ist die Map leer.
*
* @return Die Map, welche einer Schüler-ID die Menge aller ungültigen Kurse zuordnet.
*/
getOfSchuelerMapIDzuUngueltigeKurse(): JavaMap>;
/**
* Liefert TRUE, falls der Schüler in einer Schiene des Kurses eine Kollision hat.
* Die Methode geht davon aus, dass der Schüler dem Kurs zugeordnet ist.
*
* @param idSchueler Die Datenbank-ID des Schülers.
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return TRUE, falls der Schüler in einer Schiene des Kurses eine Kollision hat.
*/
getOfSchuelerOfKursHatKollision(idSchueler: number, idKurs: number): boolean;
/**
* Liefert TRUE, falls beide Schüler bezogen auf das Fach gemeinsam im selben Kurs sind.
*
* @param idSchueler1 Die Datenbank-ID des 1. Schülers.
* @param idSchueler2 Die Datenbank-ID des 2. Schülers.
* @param idFach Die Datenbank-ID des Faches
*
* @return TRUE, falls beide Schüler im bezogen auf das Fach gemeinsam im selben Kurs sind.
*/
getOfSchuelerIstZusammenMitSchuelerInFach(idSchueler1: number, idSchueler2: number, idFach: number): boolean;
/**
* Liefert die Anzahl an SuS, die mit dem Schüler im Kurs sein wollen.
*
* @param idS1 Die ID des {@link Schueler}-Objekts.
* @param idKurs Die ID des {@link StundenplanKurs}-Objekts.
*
* @return die Anzahl an SuS, die mit dem Schüler im Kurs sein wollen.
*/
getOfSchuelerOfKursAnzahlZusammenWuensche(idS1: number, idKurs: number): number;
/**
* Liefert die Anzahl an SuS, die mit dem Schüler nicht im Kurs sein sollen.
*
* @param idS1 Die ID des {@link Schueler}-Objekts.
* @param idKurs Die ID des {@link StundenplanKurs}-Objekts.
*
* @return die Anzahl an SuS, die mit dem Schüler nicht im Kurs sein sollen.
*/
getOfSchuelerOfKursAnzahlVerbotenWuensche(idS1: number, idKurs: number): number;
/**
* Liefert den {@link GostBlockungKurs} zur übergebenen ID.
* Delegiert den Aufruf an das Eltern-Objekt {@link GostBlockungsdatenManager}.
* Wirft eine DeveloperNotificationException, falls die ID unbekannt ist.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return den {@link GostBlockungKurs} zur übergebenen ID.
* @throws DeveloperNotificationException falls die ID unbekannt ist.
*/
getKursG(idKurs: number): GostBlockungKurs;
/**
* Liefert den {@link GostBlockungsergebnisKurs} zur übergebenen ID.
* Wirft eine DeveloperNotificationException, falls die ID unbekannt ist.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return den {@link GostBlockungsergebnisKurs} zur übergebenen ID.
* @throws DeveloperNotificationException falls die ID unbekannt ist.
*/
getKursE(idKurs: number): GostBlockungsergebnisKurs;
/**
* Gibt die Menge der {@link GostBlockungsergebnisKurs} zurück.
*
* @return die Menge der {@link GostBlockungsergebnisKurs}
*/
getKursmenge(): List;
/**
* Liefert den Namen des Kurses, erzeugt aus Fach, der Kursart und der Nummer, beispielsweise D-GK1.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return den Namen des Kurses, erzeugt aus Fach, der Kursart und der Nummer, beispielsweise D-GK1.
*/
getOfKursName(idKurs: number): string;
/**
* Liefert TRUE, falls der Kurs der Schiene zugeordnet ist.
*
* @param idKurs Die Datenbank-ID des Kurses.
* @param idSchiene Die Datenbank-ID der Schiene.
*
* @return TRUE, falls der Kurs der Schiene zugeordnet ist.
*/
getOfKursOfSchieneIstZugeordnet(idKurs: number, idSchiene: number): boolean;
/**
* Liefert TRUE, falls der Kurs der Schiene mit der Nummer zugeordnet ist.
*
* @param idKurs Die Datenbank-ID des Kurses.
* @param schienenNr Die Nummer der Schiene
*
* @return TRUE, falls der Kurs der Schiene mit der Nummer zugeordnet ist.
*/
private getOfKursOfSchienenNrIstZugeordnet;
/**
* Liefert TRUE, falls der Kurs in der Schiene fixiert ist.
*
* @param idKurs Die Datenbank-ID des Kurses.
* @param idSchiene Die Datenbank-ID der Schiene.
*
* @return TRUE, falls der Kurs in der Schiene fixiert ist.
*/
private getOfKursOfSchieneIstFixiert;
/**
* Liefert zur Kurs-ID die zugehörige Menge aller Schüler-IDs.
* Wirft eine Exception, falls der ID kein Kurs zugeordnet ist.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return zur Kurs-ID die zugehörige Menge aller Schüler-IDs.
* @throws DeveloperNotificationException falls der ID kein Kurs zugeordnet ist.
*/
private getOfKursSchuelerIDmenge;
/**
* Liefert die Menge aller Schüler-Objekte des Kurses.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return die Menge aller Schüler-Objekte des Kurses.
*/
getOfKursSchuelermenge(idKurs: number): List;
/**
* Liefert die Schienenmenge des Kurses.
* Wirft eine Exception, falls der ID kein Kurs zugeordnet ist.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return die Schienenmenge des Kurses.
* @throws DeveloperNotificationException falls der ID kein Kurs zugeordnet ist.
*/
getOfKursSchienenmenge(idKurs: number): JavaSet;
/**
* Liefert ein Array aller Schienen-Nummern des Kurses.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return ein Array aller Schienen-Nummern des Kurses.
*/
getOfKursSchienenNummern(idKurs: number): Array;
/**
* Liefert TRUE, falls der Kurs mindestens eine Kollision hat.
* Definition: Ein Schüler muss in einer Schiene des Kurses eine Kollision haben.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return TRUE, falls der Kurs mindestens eine Kollision hat.
*/
private getOfKursHatKollision;
/**
* Liefert die Anzahl an Schülern des Kurses mit Kollisionen.
* Kollision: Der Schüler muss in mindestens einer Schiene des Kurses eine Kollision haben.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return die Anzahl an Schülern des Kurses mit Kollisionen.
*/
private getOfKursAnzahlKollisionen;
/**
* Liefert die Menge aller Schüler-IDs des Kurses mit Kollisionen (in den Schienen des Kurses).
*
* @param idKursID Die Datenbank-ID des Kurses.
*
* @return die Menge aller Schüler-IDs des Kurses mit Kollisionen (in den Schienen des Kurses).
*/
private getOfKursSchuelermengeMitKollisionen;
/**
* Liefert die Anzahl an Schülern die dem Kurs zugeordnet sind ohne Dummy SuS.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return die Anzahl an Schülern die dem Kurs zugeordnet sind ohne Dummy SuS.
*/
getOfKursAnzahlSchueler(idKurs: number): number;
/**
* Liefert die Anzahl an Schülern die dem Kurs zugeordnet sind plus potentiell zugeordnete Dummy SuS.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return die Anzahl an Schülern die dem Kurs zugeordnet sind plus potentiell zugeordnete Dummy SuS.
*/
getOfKursAnzahlSchuelerPlusDummy(idKurs: number): number;
/**
* Liefert die Anzahl an Dummy-SuS des Kurses. Dummy-SuS werden durch die Regel mit dem
* Typ {@link GostKursblockungRegelTyp#KURS_MIT_DUMMY_SUS_AUFFUELLEN} einem Kurs zugeordnet.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return die Anzahl an Dummy-SuS des Kurses.
*/
getOfKursAnzahlSchuelerDummy(idKurs: number): number;
/**
* Liefert die Anzahl externer SuS die dem Kurs zugeordnet sind.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return die Anzahl externer SuS die dem Kurs zugeordnet sind.
*/
getOfKursAnzahlSchuelerExterne(idKurs: number): number;
/**
* Liefert die Anzahl externer SuS und der Dummy-SuS die dem Kurs zugeordnet sind.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return die Anzahl externer SuS und der Dummy-SuS die dem Kurs zugeordnet sind.
*/
getOfKursAnzahlSchuelerExternePlusDummies(idKurs: number): number;
/**
* Liefert die Anzahl internen SuS. Das sind alle SuS der Kursliste abzüglich der SuS mit Status "extern".
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return die Anzahl internen SuS. Das sind alle SuS der Kursliste abzüglich der SuS mit Status "extern".
*/
getOfKursAnzahlSchuelerInterne(idKurs: number): number;
/**
* Liefert die Anzahl aller Schüler des Kurses mit Schriftlichkeit {@link GostSchriftlichkeit#SCHRIFTLICH}.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return die Anzahl aller Schüler des Kurses mit Schriftlichkeit {@link GostSchriftlichkeit#SCHRIFTLICH}.
*/
getOfKursAnzahlSchuelerSchriftlich(idKurs: number): number;
/**
* Liefert die Anzahl an Schienen in denen der Kurs gerade ist.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return die Anzahl an Schienen in denen der Kurs gerade ist.
*/
getOfKursAnzahlSchienenIst(idKurs: number): number;
/**
* Liefert die Anzahl an Schienen, die der Kurs haben sollte.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return die Anzahl an Schienen, die der Kurs haben sollte.
*/
getOfKursAnzahlSchienenSoll(idKurs: number): number;
/**
* Liefert die Anzahl an Schülern, die den Kurs mit Abiturfach 1 oder 2 gewählt (also LK) haben.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return die Anzahl an Schülern, die den Kurs mit Abiturfach 1 oder 2 gewählt (also LK) haben.
*/
getOfKursAnzahlSchuelerAbiturLK(idKurs: number): number;
/**
* Liefert die Anzahl an Schülern, die den Kurs mit Abiturfach 3 gewählt haben.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return die Anzahl an Schülern, die den Kurs mit Abiturfach 3 gewählt haben.
*/
getOfKursAnzahlSchuelerAbitur3(idKurs: number): number;
/**
* Liefert die Anzahl an Schülern, die den Kurs mit Abiturfach 4 gewählt haben.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return die Anzahl an Schülern, die den Kurs mit Abiturfach 4 gewählt haben.
*/
getOfKursAnzahlSchuelerAbitur4(idKurs: number): number;
/**
* Liefert die maximale Anzahl an SuS, die in dem Kurs sein dürfen, oder 999 falls es keine Begrenzung gibt.
*
* @param idKurs Die ID des {@link StundenplanKurs}-Objekts.
*
* @return die maximale Anzahl an SuS, die in dem Kurs sein dürfen, oder 999 falls es keine Begrenzung gibt.
*/
getOfKursMaxSuS(idKurs: number): number;
/**
* Liefert die Menge aller Schüler eines Kurses, die noch nicht fixiert sind.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return die Menge aller Schüler eines Kurses, die noch nicht fixiert sind.
*/
private getOfKursMengeAllerNichtFixiertenSchueler;
/**
* Liefert die Menge aller Schüler eines Kurses, die noch nicht fixiert sind und den Kurs als Abiturfach (1, 2, 3 oder 4) gewählt haben.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return die Menge aller Schüler eines Kurses, die noch nicht fixiert sind und den Kurs als Abiturfach (1, 2, 3 oder 4) gewählt haben.
*/
private getOfKursMengeAllerNichtFixiertenAbiturSchueler;
/**
* Liefert die Map, welche jedem Kurs seine Schülermenge zuordnet.
*
* @return Die Map, welche jedem Kurs seine Schülermenge zuordnet.
*/
getMappingKursIDSchuelerIDs(): JavaMap>;
/**
* Liefert die Map, welche jedem Kurs seine Schienenmenge zuordnet.
*
* @return Die Map, welche jedem Kurs seine Schienenmenge zuordnet.
*/
getMappingKursIDSchienenmenge(): JavaMap>;
/**
* Liefert eine Menge aller Kurse mit mindestens einer Kollision.
*
* @return Eine Menge aller Kurse mit mindestens einer Kollision.
*/
private getMengeDerKurseMitKollisionen;
private static regelGetListeToggleFilteredBetween;
/**
* Liefert eine Liste von Regeln, welche den Status der Kurs-Schienen-Sperrung in einem Auswahl-Rechteck ändern soll.
*
Hinweis: Die Regeln sind vom Typ {@link GostKursblockungRegelTyp#KURS_SPERRE_IN_SCHIENE}. Eine negative ID steht
* symbolisch für eine Regel, die noch nicht existiert, andernfalls erhält man eine existierende Regel. Die GUI kann selbst
* entscheiden, wie sie mit den Regeln umgeht (toggle, create, delete).
*
*
* @param list Die aktuelle sortierte Liste der GUI.
* @param kursA Der erste oder der letzte Kurs der Auswahl.
* @param kursB Der erste oder der letzte Kurs der Auswahl.
* @param schieneA Die erste oder letzte Schiene der Auswahl.
* @param schieneB Die erste oder letzte Schiene der Auswahl.
*
* @return eine Liste von Regeln, welche den Status der Kurs-Schienen-Sperrung in einem Auswahl-Rechteck ändern soll.
*/
private regelGetListeToggleSperrung;
/**
* Liefert eine Liste von Regeln, welche den Status der Kurs-Schienen-Fixierung in einem Auswahl-Rechteck ändern soll.
*
Hinweis: Die Regeln sind vom Typ {@link GostKursblockungRegelTyp#KURS_FIXIERE_IN_SCHIENE}. Eine negative ID steht
* symbolisch für eine Regel, die noch nicht existiert, andernfalls erhält man eine existierende Regel. Die GUI kann selbst
* entscheiden, wie sie mit den Regeln umgeht (toggle, create, delete).
*
*
* @param list Die aktuelle sortierte Liste der GUI.
* @param kursA Der erste oder der letzte Kurs der Auswahl.
* @param kursB Der erste oder der letzte Kurs der Auswahl.
* @param schieneA Die erste oder letzte Schiene der Auswahl.
* @param schieneB Die erste oder letzte Schiene der Auswahl.
*
* @return eine Liste von Regeln, welche den Status der Kurs-Schienen-Fixierung in einem Auswahl-Rechteck ändern soll.
*/
private regelGetListeToggleKursfixierung;
/**
* Liefert eine Liste von Regeln, welche den Status der Kurs-Schueler-Fixierung in einem Auswahl-Rechteck ändern soll.
*
Hinweis: Die Regeln sind vom Typ {@link GostKursblockungRegelTyp#SCHUELER_FIXIEREN_IN_KURS}. Eine negative ID steht
* symbolisch für eine Regel, die noch nicht existiert, andernfalls erhält man eine existierende Regel. Die GUI kann selbst
* entscheiden, wie sie mit den Regeln umgeht (toggle, create, delete).
*
Hinweis: Wenn ein Multi-Kurs zum Teil im Auswahl-Rechteck liegt, wird der Kurs ebenso beachtet.
*
* @param list Die aktuelle sortierte Liste der GUI.
* @param kursA Der erste oder der letzte Kurs der Auswahl.
* @param kursB Der erste oder der letzte Kurs der Auswahl.
* @param schieneA Die erste oder letzte Schiene der Auswahl.
* @param schieneB Die erste oder letzte Schiene der Auswahl.
*
* @return eine Liste von Regeln, welche den Status der Kurs-Schueler-Fixierung in einem Auswahl-Rechteck ändern soll.
*/
private regelGetListeToggleSchuelerfixierung;
/**
* Liefert die Regel-Menge aller Kurs-Schienen-Fixierungen eines bestimmten Kurses.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return die Regel-Menge aller Kurs-Schienen-Fixierungen eines bestimmten Kurses.
*/
private regelGetMengeAnKursSchienenFixierungenDesKurses;
/**
* Liefert die Regel-Menge aller Kurs-Schienen-Fixierungen einer bestimmten Kursmenge.
*
* @param listeDerKursIDs Die Liste aller Kurs-IDs.
*
* @return die Regel-Menge aller Kurs-Schienen-Fixierungen einer bestimmten Kursmenge.
*/
private regelGetMengeAnKursSchienenFixierungenDerKurse;
/**
* Liefert die Regel-Menge aller Schüler-Kurs-Fixierungen des übergebenen Kurses.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @return die Regel-Menge aller Schüler-Kurs-Fixierungen des übergebenen Kurses.
*/
private regelGetMengeAllerSchuelerKursFixierungenDesKurses;
/**
* Liefert die Regel-Menge aller Schüler-Kurs-Fixierungen der übergebenen Kurse.
*
* @param listeDerKursIDs Die Liste aller Kurs-IDs.
*
* @return die Regel-Menge aller Schüler-Kurs-Fixierungen der übergebenen Kurse.
*/
private regelGetMengeAllerSchuelerKursFixierungenDerKurse;
/**
* Liefert die Map, welche der verletzten Regel-ID (long) die Beschreibung (String) zuordnet.
*
Hinweis: Nur verletzte Regel-IDs sind in der KEY-Menge enthalten.
*
* @return die Map, welche der verletzten Regel-ID (long) die Beschreibung (String) zuordnet.
*/
regelGetMap_regelID_to_verletzungString(): JavaMap;
/**
* Liefert die Dummy-Regel-Menge (ID=-1) aller möglichen Kurs-Schienen-Fixierungen.
*
Hinweis: Falls ein Kurs bereits fixierte Schienen hat, werden dazu keine Regeln erzeugt.
*
* @return die Dummy-Regel-Menge (ID=-1) aller möglichen Kurs-Schienen-Fixierungen.
*/
private regelGetDummyMengeAllerKursSchienenFixierungen;
/**
* Liefert die Dummy-Regel-Menge (ID=-1) aller Kurs-Schienen-Fixierungen der übergebenen Kurse.
*
Hinweis: Falls ein Kurs bereits fixierte Schienen hat, werden dazu keine Regeln erzeugt.
*
* @param listeDerKursIDs Die Liste aller Kurs-IDs.
*
* @return die Dummy-Regel-Menge (ID=-1) aller Kurs-Schienen-Fixierungen der übergebenen Kurse.
*/
private regelGetDummyMengeAnKursSchienenFixierungen;
/**
* Liefert die Dummy-Regel-Menge (ID=-1) aller möglichen Schüler-Kurs-Fixierungen.
*
Hinweis: Falls ein Schüler bereits fixierte Kurse hat, werden dazu keine Regeln erzeugt.
*
* @return die Dummy-Regel-Menge (ID=-1) aller möglichen Schüler-Kurs-Fixierungen.
*/
private regelGetDummyMengeAllerSchuelerKursFixierungen;
/**
* Liefert die Dummy-Regel-Menge (ID=-1) aller möglichen Schüler-Kurs-Fixierungen der Abiturkurse.
*
Hinweis: Falls ein Schüler bereits fixierte Kurse hat, werden dazu keine Regeln erzeugt.
*
* @return die Dummy-Regel-Menge (ID=-1) aller möglichen Schüler-Kurs-Fixierungen der Abiturkurse.
*/
private regelGetDummyMengeAllerSchuelerAbiturKursFixierungen;
/**
* Liefert die Dummy-Regel-Menge (ID=-1) aller möglichen Schüler-Kurs-Fixierungen einer bestimmten Kursmenge.
*
Hinweis: Falls ein Schüler bereits fixierte Kurse hat, werden dazu keine Regeln erzeugt.
*
* @param listeDerKursIDs Die Liste aller Kurs-IDs.
*
* @return die Dummy-Regel-Menge (ID=-1) aller möglichen Schüler-Kurs-Fixierungen einer bestimmten Kursmenge.
*/
private regelGetDummyMengeAnKursSchuelerFixierungen;
/**
* Liefert die Dummy-Regel-Menge (ID=-1) aller möglichen Schüler-Kurs-Fixierungen einer bestimmten Kursmenge, welche als Abiturfach gewählt wurden.
*
Hinweis: Falls ein Schüler bereits fixierte Kurse hat, werden dazu keine Regeln erzeugt.
*
* @param listeDerKursIDs Die Liste aller Kurs-IDs.
*
* @return die Dummy-Regel-Menge (ID=-1) aller möglichen Schüler-Kurs-Fixierungen einer bestimmten Kursmenge, welche als Abiturfach gewählt wurden.
*/
private regelGetDummyMengeAnAbiturKursSchuelerFixierungen;
/**
* Liefert einen Tooltip für alle Regelverletzungen der definierten Regeln.
*
* @return einen Tooltip für alle Regelverletzungen der definierten Regeln.
*/
regelGetTooltipFuerRegelverletzungen(): string;
/**
* Liefert einen Tooltip für alle Regelverletzungen der Fächerparallelität.
*
* @return einen Tooltip für alle Regelverletzungen der Fächerparallelität.
*/
regelGetTooltipFuerFaecherparallelitaet(): string;
/**
* Liefert einen Tooltip für alle Wahlkonflikte (Kollisionen und Nichtwahlen) ggf. gekürzt.
*
* @return einen Tooltip für alle Wahlkonflikte (Kollisionen und Nichtwahlen) ggf. gekürzt.
*/
regelGetTooltipFuerWahlkonflikte(): string;
/**
* Liefert einen Tooltip für alle Kursdifferenzen.
*
* @return einen Tooltip für alle Kursdifferenzen.
*/
regelGetTooltipFuerKursdifferenzen(): string;
private static regelupdateIsEqualPair;
private static regelupdateAppend;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kursart-Schienenmengen-Sperrung zu setzen.
*
(1) Wenn ein Kurs der Kursart im Schienen-Bereich liegt und gesperrt ist, wird dies entfernt.
*
(2) Wenn ein Kurs der Kursart im Schienen-Bereich liegt und fixiert ist, wird dies entfernt.
*
(3a) Wenn die Regel in falscher von/bis-Reihenfolge existiert, wird sie entfernt.
*
(3b) Wenn die Regel nicht bereits existiert, wird sie hinzugefügt.
*
* @param kursart Die Kursart der Kurse für welche diese Regel gilt.
* @param schienenNrVon Der Anfangsbereich der Schienen.
* @param schienenNrBis Der Endbereich der Schienen.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kursart-Schienenmengen-Sperrung zu setzen.
*/
regelupdateCreate_01_KURSART_SPERRE_SCHIENEN_VON_BIS(kursart: number, schienenNrVon: number, schienenNrBis: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kurs-Schienen-Fixierung einer Rechtecks-Auswahl zu realisieren.
*
(1) Wenn der Kurs markiert ist und eine Sperrung hat, wird die Sperrung entfernt.
*
(2) Wenn der Kurs markiert ist und keine Fixierung hat, wird eine Fixierung erzeugt.
*
(3) Fixierungen außerhalb der Kurslage werden vorsichtshalber gelöscht.
*
* @param setKursID Die Menge aller Kurs-IDs.
* @param setSchienenNr Die Menge aller markierten Schienen-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kurs-Schienen-Fixierung einer Rechtecks-Auswahl zu realisieren.
*/
regelupdateCreate_02_KURS_FIXIERE_IN_SCHIENE_MARKIERT(setKursID: JavaSet, setSchienenNr: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kursmenge komplett in ihrer Lage zu fixieren.
*
(1) Fixierungen innerhalb der Kurslage werden hinzugefügt, falls noch nicht existend.
*
(2) Fixierungen außerhalb der Kurslage werden gelöscht.
*
* @param setKursID Die Kursmenge, die fixiert werden soll.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kursmenge komplett in ihrer Lage zu fixieren.
*/
regelupdateCreate_02b_KURS_FIXIERE_MENGE_IN_IHREN_SCHIENEN(setKursID: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Kurse komplett in ihrer Lage zu fixieren.
*
(1) Fixierungen innerhalb der Kurslage werden hinzugefügt, falls noch nicht existend.
*
(2) Fixierungen außerhalb der Kurslage werden gelöscht.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Kurse komplett in ihrer Lage zu fixieren.
*/
regelupdateCreate_02c_KURS_FIXIERE_ALLE_IN_IHREN_SCHIENEN(): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kursmengen-Schienemengen-Toggle-Fixierung zu realisieren.
*
(1) Wenn der Kurs im Schienen-Bereich liegt und fixiert ist, wird die Fixierung gelöst.
*
(2) Wenn der Kurs im Schienen-Bereich liegt und nicht fixiert ist, wird er fixiert
*
(3) und falls dort eine Sperrung vorliegt, dann wird die Sperrung entfernt.
*
* @param setKursID Die Menge aller Kurs-IDs.
* @param setSchienenNr Die Menge aller Schienen-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kursmengen-Schienemengen-Toggle-Fixierung zu realisieren.
*/
regelupdateCreate_02d_KURS_FIXIERE_IN_SCHIENE_TOGGLE(setKursID: JavaSet, setSchienenNr: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um einen Kurs in einer Schiene zu fixieren.
*
(1) Wenn der Kurs in der Schiene eine Sperrung hat, wird diese entfernt.
*
(2) Wenn der Kurs bereits in der Schiene fixiert ist, passiert nichts weiteres.
*
(3) Wenn der Kurs bereits vollständig fixiert ist, werden seine alten Fixierungen entfernt.
*
(4) Andernfalls wird der Kurs in der Schiene fixiert.
*
* @param idKurs Die Datenbank-ID des Kurses.
* @param schienenNr Die Nummer der Schiene, die fixiert werden soll.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um einen Kurs in einer Schiene zu fixieren.
*/
regelupdateCreate_02e_KURS_FIXIERE_IN_EINER_SCHIENE(idKurs: number, schienenNr: number): GostBlockungRegelUpdate;
private regelupdateCreate_02e_helper;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kursmengen-Schienemengen-Sperrung zu setzen.
*
(1) Wenn der Kurs im Schienen-Bereich nicht gesperrt ist und keine Fixierung vorliegt, wird er gesperrt.
*
* @param setKursID Die Menge aller Kurs-IDs.
* @param setSchienenNr Die Menge aller Schienen-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kursmengen-Schienemengen-Sperrung zu setzen.
*/
regelupdateCreate_03_KURS_SPERRE_IN_SCHIENE(setKursID: JavaSet, setSchienenNr: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kursmengen-Schienemengen-Toggle-Sperrung zu realisieren.
*
(1) Wenn der Kurs im Schienen-Bereich liegt und gesperrt ist, wird die Sperrung gelöst.
*
(2) Wenn der Kurs im Schienen-Bereich liegt und nicht gesperrt ist und keine Fixierung vorliegt, wird er gesperrt.
*
* @param setKursID Die Menge aller Kurs-IDs.
* @param setSchienenNr Die Menge aller Schienen-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kursmengen-Schienemengen-Toggle-Sperrung zu realisieren.
*/
regelupdateCreate_03b_KURS_SPERRE_IN_SCHIENE_TOGGLE(setKursID: JavaSet, setSchienenNr: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Schülermengen-Kursmengen-Fixierung zu setzen.
*
(1) Wenn der Schüler im Kurs gesperrt ist, wird dies entfernt.
*
(2) Wenn der Schüler nicht im Kurs fixiert ist, wird er fixiert.
*
(3) Wenn der Schüler bereits im Kurs fixiert ist, wird dies ignoriert.
*
(4) Wenn der Schüler im Nachbar-Kurs fixiert ist, wird dies entfernt.
*
* @param setSchuelerID Die Menge der Schüler-IDs.
* @param setKursID Die Menge der Kurs-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Schülermengen-Kursmengen-Fixierung zu setzen.
*/
regelupdateCreate_04_SCHUELER_FIXIEREN_IN_KURS(setSchuelerID: JavaSet, setKursID: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Schüler-Kurs-Fixierungen einer Kursmenge zu setzen.
*
(1) Wenn der Schüler im Kurs gesperrt ist, wird dies entfernt.
*
(2) Wenn der Schüler nicht im Kurs fixiert ist, wird er fixiert.
*
(3) Wenn der Schüler bereits im Kurs fixiert ist, wird dies ignoriert.
*
(4) Wenn der Schüler im Nachbar-Kurs fixiert ist, wird dies entfernt.
*
* @param setKursID Die Menge der Kurs-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Schüler-Kurs-Fixierungen einer Kursmenge zu setzen.
*/
regelupdateCreate_04b_SCHUELER_FIXIEREN_IN_DEN_KURSEN(setKursID: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Schüler in ihren aktuellen Kursen zu fixieren.
*
Die Methode delegiert alles an {@link #regelupdateCreate_04_SCHUELER_FIXIEREN_IN_KURS}.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Schüler in ihren aktuellen Kursen zu fixieren.
*/
regelupdateCreate_04c_SCHUELER_FIXIEREN_IN_ALLEN_KURSEN(): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller LK-Schüler zu fixieren.
*
(1) Wenn der Schüler im Kurs gesperrt ist, wird dies entfernt.
*
(2) Wenn der Schüler nicht im Kurs fixiert ist, wird er fixiert.
*
(3) Wenn der Schüler im Nachbar-Kurs fixiert ist, wird dies entfernt.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller LK-Schüler zu fixieren.
*/
regelupdateCreate_04e_SCHUELER_FIXIEREN_TYP_LK(): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle LK-Schüler einer Kursmenge zu fixieren.
*
(1) Wenn der Schüler im Kurs gesperrt ist, wird dies entfernt.
*
(2) Wenn der Schüler nicht im Kurs fixiert ist, wird er fixiert.
*
(3) Wenn der Schüler im Nachbar-Kurs fixiert ist, wird dies entfernt.
*
* @param kursIDs Die Menge der Kurse.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle LK-Schüler einer Kursmenge zu fixieren.
*/
regelupdateCreate_04e_SCHUELER_FIXIEREN_TYP_LK_DER_KURSMENGE(kursIDs: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller AB3-Schüler zu fixieren.
*
(1) Wenn der Schüler im Kurs gesperrt ist, wird dies entfernt.
*
(2) Wenn der Schüler nicht im Kurs fixiert ist, wird er fixiert.
*
(3) Wenn der Schüler im Nachbar-Kurs fixiert ist, wird dies entfernt.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller AB3-Schüler zu fixieren.
*/
regelupdateCreate_04f_SCHUELER_FIXIEREN_TYP_AB3(): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller AB3-Schüler zu fixieren.
*
(1) Wenn der Schüler im Kurs gesperrt ist, wird dies entfernt.
*
(2) Wenn der Schüler nicht im Kurs fixiert ist, wird er fixiert.
*
(3) Wenn der Schüler im Nachbar-Kurs fixiert ist, wird dies entfernt.
*
* @param kursIDs Die Menge der Kurse.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller AB3-Schüler zu fixieren.
*/
regelupdateCreate_04f_SCHUELER_FIXIEREN_TYP_AB3_DER_KURSMENGE(kursIDs: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller LKs und AB3-Schüler zu fixieren.
*
(1) Wenn der Schüler im Kurs gesperrt ist, wird dies entfernt.
*
(2) Wenn der Schüler nicht im Kurs fixiert ist, wird er fixiert.
*
(3) Wenn der Schüler im Nachbar-Kurs fixiert ist, wird dies entfernt.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller LKs und AB3-Schüler zu fixieren.
*/
regelupdateCreate_04g_SCHUELER_FIXIEREN_TYP_LK_UND_AB3(): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller LKs und AB3-Schüler zu fixieren.
*
(1) Wenn der Schüler im Kurs gesperrt ist, wird dies entfernt.
*
(2) Wenn der Schüler nicht im Kurs fixiert ist, wird er fixiert.
*
(3) Wenn der Schüler im Nachbar-Kurs fixiert ist, wird dies entfernt.
*
* @param kursIDs Die Menge der Kurse.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller LKs und AB3-Schüler zu fixieren.
*/
regelupdateCreate_04g_SCHUELER_FIXIEREN_TYP_LK_UND_AB3_DER_KURSMENGE(kursIDs: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller AB4-Schüler zu fixieren.
*
(1) Wenn der Schüler im Kurs gesperrt ist, wird dies entfernt.
*
(2) Wenn der Schüler nicht im Kurs fixiert ist, wird er fixiert.
*
(3) Wenn der Schüler im Nachbar-Kurs fixiert ist, wird dies entfernt.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller AB4-Schüler zu fixieren.
*/
regelupdateCreate_04h_SCHUELER_FIXIEREN_TYP_AB4(): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller AB4-Schüler zu fixieren.
*
(1) Wenn der Schüler im Kurs gesperrt ist, wird dies entfernt.
*
(2) Wenn der Schüler nicht im Kurs fixiert ist, wird er fixiert.
*
(3) Wenn der Schüler im Nachbar-Kurs fixiert ist, wird dies entfernt.
*
* @param kursIDs Die Menge der Kurse.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller AB4-Schüler zu fixieren.
*/
regelupdateCreate_04h_SCHUELER_FIXIEREN_TYP_AB4_DER_KURSMENGE(kursIDs: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller AB-Schüler zu fixieren.
*
(1) Wenn der Schüler im Kurs gesperrt ist, wird dies entfernt.
*
(2) Wenn der Schüler nicht im Kurs fixiert ist, wird er fixiert.
*
(3) Wenn der Schüler im Nachbar-Kurs fixiert ist, wird dies entfernt.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller AB-Schüler zu fixieren.
*/
regelupdateCreate_04i_SCHUELER_FIXIEREN_TYP_AB(): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller AB-Schüler zu fixieren.
*
(1) Wenn der Schüler im Kurs gesperrt ist, wird dies entfernt.
*
(2) Wenn der Schüler nicht im Kurs fixiert ist, wird er fixiert.
*
(3) Wenn der Schüler im Nachbar-Kurs fixiert ist, wird dies entfernt.
*
* @param kursIDs Die Menge der Kurse.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller AB-Schüler zu fixieren.
*/
regelupdateCreate_04i_SCHUELER_FIXIEREN_TYP_AB_DER_KURSMENGE(kursIDs: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller schriftlichen Schüler zu fixieren.
*
(1) Wenn der Schüler im Kurs gesperrt ist, wird dies entfernt.
*
(2) Wenn der Schüler nicht im Kurs fixiert ist, wird er fixiert.
*
(3) Wenn der Schüler im Nachbar-Kurs fixiert ist, wird dies entfernt.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller schriftlichen Schüler zu fixieren.
*/
regelupdateCreate_04j_SCHUELER_FIXIEREN_TYP_SCHRIFTLICH(): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller schriftlichen Schüler zu fixieren.
*
(1) Wenn der Schüler im Kurs gesperrt ist, wird dies entfernt.
*
(2) Wenn der Schüler nicht im Kurs fixiert ist, wird er fixiert.
*
(3) Wenn der Schüler im Nachbar-Kurs fixiert ist, wird dies entfernt.
*
* @param kursIDs Die Menge der Kurse.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Menge aller schriftlichen Schüler zu fixieren.
*/
regelupdateCreate_04j_SCHUELER_FIXIEREN_TYP_SCHRIFTLICH_DER_KURSMENGE(kursIDs: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle GostBlockungRegelUpdate-Objekte für die Umsetzung einer Schüler-Kurs-Fixierung.
*
*
(1) Wenn der Schüler im Kurs gesperrt ist, wird dies entfernt.
*
(2) Wenn der Schüler nicht im Kurs fixiert ist, wird er fixiert.
*
(3) Wenn der Schüler im Nachbar-Kurs fixiert ist, wird dies entfernt.
*
* @param idSchueler Die ID des Schülers.
* @param idKurs Die ID des Kurses.
*
* @return alle GostBlockungRegelUpdate-Objekte für die Umsetzung einer Menge von Schüler-Kurs-Fixierungen.
*/
private regelupdateCreate_04x_SCHUELER_FIXIEREN_IN_KURS;
/**
* Liefert alle GostBlockungRegelUpdate-Objekte für die Umsetzung einer Menge von Schüler-Kurs-Fixierungen.
*
*
(1) Wenn der Schüler im Kurs gesperrt ist, wird dies entfernt.
*
(2) Wenn der Schüler nicht im Kurs fixiert ist, wird er fixiert.
*
(3) Wenn der Schüler im Nachbar-Kurs fixiert ist, wird dies entfernt.
*
* @param schuelerKursPaare Die Menge aller Schüler-Kurs-Paare.
*
* @return alle GostBlockungRegelUpdate-Objekte für die Umsetzung einer Menge von Schüler-Kurs-Fixierungen.
*/
private regelupdateCreate_04x_SCHUELER_FIXIEREN_IN_KURSMENGE;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Schülermengen-Kursmengen-Sperrung zu setzen.
*
(1) Wenn der Schüler im Kurs fixiert ist, wird die Fixierung entfernt.
*
(2) Wenn der Schüler nicht im Kurs gesperrt ist, wird er gesperrt.
*
* @param setSchuelerID Die Menge Schüler-IDs.
* @param setKursID Die Menge der Kurs-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Schülermengen-Kursmengen-Sperrung zu setzen.
*/
regelupdateCreate_05_SCHUELER_VERBIETEN_IN_KURS(setSchuelerID: JavaSet, setKursID: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Schüler-Kurs-Sperrungen der Kurse zu sperren.
*
(1) Wenn der Schüler im Kurs fixiert ist, wird die Fixierung entfernt.
*
(2) Wenn der Schüler nicht im Kurs gesperrt ist, wird er gesperrt.
*
* @param setKursID Die Menge der Kurs-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Schüler-Kurs-Sperrungen der Kurse zu sperren.
*/
private regelupdateCreate_05b_SCHUELER_VERBIETEN_IN_DEN_KURSEN;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kursart-Schienenmengen-Allein-Zuordnung zu setzen.
*
(1) Alle Regeln der selben Kursart werden zunächst entfernt, da zwei solcher Regeln sich widersprechen würden.
*
(2) Wenn eine Kursart-Fixierung im falschen Bereich liegt, wird die Fixierung entfernt.
*
(3) Wenn eine Kursart-Sperrung im falschen Bereich liegt, wird die Sperrung entfernt.
*
(4) Zuletzt wird die Regel neu erzeugt und hinzugefügt.
*
* @param kursart Die Kursart der Kurse für welche diese Regel gilt.
* @param schienenNrVon Der Anfangsbereich der Schienen.
* @param schienenNrBis Der Endbereich der Schienen.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kursart-Schienenmengen-Allein-Zuordnung zu setzen.
*/
regelupdateCreate_06_KURSART_ALLEIN_IN_SCHIENEN_VON_BIS(kursart: number, schienenNrVon: number, schienenNrBis: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Kurs-Kurs-Verbote der Kursmenge (alle Paarungen) zu setzen.
*
(1) Wenn Kurs A mit Kurs B zusammen (Regel 8) sein soll, wird dies entfernt.
*
(2) Wenn die Regel bereits existiert, aber die IDs nicht aufsteigend sind, wird die (MaxKursID, MinKursID)-Kombination entfernt.
*
(3) Wenn die Regel nicht existiert, wird sie hinzugefügt.
*
* @param setKursID Die Menge der Kurs-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Kurs-Kurs-Verbote der Kursmenge (alle Paarungen) zu setzen.
*/
regelupdateCreate_07_KURS_VERBIETEN_MIT_KURS(setKursID: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Kurs-Kurs-Zusammen-Gebote von setKursID (alle Paarungen) zu setzen.
*
(1) Wenn Kurs A mit Kurs B verboten (Regel 7) sein soll, wird dies entfernt.
*
(2) Wenn die Regel bereits existiert, aber die IDs nicht aufsteigend sind, wird die (MaxKursID, MinKursID)-Kombination entfernt.
*
(3) Wenn die Regel nicht existiert, wird sie hinzugefügt.
*
* @param setKursID Die Menge der Kurs-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Kurs-Kurs-Zusammen-Gebote von setKursID (alle Paarungen) zu setzen.
*/
regelupdateCreate_08_KURS_ZUSAMMEN_MIT_KURS(setKursID: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Anzahl der Dummy-Schüler eines Kurses zu setzen.
*
(1) Wenn die Regel bereits existiert, wird sie (zunächst) entfernt.
*
(2) Wenn danach die Anzahl einen Wert größer 0 hat, wird die Regel hinzugefügt.
*
* @param idKurs Die Datenbank-ID des Kurses.
* @param anzahl Die Anzahl an Dummy-Schülern.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Anzahl der Dummy-Schüler eines Kurses zu setzen.
*/
regelupdateCreate_09_KURS_MIT_DUMMY_SUS_AUFFUELLEN(idKurs: number, anzahl: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um "Lehrkräfte beachten" zu aktivieren/deaktivieren.
*
(1) Wenn erstellen==FALSE und die Regel existiert, wird sie entfernt.
*
(2) Wenn erstellen==TRUE und die Regel existiert nicht, wird sie erzeugt.
*
* @param erstellen Falls TRUE, wird die Regel aktiviert, andernfalls deaktiviert.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um "Lehrkräfte beachten" zu aktivieren/deaktivieren.
*/
regelupdateCreate_10_LEHRKRAEFTE_BEACHTEN(erstellen: boolean): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um zwei Schüler in einem Fach zusammen zu setzen.
*
(1) Wenn beide Schüler-IDs identisch sind, wird die Regel ignoriert.
*
(2) Wenn es eine Schüler-Schüler-Fach-Verbieten-Regel gibt, wird diese entfernt.
*
(3) Wenn es eine Schüler-Schüler-Verbieten-Regel gibt, wird diese entfernt.
*
(4) Wenn es eine Schüler-Schüler-Zusammen-Regel gibt, wird diese entfernt.
*
(5a) Wenn es eine Schüler-Schüler-Fach-Zusammen-Regel in falscher Schüler-ID-Reihenfolge gibt, wird sie entfernt.
*
(5b) Wenn es keine Schüler-Schüler-Fach-Zusammen-Regel gibt, wird sie hinzugefügt.
*
* @param idSchueler1 Die Datenbank-ID des 1. Schülers.
* @param idSchueler2 Die Datenbank-ID des 2. Schülers.
* @param idFach Die Datenbank-ID des Faches
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um zwei Schüler in einem Fach zusammen zu setzen.
*/
regelupdateCreate_11_SCHUELER_ZUSAMMEN_MIT_SCHUELER_IN_FACH(idSchueler1: number, idSchueler2: number, idFach: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um zwei Schüler in einem Fach zu verbieten.
*
(1) Wenn beide Schüler-IDs identisch sind, wird die Regel ignoriert.
*
(2) Wenn es eine Schüler-Schüler-Fach-Zusammen-Regel gibt, wird diese entfernt.
*
(3) Wenn es eine Schüler-Schüler-Zusammen-Regel gibt, wird diese entfernt.
*
(4) Wenn es eine Schüler-Schüler-Verboten-Regel gibt, wird diese entfernt.
*
(5a) Wenn es eine Schüler-Schüler-Fach-Verboten-Regel in falscher Schüler-ID-Reihenfolge gibt, wird sie entfernt.
*
(5b) Wenn es keine Schüler-Schüler-Fach-Verboten-Regel gibt, wird sie hinzugefügt.
*
* @param idSchueler1 Die Datenbank-ID des 1. Schülers.
* @param idSchueler2 Die Datenbank-ID des 2. Schülers.
* @param idFach Die Datenbank-ID des Faches
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um zwei Schüler in einem Fach zu verbieten.
*/
regelupdateCreate_12_SCHUELER_VERBIETEN_MIT_SCHUELER_IN_FACH(idSchueler1: number, idSchueler2: number, idFach: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um zwei Schüler in jedem gemeinsamen Fach zusammen zu setzen.
*
(1) Wenn es eine Schüler-Schüler-Fach-Zusammen-Regel mit den selben Schülern gibt, wird diese entfernt.
*
(2) Wenn es eine Schüler-Schüler-Fach-Verbieten-Regel mit den selben Schülern gibt, wird diese entfernt.
*
(3) Wenn es eine Schüler-Schüler-Zusammen-Regel mit den selben Schülern gibt, wird diese entfernt (aber später hinzugefügt).
*
(4) Wenn es eine Schüler-Schüler-Verbieten-Regel mit den selben Schülern gibt, wird diese entfernt.
*
(5) Wenn die Schüler-IDs gültig sind, wird nun die Schüler-Schüler-Zusammen-Regel hinzugefügt.
*
* @param idSchueler1 Die Datenbank-ID des 1. Schülers.
* @param idSchueler2 Die Datenbank-ID des 2. Schülers.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um zwei Schüler in jedem gemeinsamen Fach zusammen zu setzen.
*/
regelupdateCreate_13_SCHUELER_ZUSAMMEN_MIT_SCHUELER(idSchueler1: number, idSchueler2: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um zwei Schüler in jedem gemeinsamen Fach zu verbieten.
*
(1) Wenn es eine Schüler-Schüler-Fach-Zusammen-Regel mit den selben Schülern gibt, wird diese entfernt.
*
(2) Wenn es eine Schüler-Schüler-Fach-Verbieten-Regel mit den selben Schülern gibt, wird diese entfernt.
*
(3) Wenn es eine Schüler-Schüler-Zusammen-Regel mit den selben Schülern gibt, wird diese entfernt.
*
(4) Wenn es eine Schüler-Schüler-Verbieten-Regel mit den selben Schülern gibt, wird diese entfernt (aber später hinzugefügt).
*
(5) Wenn die Schüler-IDs gültig sind, wird nun die Schüler-Schüler-Verbieten-Regel hinzugefügt.
*
* @param idSchueler1 Die Datenbank-ID des 1. Schülers.
* @param idSchueler2 Die Datenbank-ID des 2. Schülers.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um zwei Schüler in jedem gemeinsamen Fach zu verbieten.
*/
regelupdateCreate_14_SCHUELER_VERBIETEN_MIT_SCHUELER(idSchueler1: number, idSchueler2: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die maximale Anzahl an Schülern eines Kurses zu setzen.
*
(1) Wenn die Regel bereits existiert, wird sie (zunächst) entfernt.
*
(2) Wenn danach die Anzahl einen Wert im Intervall [0;99] hat, wird die Regel hinzugefügt.
*
* @param idKurs Die Datenbank-ID des Kurses.
* @param anzahl Die maximale Anzahl an SuS des Kurses.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die maximale Anzahl an Schülern eines Kurses zu setzen.
*/
regelupdateCreate_15_KURS_MAXIMALE_SCHUELERANZAHL(idKurs: number, anzahl: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Schülermenge beim Blocken zu ignorieren.
*
(1) Wenn diese Regel nicht existiert, wird sie hinzugefügt.
*
* @param setSchuelerID Die Menge der Schüler-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Schülermenge beim Blocken zu ignorieren.
*/
regelupdateCreate_16_SCHUELER_IGNORIEREN(setSchuelerID: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kursmenge von Kursdifferenz-Berechnungen auszuschließen.
*
(1) Wenn diese Regel nicht existiert, wird sie hinzugefügt.
*
* @param setKursID Die Menge der Kurs-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kursmenge von Kursdifferenz-Berechnungen auszuschließen.
*/
regelupdateCreate_17_KURS_KURSDIFFERENZ_BEI_DER_VISUALISIERUNG_IGNORIEREN(setKursID: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die maximale Anzahl an Kursen einer bestimmten Fachart (in jeder Schiene) zu begrenzen.
*
(1) Falls die Regel bereits existiert, wird sie zunächst entfernt.
*
(2) Falls der "maximal"-Wert 1 ist und es Regeln KURS_VERBIETEN_MIT_KURS bei Paaren dieser Fachart gibt, werden die Regeln entfernt.
*
(3) Zuletzt wird die neue Regel hinzugefügt.
*
* @param idFach Die Datenbank-ID des Faches.
* @param idKursart Die ID der Kursart.
* @param maximal Die maximale Kursanzahl dieser Fachart (in jeder Schiene). Gültige Werte sind 1 bis 9.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die maximale Anzahl an Kursen einer bestimmten Fachart (in jeder Schiene) zu begrenzen.
*/
regelupdateCreate_18_FACH_KURSART_MAXIMALE_ANZAHL_PRO_SCHIENE(idFach: number, idKursart: number, maximal: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Regeln einer Schülermenge zu entfernen.
*
* @param setSchuelerID Die Menge der Schüler-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Regeln einer Schülermenge zu entfernen.
*/
regelupdateCreate_19_SCHUELERMENGE_ENTFERNEN(setSchuelerID: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*
(1) Wenn die alte Regel nicht gefunden wird, passiert nichts.
*
(2) Wenn eine Regel mit genau den selben Parametern bereits existiert, passiert nichts.
*
(3) Andernfalls wird die alte Regel entfernt und eine neue Regel hinzugefügt.
*
* @param idRegelAlt Die ID der alten zu modifizierenden Regel.
* @param kursart Die Kursart der Kurse für welche diese Regel gilt.
* @param schienenNrVon Der Anfangsbereich der Schienen.
* @param schienenNrBis Der Endbereich der Schienen.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*/
regelupdatePatchByID_01_KURSART_SPERRE_SCHIENEN_VON_BIS(idRegelAlt: number, kursart: number, schienenNrVon: number, schienenNrBis: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*
(1) Wenn die alte Regel nicht gefunden wird, passiert nichts.
*
(2) Wenn eine Regel mit genau den selben Parametern bereits existiert, passiert nichts.
*
(3) Andernfalls wird die alte Regel entfernt und eine neue Regel hinzugefügt.
*
* @param idRegelAlt Die ID der alten zu modifizierenden Regel.
* @param idKurs Die Datenbank-ID des Kurses.
* @param schienenNr Die Nummer der Schiene, die fixiert werden soll.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*/
regelupdatePatchByID_02e_KURS_FIXIERE_IN_EINER_SCHIENE(idRegelAlt: number, idKurs: number, schienenNr: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*
(1) Wenn die alte Regel nicht gefunden wird, passiert nichts.
*
(2) Wenn eine Regel mit genau den selben Parametern bereits existiert, passiert nichts.
*
(3) Andernfalls wird die alte Regel entfernt und eine neue Regel hinzugefügt.
*
* @param idRegelAlt Die ID der alten zu modifizierenden Regel.
* @param idKurs Die ID des Kurses.
* @param schienenNr Die Nummer der Schiene.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*/
regelupdatePatchByID_03_KURS_SPERRE_IN_SCHIENE(idRegelAlt: number, idKurs: number, schienenNr: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*
(1) Wenn die alte Regel nicht gefunden wird, passiert nichts.
*
(2) Wenn eine Regel mit genau den selben Parametern bereits existiert, passiert nichts.
*
(3) Andernfalls wird die alte Regel entfernt und eine neue Regel hinzugefügt.
*
* @param idRegelAlt Die ID der alten zu modifizierenden Regel.
* @param idSchueler Die ID des Schülers.
* @param idKurs Die ID des Kurses.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*/
regelupdatePatchByID_04_SCHUELER_FIXIEREN_IN_KURS(idRegelAlt: number, idSchueler: number, idKurs: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*
(1) Wenn die alte Regel nicht gefunden wird, passiert nichts.
*
(2) Wenn eine Regel mit genau den selben Parametern bereits existiert, passiert nichts.
*
(3) Andernfalls wird die alte Regel entfernt und eine neue Regel hinzugefügt.
*
* @param idRegelAlt Die ID der alten zu modifizierenden Regel.
* @param idSchueler Die ID des Schülers.
* @param idKurs Die ID des Kurses.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*/
regelupdatePatchByID_05_SCHUELER_VERBIETEN_IN_KURS(idRegelAlt: number, idSchueler: number, idKurs: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*
(1) Wenn die alte Regel nicht gefunden wird, passiert nichts.
*
(2) Wenn eine Regel mit genau den selben Parametern bereits existiert, passiert nichts.
*
(3) Andernfalls wird die alte Regel entfernt und eine neue Regel hinzugefügt.
*
* @param idRegelAlt Die ID der alten zu modifizierenden Regel.
* @param kursart Die Kursart der Kurse für welche diese Regel gilt.
* @param schienenNrVon Der Anfangsbereich der Schienen.
* @param schienenNrBis Der Endbereich der Schienen.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*/
regelupdatePatchByID_06_KURSART_ALLEIN_IN_SCHIENEN_VON_BIS(idRegelAlt: number, kursart: number, schienenNrVon: number, schienenNrBis: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*
(1) Wenn die alte Regel nicht gefunden wird, passiert nichts.
*
(2) Wenn eine Regel mit genau den selben Parametern bereits existiert, passiert nichts.
*
(3) Andernfalls wird die alte Regel entfernt und eine neue Regel hinzugefügt.
*
* @param idRegelAlt Die ID der alten zu modifizierenden Regel.
* @param idKurs1 Die ID des 1. Kurses.
* @param idKurs2 Die ID des 2. Kurses.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*/
regelupdatePatchByID_07_KURS_VERBIETEN_MIT_KURS(idRegelAlt: number, idKurs1: number, idKurs2: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*
(1) Wenn die alte Regel nicht gefunden wird, passiert nichts.
*
(2) Wenn eine Regel mit genau den selben Parametern bereits existiert, passiert nichts.
*
(3) Andernfalls wird die alte Regel entfernt und eine neue Regel hinzugefügt.
*
* @param idRegelAlt Die ID der alten zu modifizierenden Regel.
* @param idKurs1 Die ID des 1. Kurses.
* @param idKurs2 Die ID des 2. Kurses.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*/
regelupdatePatchByID_08_KURS_ZUSAMMEN_MIT_KURS(idRegelAlt: number, idKurs1: number, idKurs2: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*
(1) Wenn die alte Regel nicht gefunden wird, passiert nichts.
*
(2) Wenn eine Regel mit genau den selben Parametern bereits existiert, passiert nichts.
*
(3) Andernfalls wird die alte Regel entfernt und eine neue Regel hinzugefügt.
*
* @param idRegelAlt Die ID der alten zu modifizierenden Regel.
* @param idKurs Die ID des Kurses.
* @param anzahl Die Anzahl an Dummy-SuS des Kurses.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*/
regelupdatePatchByID_09_KURS_MIT_DUMMY_SUS_AUFFUELLEN(idRegelAlt: number, idKurs: number, anzahl: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*
(1) Wenn die alte Regel nicht gefunden wird, passiert nichts.
*
(2) Wenn eine Regel mit genau den selben Parametern bereits existiert, passiert nichts.
*
(3) Andernfalls wird die alte Regel entfernt und eine neue Regel hinzugefügt.
*
* @param idRegelAlt Die ID der alten zu modifizierenden Regel.
* @param idSchueler1 Die Datenbank-ID des 1. Schülers.
* @param idSchueler2 Die Datenbank-ID des 2. Schülers.
* @param idFach Die Datenbank-ID des Faches
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*/
regelupdatePatchByID_11_SCHUELER_ZUSAMMEN_MIT_SCHUELER_IN_FACH(idRegelAlt: number, idSchueler1: number, idSchueler2: number, idFach: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*
(1) Wenn die alte Regel nicht gefunden wird, passiert nichts.
*
(2) Wenn eine Regel mit genau den selben Parametern bereits existiert, passiert nichts.
*
(3) Andernfalls wird die alte Regel entfernt und eine neue Regel hinzugefügt.
*
* @param idRegelAlt Die ID der alten zu modifizierenden Regel.
* @param idSchueler1 Die Datenbank-ID des 1. Schülers.
* @param idSchueler2 Die Datenbank-ID des 2. Schülers.
* @param idFach Die Datenbank-ID des Faches
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*/
regelupdatePatchByID_12_SCHUELER_VERBIETEN_MIT_SCHUELER_IN_FACH(idRegelAlt: number, idSchueler1: number, idSchueler2: number, idFach: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*
(1) Wenn die alte Regel nicht gefunden wird, passiert nichts.
*
(2) Wenn eine Regel mit genau den selben Parametern bereits existiert, passiert nichts.
*
(3) Andernfalls wird die alte Regel entfernt und eine neue Regel hinzugefügt.
*
* @param idRegelAlt Die ID der alten zu modifizierenden Regel.
* @param idSchueler1 Die Datenbank-ID des 1. Schülers.
* @param idSchueler2 Die Datenbank-ID des 2. Schülers.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*/
regelupdatePatchByID_13_SCHUELER_ZUSAMMEN_MIT_SCHUELER(idRegelAlt: number, idSchueler1: number, idSchueler2: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*
(1) Wenn die alte Regel nicht gefunden wird, passiert nichts.
*
(2) Wenn eine Regel mit genau den selben Parametern bereits existiert, passiert nichts.
*
(3) Andernfalls wird die alte Regel entfernt und eine neue Regel hinzugefügt.
*
* @param idRegelAlt Die ID der alten zu modifizierenden Regel.
* @param idSchueler1 Die Datenbank-ID des 1. Schülers.
* @param idSchueler2 Die Datenbank-ID des 2. Schülers.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*/
regelupdatePatchByID_14_SCHUELER_VERBIETEN_MIT_SCHUELER(idRegelAlt: number, idSchueler1: number, idSchueler2: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*
(1) Wenn die alte Regel nicht gefunden wird, passiert nichts.
*
(2) Wenn eine Regel mit genau den selben Parametern bereits existiert, passiert nichts.
*
(3) Andernfalls wird die alte Regel entfernt und eine neue Regel hinzugefügt.
*
* @param idRegelAlt Die ID der alten zu modifizierenden Regel.
* @param idKurs Die ID des Kurses.
* @param anzahl Die maximale Anzahl der SuS des Kurses.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*/
regelupdatePatchByID_15_KURS_MAXIMALE_SCHUELERANZAHL(idRegelAlt: number, idKurs: number, anzahl: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*
(1) Wenn die alte Regel nicht gefunden wird, passiert nichts.
*
(2) Wenn eine Regel mit genau den selben Parametern bereits existiert, passiert nichts.
*
(3) Andernfalls wird die alte Regel entfernt und eine neue Regel hinzugefügt.
*
* @param idRegelAlt Die ID der alten zu modifizierenden Regel.
* @param idSchueler Die ID des Schülers.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Regel dieses Typs zu patchen.
*/
regelupdatePatchByID_16_SCHUELER_IGNORIEREN(idRegelAlt: number, idSchueler: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Regel von einem zu einem anderen Kurs zu patchen.
*
*
(1) Wenn die alte Regel nicht existiert, passiert nichts.
*
(2) Wenn die neue Kurs-ID bereits existiert, passiert nichts.
*
(3) Wenn die alte Kurs-ID der neuen Kurs-ID gleicht, passiert nichts.
*
(4) Andernfalls wird die alte Regel gelöscht (idKursAlt) und eine neue Regel wird erzeugt (idKursNeu).
*
* @param idRegelAlt Die Regel, die modifiziert wird.
* @param idKursNeu Die neue Kurs-ID deren Regel hinzugefügt werden soll.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um die Regel von einem zu einem anderen Kurs zu patchen.
*/
regelupdatePatchByID_17_KURS_KURSDIFFERENZ_BEI_DER_VISUALISIERUNG_IGNORIEREN(idRegelAlt: number, idKursNeu: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kursmengen-Schienemengen-Fixierung zu lösen.
*
(1) Wenn der Kurs im Schienen-Bereich liegt und bereits fixiert ist, wird die Fixierung entfernt.
*
* @param setKursID Die Menge aller Kurs-IDs.
* @param setSchienenNr Die Menge aller Schienen-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kursmengen-Schienemengen-Fixierung zu lösen.
*/
regelupdateRemove_02_KURS_FIXIERE_IN_SCHIENE_MARKIERT(setKursID: JavaSet, setSchienenNr: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Fixierung einer Kursmenge komplett zu lösen.
*
(1) Alle Fixierungen der Kursmenge werden gelöst.
*
* @param setKursID Die Kursmenge, deren Fixierungen gelöst werden sollen.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Fixierung einer Kursmenge komplett zu lösen.
*/
regelupdateRemove_02b_KURS_FIXIERE_MENGE_IN_IHREN_SCHIENEN(setKursID: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Kurs-Schienen-Fixierungen zu lösen.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Kurs-Schienen-Fixierungen zu lösen.
*/
regelupdateRemove_02c_KURS_FIXIERE_ALLE_IN_IHREN_SCHIENEN(): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kurs-Schienen-Fixierung zu lösen.
*
(1) Wenn der Kurs in der Schiene fixiert ist, wird die Fixierung entfernt.
*
* @param idKurs Die Datenbank-ID des Kurses.
* @param schienenNr Die Nummer der Schiene, die gelöst werden soll.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kurs-Schienen-Fixierung zu lösen.
*/
regelupdateRemove_02e_KURS_FIXIERE_IN_EINER_SCHIENE(idKurs: number, schienenNr: number): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kursmengen-Schienemengen-Sperrung zu lösen.
*
(1) Wenn der Kurs in dem Schienen-Bereich gesperrt ist, wird die Sperrung entfernt.
*
* @param setKursID Die Menge aller Kurs-IDs.
* @param setSchienenNr Die Menge aller Schienen-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Kursmengen-Schienemengen-Sperrung zu lösen.
*/
regelupdateRemove_03_KURS_SPERRE_IN_SCHIENE(setKursID: JavaSet, setSchienenNr: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Schülermengen-Kursmengen-Fixierung zu lösen.
*
(1) Wenn der Schüler im Kurs fixiert ist, wird die Fixierung entfernt.
*
* @param setSchuelerID Die Menge der Schüler-IDs.
* @param setKursID Die Menge der Kurs-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Schülermengen-Kursmengen-Fixierung zu lösen.
*/
regelupdateRemove_04_SCHUELER_FIXIEREN_IN_KURS(setSchuelerID: JavaSet, setKursID: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Schüler-Kurs-Fixierungen einer Kursmenge zu lösen.
*
(1) Wenn der Schüler im Kurs fixiert ist, wird die Fixierung entfernt.
*
* @param setKursID Die Menge der Kurs-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Schüler-Kurs-Fixierungen einer Kursmenge zu lösen.
*/
regelupdateRemove_04b_SCHUELER_FIXIEREN_IN_DEN_KURSEN(setKursID: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Schüler-Kurs-Fixierungen zu lösen.
*
Die Methode delegiert alles an {@link #regelupdateCreate_04_SCHUELER_FIXIEREN_IN_KURS}.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Schüler-Kurs-Fixierungen zu lösen.
*/
regelupdateRemove_04c_SCHUELER_FIXIEREN_IN_ALLEN_KURSEN(): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um ein Schüler-Kurs-Fixierung-Toggle zu realisieren.
*
(1) Wenn der Schüler im Kurs fixiert ist, wird die Fixierung entfernt.
*
(2) Wenn der Schüler im Kurs nicht fixiert ist, wird die Fixierung gesetzt.
*
(3) Potentielle Fixierungen in Nachbar-Kursen werden entfernt, da sie in jedem Fall falsch sind.
*
* @param setKursID Die Menge der Kurs-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um ein Schüler-Kurs-Fixierung-Toggle zu realisieren.
*/
regelupdateRemove_04d_SCHUELER_FIXIEREN_IN_DEN_KURSEN_TOGGLE(setKursID: JavaSet): GostBlockungRegelUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Schülermengen-Kursmengen-Sperrung zu lösen.
*
(1) Wenn der Schüler im Kurs gesperrt ist, wird die Sperrung entfernt.
*
* @param setSchuelerID Die Menge der Schüler-IDs.
* @param setKursID Die Menge der Kurs-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um eine Schülermengen-Kursmengen-Sperrung zu lösen.
*/
private regelupdateRemove_05_SCHUELER_VERBIETEN_IN_KURS;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Schüler-Kurs-Sperrungen der Kurse zu lösen.
*
(1) Wenn der Schüler im Kurs gesperrt ist, wird die Sperrung entfernt.
*
* @param setKursID Die Menge der Kurs-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Schüler-Kurs-Sperrungen der Kurse zu lösen.
*/
private regelupdateRemove_05b_SCHUELER_VERBIETEN_IN_DEN_KURSEN;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Kurs-Kurs-Verbote der Kursmenge (alle Paarungen) zu lösen.
*
(1) Wenn das Kurs-Kurs-Verbot existiert (in beliebiger Permutation), wird es entfernt.
*
* @param setKursID Die Menge der Kurs-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Kurs-Kurs-Verbote der Kursmenge (alle Paarungen) zu lösen.
*/
private regelupdateRemove_07_KURS_VERBIETEN_MIT_KURS;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Kurs-Kurs-Gebote von setKursID (alle Paarungen) zu lösen.
*
(1) Wenn das Kurs-Kurs-Gebot existiert (in beliebiger Permutation), wird es entfernt.
*
* @param setKursID Die Menge der Kurs-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungRegelUpdate}-Objekt, um alle Kurs-Kurs-Gebote von setKursID (alle Paarungen) zu lösen.
*/
private regelupdateRemove_08_KURS_ZUSAMMEN_MIT_KURS;
/**
* Entfernt erst alle Regeln aus {@link GostBlockungRegelUpdate#listEntfernen} und
* fügt dann die neuen Regeln aus {@link GostBlockungRegelUpdate#listHinzuzufuegen} hinzu.
*
* @param update Das {@link GostBlockungRegelUpdate}-Objekt.
*/
regelupdateExecute(update: GostBlockungRegelUpdate): void;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchuelerZuordnungUpdate}-Objekt, um alle Schüler aus den derzeit zugeordneten Kursen zu entfernen.
*
(1) Wenn ein Schüler in einem Kurs ist und nicht fixiert ist, wird er entfernt.
*
(2) Wenn ein Schüler in einem Kurs ist und fixiert ist, wird er entfernt, falls entferneAuchFixierte==TRUE ist.
*
* @param entferneAuchFixierte Falls TRUE, werden auch fixiert SuS entfernt.
*
* @return alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchuelerZuordnungUpdate}-Objekt, um alle Schüler aus den derzeit zugeordneten Kursen zu entfernen.
*/
kursSchuelerUpdate_01_LEERE_ALLE_KURSE(entferneAuchFixierte: boolean): GostBlockungsergebnisKursSchuelerZuordnungUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchuelerZuordnungUpdate}-Objekt, um alle Schüler aus der übergebenen Kursmenge zu entfernen.
*
(1) Wenn ein Schüler in einem Kurs ist und nicht fixiert ist, wird er entfernt.
*
(2) Wenn ein Schüler in einem Kurs ist und fixiert ist, wird er entfernt, falls entferneAuchFixierte==TRUE ist.
*
* @param kursIDs Die Menge der Kurse.
* @param entferneAuchFixierte Falls TRUE, werden auch fixiert SuS entfernt.
*
* @return alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchuelerZuordnungUpdate}-Objekt, um alle Schüler aus der übergebenen Kursmenge zu entfernen.
*/
kursSchuelerUpdate_01b_LEERE_KURSMENGE(kursIDs: JavaSet, entferneAuchFixierte: boolean): GostBlockungsergebnisKursSchuelerZuordnungUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchuelerZuordnungUpdate}-Objekt, um eine Schülermenge aus einem Kurs zu entfernen.
*
(1) Wenn der Schüler dem Kurs zugeordnet ist und nicht fixiert ist, wird er entfernt.
*
(2) Wenn der Schüler dem Kurs zugeordnet ist und fixiert ist, wird er entfernt, falls entferneAuchFixierte==TRUE ist. Auch die Fixierungs-Regel wird entfernt.
*
* @param schuelerIDs Die Menge der Schüler-IDs.
* @param idKurs Die Datenbank-ID des Kurses aus dem die Schüler entfernt werden sollen.
* @param entferneAuchFixierte Falls TRUE, werden auch fixiert SuS entfernt.
*
* @return alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchuelerZuordnungUpdate}-Objekt, um eine Schülermenge aus einem Kurs zu entfernen.
*/
kursSchuelerUpdate_02a_ENTFERNE_SCHUELERMENGE_AUS_KURS(schuelerIDs: JavaSet, idKurs: number, entferneAuchFixierte: boolean): GostBlockungsergebnisKursSchuelerZuordnungUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchuelerZuordnungUpdate}-Objekt, um eine Schülermenge aus allen Kursen entfernen.
*
Hinweis: Es werden keine Kurs-Fixierungs-Regeln entfernt. Dafür muss die zugehörige regelupdate-Methode aufgerufen werden.
*
* @param schuelerIDs Die Menge der Schüler-IDs.
*
* @return alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchuelerZuordnungUpdate}-Objekt, um eine Schülermenge aus allen Kursen entfernen.
*/
kursSchuelerUpdate_02b_ENTFERNE_SCHUELERMENGE_AUS_ALLEN_KURSEN(schuelerIDs: JavaSet): GostBlockungsergebnisKursSchuelerZuordnungUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchuelerZuordnungUpdate}-Objekt, um Schüler auf Kurse zu verteilen.
*
(1) Wenn der Schüler nicht im Kurs ist, wird er hinzugefügt.
*
(2) Wenn der Schüler in einem Nachbar-Kurs ist, wird er entfernt.
*
*
Hinweis: Wenn der Schüler den Kurs gar nicht gewählt hat, wird dies trotzdem erlaubt. Denn bei einer Umwahl, kann eine Kurszuordnung ungültig sein!
*
* @param kursSchuelerZuordnungen Alle Kurs-Schüler-Paare, welche hinzugefügt werden sollen.
*
* @return alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchuelerZuordnungUpdate}-Objekt, um Schüler auf Kurse zu verteilen.
*/
kursSchuelerUpdate_03a_FUEGE_KURS_SCHUELER_PAARE_HINZU(kursSchuelerZuordnungen: JavaSet): GostBlockungsergebnisKursSchuelerZuordnungUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchuelerZuordnungUpdate}-Objekt, um Schüler auf Kurse zu verteilen mit Nebenbedingungen.
*
(1) Wenn der Schüler den Ziel-Kurs nicht wählen darf (falsche Fachwahlen), dann passiert nichts.
*
(2) Wenn der Schüler aus einem fixierten Kurs verschoben werden soll, dies aber nicht erlaubt ist, dann passiert nichts.
*
(3) Der Schüler ggf. aus einem alten Kurs entfernt und die Fixier-Regel des alten Kurses wird ggf. entfernt.
*
(4) Der Schüler wird einem neuen Kurs hinzugefügt und wird ggf. im neuen Kurs fixiert.
*
* @param kursSchuelerZuordnungen Alle Kurs-Schüler-Paare, welche hinzugefügt werden sollen.
* @param verschiebeFixierteDesQuellkurses TRUE, dann werden fixierte SuS aus potentiell alten Kursen entfernt.
* @param fixiereImZielkurs TRUE, dann werden die SuS im Zielkurs fixiert.
*
* @return alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchuelerZuordnungUpdate}-Objekt, um Schüler auf Kurse zu verteilen mit Nebenbedingungen.
*/
private kursSchuelerUpdate_03a_VERSCHIEBE_SCHUELER_ZU_KURSEN;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchuelerZuordnungUpdate}-Objekt, um Schüler aus Kursen zu entfernen.
*
(1) Wenn der Schüler im Kurs ist, wird er entfernt.
*
(2) Falls es Schüler-Kurs-Fixierungen gibt, werden diese entfernt.
*
* @param kursSchuelerZuordnungen Alle Kurs-Schüler-Paare, welche entfernt werden sollen.
*
* @return alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchuelerZuordnungUpdate}-Objekt, um Schüler aus Kursen zu entfernen.
*/
kursSchuelerUpdate_03b_ENTFERNE_KURS_SCHUELER_PAARE(kursSchuelerZuordnungen: JavaSet): GostBlockungsergebnisKursSchuelerZuordnungUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchuelerZuordnungUpdate}-Objekt, um Schüler-Kerngruppe auf mehrere Kurse zu verteilen.
*
(1) Die SuS werden entsprechende der Methode {@link #kursSchuelerUpdate_03a_VERSCHIEBE_SCHUELER_ZU_KURSEN} verschoben.
*
(2) Falls "zielKurseLeeren", werden alle SuS aus dem Ziel-Kurs entfernt, die nicht zur Kerngruppe gehören.
*
* @param idQuellKurs Der Quell-Kurs definiert die Kerngruppe.
* @param idZielKurse Alle Ziel-Kurs-Schülermengen werden der Kerngruppe angeglichen.
* @param verschiebeFixierteDesQuellkurses Falls TRUE, dann werden Fixierungen im Quell-Kurs gelöst, andernfalls wird der Schüler nicht verschoben.
* @param inZielKursenFixieren Falls TRUE, wird nach der Verschiebung der Schüler im Ziel-Kurs fixiert.
* @param zielKurseLeeren Falls TRUE, werden alle SuS aus dem Ziel-Kurs entfernt, die nicht zur Kerngruppe gehören.
*
*
* @return alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchuelerZuordnungUpdate}-Objekt, um Schüler auf Kurse zu verteilen mit Nebenbedingungen.
*/
kursSchuelerUpdate_04_BILDE_KERNGRUPPEN(idQuellKurs: number, idZielKurse: JavaSet, verschiebeFixierteDesQuellkurses: boolean, inZielKursenFixieren: boolean, zielKurseLeeren: boolean): GostBlockungsergebnisKursSchuelerZuordnungUpdate;
/**
* Entfernt erst alle Regeln aus {@link GostBlockungsergebnisKursSchuelerZuordnungUpdate#listEntfernen} und
* fügt dann die neuen Regeln aus {@link GostBlockungsergebnisKursSchuelerZuordnungUpdate#listHinzuzufuegen} hinzu.
* Macht das selbe für die potentiell enthaltenen RegelUpdates.
*
* @param update Das {@link GostBlockungsergebnisKursSchuelerZuordnungUpdate}-Objekt.
*/
kursSchuelerUpdateExecute(update: GostBlockungsergebnisKursSchuelerZuordnungUpdate): void;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchienenZuordnungUpdate}-Objekt, um Kurse in Schienen zu setzen.
*
(1) Wenn der Kurs nicht in der Schiene ist, wird er hinzugefügt.
*
* @param kursSchienenZuordnungen Alle Kurs-Schienen-Paare, welche gesetzt werden sollen.
*
* @return alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchienenZuordnungUpdate}-Objekt, um Kurse in Schienen zu setzen.
*/
kursSchienenUpdate_01a_FUEGE_KURS_SCHIENEN_PAARE_HINZU(kursSchienenZuordnungen: JavaSet): GostBlockungsergebnisKursSchienenZuordnungUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchienenZuordnungUpdate}-Objekt, um Kurse aus Schienen zu entfernen.
*
(1) Wenn der Kurs nicht in der Schiene ist, wird er hinzugefügt.
*
* @param kursSchienenZuordnungen Alle Kurs-Schienen-Paare, welche entfernt werden sollen.
*
* @return alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchienenZuordnungUpdate}-Objekt, um Kurse aus Schienen zu entfernen.
*/
kursSchienenUpdate_01b_ENTFERNE_KURS_SCHIENEN_PAARE(kursSchienenZuordnungen: JavaSet): GostBlockungsergebnisKursSchienenZuordnungUpdate;
/**
* Liefert alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchienenZuordnungUpdate}-Objekt, um einen Kurs von einer Schiene zu einer anderen Schiene zu verschieben.
*
*
(1) Wenn der Kurs nicht in der Quell-Schiene ist, passiert nichts.
*
(2) Wenn der Kurs bereits in der Ziel-Schiene ist, passiert nichts.
*
(3) Andernfalls, wird der Kurs aus der Quell-Schiene entfernt und der Ziel-Schiene hinzugefügt.
*
*
* @param idKurs Die Datenbank-ID des Kurses.
* @param idSchieneQuelle Die Quell-Schiene, aus der der Kurs entfernt wird.
* @param idSchieneZiel Die Ziel-Schiene, zu welcher der Kurs hinzugefügt wird.
*
* @return alle nötigen Veränderungen als {@link GostBlockungsergebnisKursSchienenZuordnungUpdate}-Objekt, um einen Kurs von einer Schiene zu einer anderen Schiene zu verschieben.
*/
kursSchienenUpdate_02a_VERSCHIEBE_KURS_VON_SCHIENE_NACH_SCHIENE(idKurs: number, idSchieneQuelle: number, idSchieneZiel: number): GostBlockungsergebnisKursSchienenZuordnungUpdate;
/**
* Entfernt erst alle Regeln aus {@link GostBlockungsergebnisKursSchienenZuordnungUpdate#listEntfernen} und
* fügt dann die neuen Regeln aus {@link GostBlockungsergebnisKursSchienenZuordnungUpdate#listHinzuzufuegen} hinzu.
* Macht das selbe für die potentiell enthaltenen RegelUpdates.
*
* @param update Das {@link GostBlockungsergebnisKursSchienenZuordnungUpdate}-Objekt.
*/
kursSchienenUpdateExecute(update: GostBlockungsergebnisKursSchienenZuordnungUpdate): void;
/**
* Liefert das zur ID zugehörige {@link GostBlockungSchiene}-Objekt.
* Delegiert den Aufruf an den Fächer-Manager des Eltern-Objektes {@link GostBlockungsdatenManager}.
* Wirft eine DeveloperNotificationException, falls die ID unbekannt ist.
*
* @param idSchiene Die Datenbank-ID der Schiene.
*
* @return das zur ID zugehörige {@link GostBlockungSchiene}-Objekt.
* @throws DeveloperNotificationException falls die ID unbekannt ist.
*/
getSchieneG(idSchiene: number): GostBlockungSchiene;
/**
* Liefert das zur ID zugehörige {@link GostBlockungsergebnisSchiene}-Objekt.
*
* @param idSchiene Die Datenbank-ID der Schiene.
*
* @return das zur ID zugehörige {@link GostBlockungsergebnisSchiene}-Objekt.
* @throws DeveloperNotificationException falls die Schiene nicht existiert.
*/
private getSchieneE;
/**
* Liefert TRUE, falls die Schiene keine Kurse enthält.
*
* @param idSchiene Die Datenbank-ID der Schiene.
*
* @return TRUE, falls die Schiene keine Kurse enthält.
* @throws DeveloperNotificationException falls die Schiene nicht existiert.
*/
getOfSchieneIstLeer(idSchiene: number): boolean;
/**
* Liefert das zur Nummer zugehörige {@link GostBlockungsergebnisSchiene}-Objekt.
* Wirft eine {@link DeveloperNotificationException} falls eine solche Schiene nicht existiert.
*
* @param nrSchiene Die Nummer der Schiene.
*
* @return das zur Nummer zugehörige {@link GostBlockungsergebnisSchiene}-Objekt.
* @throws DeveloperNotificationException falls eine solche Schiene nicht existiert.
*/
private getSchieneEmitNr;
/**
* Liefert die ID einer Schiene mit einer bestimmten Nummer.
*
* @param nrSchiene Die Nummer der Schiene.
*
* @return die ID einer Schiene mit einer bestimmten Nummer.
* @throws DeveloperNotificationException falls eine solche Schiene nicht existiert.
*/
getOfSchieneID(nrSchiene: number): number;
/**
* Liefert die Menge aller Schienen.
*
* @return Die Menge aller Schienen.
*/
getMengeAllerSchienen(): List;
/**
* Liefert eine Menge aller Schienen mit mindestens einer Kollision.
*
* @return Eine Menge aller Schienen mit mindestens einer Kollision.
*/
private getMengeDerSchienenMitKollisionen;
/**
* Liefert TRUE, falls die E-Schiene existiert.
*
* @param idSchiene Die Datenbank-ID der Schiene.
* @return TRUE, falls die E-Schiene existiert.
*/
getOfSchieneExists(idSchiene: number): boolean;
/**
* Liefert die Anzahl an Schülern in der Schiene mit der übergebenen ID zurück.
* Hinweis: Falls ein Schüler mehrfach in der Schiene ist, also mit Kollisionen, wird er mehrfach gezählt!
*
* @param idSchiene Die Datenbank-ID der Schiene.
*
* @return die Anzahl an Schülern in der Schiene mit der übergebenen ID zurück.
*/
getOfSchieneAnzahlSchueler(idSchiene: number): number;
/**
* Liefert TRUE, falls die Schiene mindestens eine Schüler-Kollision hat.
*
* @param idSchiene Die Datenbank-ID der Schiene.
*
* @return TRUE, falls die Schiene mindestens eine Schüler-Kollision hat.
*/
getOfSchieneHatKollision(idSchiene: number): boolean;
/**
* Liefert die Anzahl an Schüler-Kollisionen der Schiene.
* Hinweis Ein Schüler, der N>1 Mal in einer Schiene ist, erzeugt N-1 Kollisionen.
*
* @param idSchiene Die Datenbank-ID der Schiene.
*
* @return die Anzahl an Schüler-Kollisionen der Schiene.
*/
getOfSchieneAnzahlSchuelerMitKollisionen(idSchiene: number): number;
/**
* Liefert die Menge an Schüler-IDs, die in der Schiene eine Kollision haben.
*
* @param idSchiene Die Datenbank-ID der Schiene.
*
* @return Die Menge an Schüler-IDs, die in der Schiene eine Kollision haben.
*/
getOfSchieneSchuelermengeMitKollisionen(idSchiene: number): JavaSet;
/**
* Liefert die Menge an Kursen, die in der Schiene eine Kollision haben.
*
* @param idSchiene Die Datenbank-ID der Schiene.
*
* @return die Menge an Kursen, die in der Schiene eine Kollision haben.
*/
getOfSchieneKursmengeMitKollisionen(idSchiene: number): JavaSet;
/**
* Liefert die sortierte Menge an Kursen einer bestimmten Schiene.
*
* @param idSchiene Die Datenbank-ID der Schiene.
*
* @return die sortierte Menge an Kursen einer bestimmten Schiene.
*/
getOfSchieneKursmengeSortiert(idSchiene: number): List;
/**
* Liefert einen Tooltip für die Schiene, welche alle Kollisionen pro Kurs-Paarung darstellt.
*
* @param idSchiene Die Datenbank-ID der Schiene.
*
* @return einen Tooltip für die Schiene, welche alle Kollisionen pro Kurs-Paarung darstellt.
*/
private getOfSchieneTooltipKurskollisionen;
/**
* Liefert alle Kollisionen einer Schiene, als Liste von Liste von Kurs-Anzahl-Paaren.
*
Pro innerer Liste gilt: Das erste Paar ist der Kurs, welcher mit allen anderen verglichen wurde, zusammen mit der Kollisions-Summe.
*
Anschließend folgen alle anderen Kurse mit ihrer Kollisions-Anzahl, falls diese größer 0 ist.
*
* @param idSchiene Die Datenbank-ID der Schiene.
*
* @return alle Kollisionen einer Schiene, als Liste von Liste von Kurs-Anzahl-Paaren.
*/
getOfSchieneTooltipKurskollisionenAsData(idSchiene: number): List>>;
/**
* Liefert alle Kollisionen einer Schiene (pro Element ein Schüler).
*
* @param idSchiene Die Datenbank-ID der Schiene.
*
* @return alle Kollisionen einer Schiene (pro Element ein Schüler).
*/
getOfSchieneTooltipSchuelerkollisionen(idSchiene: number): string;
private static getOfKursOfKursAnzahlGemeinsamerSchueler;
/**
* Liefert TRUE, falls ein Löschen der Schiene erlaubt ist.
* Kriterium: Es dürfen keine Kurse der Schiene zugeordnet sein.
*
* @param idSchiene Die Datenbank-ID der Schiene.
*
* @return TRUE, falls ein Löschen der Schiene erlaubt ist.
* @throws DeveloperNotificationException Falls die Schiene nicht existiert.
*/
getOfSchieneRemoveAllowed(idSchiene: number): boolean;
/**
* Liefert die maximale Anzahl an Kursen, die es in einer Schiene gibt.
*
* @return die maximale Anzahl an Kursen, die es in einer Schiene gibt.
*/
getOfSchieneMaxKursanzahl(): number;
/**
* Liefert die Anzahl an externen SuS der Schiene.
*
Hinweis: Ist ein Schüler mehrfach in der Schiene (Kollision) wird er auch mehrfach gezählt.
*
* @param idSchiene Die Datenbank-ID der Schiene.
*
* @return die Anzahl an externen SuS der Schiene.
*/
getOfSchieneAnzahlSchuelerExterne(idSchiene: number): number;
/**
* Liefert die Anzahl an Dummy-SuS der Schiene.
*
* @param idSchiene Die Datenbank-ID der Schiene.
*
* @return die Anzahl an Dummy-SuS der Schiene.
*/
getOfSchieneAnzahlSchuelerDummy(idSchiene: number): number;
/**
* Fügt die übergebene Schiene hinzu.
*
* @param idSchiene Die Datenbank-ID der Schiene.
*
* @throws DeveloperNotificationException falls die Schiene nicht zuerst im Datenmanager hinzugefügt wurde.
*/
setAddSchieneByID(idSchiene: number): void;
/**
* Löscht die übergebene Schiene.
*
* @param idSchiene Die Datenbank-ID der Schiene.
*
* @throws DeveloperNotificationException falls die Schiene nicht zuerst beim Datenmanager entfernt wurde, oder
* falls die Schiene noch Kurszuordnungen hat.
*/
setRemoveSchieneByID(idSchiene: number): void;
/**
* Fügt den übergebenen Kurs hinzu.
*
* @param idKurs Die Datenbank-ID des Kurses.
*
* @throws DeveloperNotificationException Falls der Kurs nicht zuerst beim Datenmanager hinzugefügt wurde.
*/
setAddKursByID(idKurs: number): void;
/**
* Löscht alle übergebenen Kurse. Entfernt zuvor potentiell vorhandene Schülerinnen und Schüler aus dem Kurs.
*
* @param idKurse Die Liste der Datenbank-IDs der Kurse.
*
* @throws DeveloperNotificationException Falls mindestens einer der Kurse nicht zuerst beim Datenmanager entfernt wurde.
*/
setRemoveKurseByID(idKurse: List): void;
/**
* Verschiebt alles SuS von pKursID2delete nach pKursID1keep und
* löscht dann den Kurs mit der ID beim {@link GostBlockungsdatenManager},
* anschließend in diesem Manager.
*
* @param idKursID1keep Die Datenbank-ID des Kurses, der erhalten bleibt.
* @param idKursID2delete Die Datenbank-ID des Kurses, der gelöscht wird.
*/
setMergeKurseByID(idKursID1keep: number, idKursID2delete: number): void;
/**
* Erzeugt einen neuen Kurs2 beim {@link GostBlockungsdatenManager},
* dann bei diesem Manager und
* verschiebt alle SuS des übergebenen Arrays von Kurs1 nach Kurs2.
*
* @param kurs1alt Der Kurs, der gesplittet wird.
* @param kurs2neu Der Kurs, der neu erzeugt wird.
* @param susVon1nach2 Die Datenbank-IDs der Schüler, die verschoben werden sollen.
*/
setSplitKurs(kurs1alt: GostBlockungKurs, kurs2neu: GostBlockungKurs, susVon1nach2: Array): void;
/**
* Verändert die Schienenanzahl eines Kurses. Dies ist nur bei einer Blockungsvorlage erlaubt.
*
* @param idKurs Die Datenbank-ID des Kurses.
* @param anzahlSchienenNeu Die neue Schienenanzahl des Kurses.
*
* @throws DeveloperNotificationException Falls ein unerwarteter Fehler passiert.
*/
patchOfKursSchienenAnzahl(idKurs: number, anzahlSchienenNeu: number): void;
/**
* Informiert den Manager, dass sich bei mindestens einem Kurs die Lehrkraft geändert hat.
* Führt zu einer Revalidierung der Bewertung des Ergebnisses.
*/
patchOfKursLehrkaefteChanged(): void;
private createComparatorFachartKursartFach;
private createComparatorFachartFachKursart;
private createComparatorKursFachKursartNummer;
private createComparatorKursKursartFachNummer;
/**
* Eine Logger-Ausgabe für Debug-Zwecke.
*
* @param logger Ein Logger für Debug-Zwecke.
*/
debug(logger: Logger): void;
/**
* Liefert einen String, der alle Schienen-Fachart-Kurs-Zuordnungen zeigt.
*
* @return einen String, der alle Schienen-Fachart-Kurs-Zuordnungen zeigt.
*/
private debugKursSchienenZuordnungen;
transpilerCanonicalName(): string;
isTranspiledInstanceOf(name: string): boolean;
static class: Class;
}
export declare function cast_de_svws_nrw_core_utils_gost_GostBlockungsergebnisManager(obj: unknown): GostBlockungsergebnisManager;
//# sourceMappingURL=GostBlockungsergebnisManager.d.ts.map