ENMDatenManager.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.cast_de_nrw_schule_svws_core_utils_enm_ENMDatenManager = exports.ENMDatenManager = void 0;
  4. const JavaObject_1 = require("../../../java/lang/JavaObject");
  5. const ENMKlasse_1 = require("../../../core/data/enm/ENMKlasse");
  6. const ENMLeistung_1 = require("../../../core/data/enm/ENMLeistung");
  7. const ENMFach_1 = require("../../../core/data/enm/ENMFach");
  8. const ENMJahrgang_1 = require("../../../core/data/enm/ENMJahrgang");
  9. const HashMap_1 = require("../../../java/util/HashMap");
  10. const ENMLerngruppe_1 = require("../../../core/data/enm/ENMLerngruppe");
  11. const ENMLehrer_1 = require("../../../core/data/enm/ENMLehrer");
  12. const ENMSchueler_1 = require("../../../core/data/enm/ENMSchueler");
  13. const ENMFoerderschwerpunkt_1 = require("../../../core/data/enm/ENMFoerderschwerpunkt");
  14. const ENMDaten_1 = require("../../../core/data/enm/ENMDaten");
  15. const Note_1 = require("../../../core/types/Note");
  16. const ENMNote_1 = require("../../../core/data/enm/ENMNote");
  17. const Foerderschwerpunkt_1 = require("../../../core/types/statkue/Foerderschwerpunkt");
  18. class ENMDatenManager extends JavaObject_1.JavaObject {
  19. daten;
  20. mapLehrer = new HashMap_1.HashMap();
  21. mapSchueler = new HashMap_1.HashMap();
  22. mapFaecher = new HashMap_1.HashMap();
  23. mapJahrgaenge = new HashMap_1.HashMap();
  24. mapKlassen = new HashMap_1.HashMap();
  25. lerngruppenIDZaehler = 1;
  26. mapLerngruppen = new HashMap_1.HashMap();
  27. /**
  28. * Implementation for method overloads of 'constructor'
  29. */
  30. constructor(__param0) {
  31. super();
  32. if ((typeof __param0 === "undefined")) {
  33. this.daten = new ENMDaten_1.ENMDaten();
  34. }
  35. else if (((typeof __param0 !== "undefined") && ((__param0 instanceof JavaObject_1.JavaObject) && (__param0.isTranspiledInstanceOf('de.nrw.schule.svws.core.data.enm.ENMDaten'))))) {
  36. let daten = (0, ENMDaten_1.cast_de_nrw_schule_svws_core_data_enm_ENMDaten)(__param0);
  37. this.daten = daten;
  38. }
  39. else
  40. throw new Error('invalid method overload');
  41. }
  42. /**
  43. * Fügt alle Noten des Core-Type {@link Note} zu dem Noten-Katalog der ENM-Datei hinzu.
  44. */
  45. addNoten() {
  46. if (this.daten.noten.size() > 0)
  47. return;
  48. let noten = Note_1.Note.values();
  49. for (let i = 0; i < noten.length; i++) {
  50. let note = noten[i];
  51. let enmNote = new ENMNote_1.ENMNote();
  52. enmNote.kuerzel = note.kuerzel;
  53. enmNote.notenpunkte = note.notenpunkte;
  54. enmNote.text = note.text;
  55. this.daten.noten.add(enmNote);
  56. }
  57. }
  58. /**
  59. * Fügt alle Förderschwerpunkte des Core-Type {@link Foerderschwerpunkt} zu dem
  60. * Förderschwerpunkt-Katalog der ENM-Datei hinzu.
  61. *
  62. * @param schulform die Schulform, für welche die zulässigen Förderschwerpunkte
  63. * zurückgegeben werden
  64. */
  65. addFoerderschwerpunkte(schulform) {
  66. if (this.daten.foerderschwerpunkte.size() > 0)
  67. return;
  68. let foerderschwerpunkte = Foerderschwerpunkt_1.Foerderschwerpunkt.get(schulform);
  69. for (let i = 0; i < foerderschwerpunkte.size(); i++) {
  70. let foerderschwerpunkt = foerderschwerpunkte.get(i);
  71. let enmFoerderschwerpunkt = new ENMFoerderschwerpunkt_1.ENMFoerderschwerpunkt();
  72. enmFoerderschwerpunkt.kuerzel = foerderschwerpunkt.kuerzel;
  73. enmFoerderschwerpunkt.beschreibung = foerderschwerpunkt.beschreibung;
  74. this.daten.foerderschwerpunkte.add(enmFoerderschwerpunkt);
  75. }
  76. }
  77. /**
  78. * Fügt einen Lehrer hinzu und überprüft dabei, ob der Lehrer schon in der Liste vorhanden ist.
  79. *
  80. * @param id die eindeutige ID des Lehrers
  81. * @param kuerzel das Kürzel des Lehrers
  82. * @param nachname der Nachname des Lehrers
  83. * @param vorname der Vorname des Lehrers
  84. * @param eMailDienstlich die Dienst-Email-Adresse des Lehrers
  85. *
  86. * @return true, falls der Lehrer hinzugefügt wurde, ansonsten false
  87. */
  88. addLehrer(id, kuerzel, nachname, vorname, eMailDienstlich) {
  89. if (this.mapLehrer.get(id) !== null)
  90. return false;
  91. let enmLehrer = new ENMLehrer_1.ENMLehrer();
  92. enmLehrer.id = id;
  93. enmLehrer.kuerzel = kuerzel;
  94. enmLehrer.nachname = nachname;
  95. enmLehrer.vorname = vorname;
  96. enmLehrer.eMailDienstlich = eMailDienstlich;
  97. this.daten.lehrer.add(enmLehrer);
  98. this.mapLehrer.put(id, enmLehrer);
  99. return true;
  100. }
  101. /**
  102. * Fügt einen Schueler hinzu und überprüft dabei, ob der Schueler schon in der Liste vorhanden ist.
  103. *
  104. * @param id die ID des Schülers in der SVWS-DB
  105. * @param jahrgangID die ID des aktuellen Jahrgangs, in dem sich der Schüler befindet
  106. * @param klasseID die ID der aktuellen Klasse, in der sich der Schüler befindet
  107. * @param nachname der Nachname des Schülers (z.B. Mustermann)
  108. * @param vorname der Vorname des Schülers (z.B. Max)
  109. * @param geschlecht das Geschlecht des Schülers
  110. * @param bilingualeSprache gibt an, ob sich der Schüler aktuell im bilingualen Bildungsgang befindet
  111. * (wenn ja, z.B. F) oder nicht (null)
  112. * @param istZieldifferent gibt an, ob der Schüler Ziel-different unterrichtet wird
  113. * @param istDaZFoerderung gibt an, ob der Schüler Deutsch-Förderung mit Deutsch als Zweitsprache (DaZ)
  114. * bekommt (Seiteneinsteiger, z.B. Flüchtlingskinder)
  115. *
  116. * @return true, falls der Schueler hinzugefügt wurde, ansonsten false
  117. */
  118. addSchueler(id, jahrgangID, klasseID, nachname, vorname, geschlecht, bilingualeSprache, istZieldifferent, istDaZFoerderung) {
  119. if (this.mapSchueler.get(id) !== null)
  120. return false;
  121. let enmSchueler = new ENMSchueler_1.ENMSchueler();
  122. enmSchueler.id = id;
  123. enmSchueler.jahrgangID = jahrgangID;
  124. enmSchueler.nachname = nachname;
  125. enmSchueler.vorname = vorname;
  126. enmSchueler.geschlecht = geschlecht.kuerzel;
  127. enmSchueler.bilingualeSprache = bilingualeSprache;
  128. enmSchueler.istZieldifferent = istZieldifferent;
  129. enmSchueler.istDaZFoerderung = istDaZFoerderung;
  130. this.daten.schueler.add(enmSchueler);
  131. this.mapSchueler.put(id, enmSchueler);
  132. return true;
  133. }
  134. /**
  135. * Fügt ein Fach hinzu und überprüft dabei, ob das Fach schon in der Liste vorhanden ist.
  136. *
  137. * @param id die eindeutige ID des Faches
  138. * @param kuerzel das Kürzel des Faches, wie es im Rahmen der amtlichen Schulstatistik verwendet wird. (z.B. D)
  139. * @param kuerzelAnzeige das Kürzel des Faches, wie es im Rahmen der Schule benannt wird und angezeigt werden soll. (z.B. D)
  140. * @param sortierung die Reihenfolge des Faches bei der Sortierung der Fächer. (z.B. 37)
  141. * @param istFremdsprache gibt an, ob es sich bei dem Fach um eine Fremdsprache handelt oder nicht
  142. *
  143. * @return true, falls das Fach hinzugefügt wurde, ansonsten false
  144. */
  145. addFach(id, kuerzel, kuerzelAnzeige, sortierung, istFremdsprache) {
  146. if (this.mapFaecher.get(id) !== null)
  147. return false;
  148. let enmFach = new ENMFach_1.ENMFach();
  149. enmFach.id = id;
  150. enmFach.kuerzel = kuerzel;
  151. enmFach.kuerzelAnzeige = kuerzelAnzeige;
  152. enmFach.sortierung = sortierung;
  153. enmFach.istFremdsprache = istFremdsprache;
  154. this.daten.faecher.add(enmFach);
  155. this.mapFaecher.put(id, enmFach);
  156. return true;
  157. }
  158. /**
  159. * Fügt einen Jahrgang hinzu und überprüft dabei, ob der Jahrgang schon in der Liste vorhanden ist.
  160. *
  161. * @param id die eindeutige ID des Jahrganges
  162. * @param kuerzel das Kürzel des Jahrgangs, wie es im Rahmen der amtlichen Schulstatistik verwendet wird. (z.B. EF)
  163. * @param kuerzelAnzeige das Kürzel des Jahrgangs, wie es im Rahmen der Schule benannt wird und angezeigt werden soll. (z.B. EF)
  164. * @param beschreibung die textuelle Bezeichnung des Jahrgangs. (z.B. Einführungsphase)
  165. * @param stufe die Stufe des Jahrgangs. (z.B. PR, SI, nur Berufskolleg: SII, Berufskolleg Anlage D und GOSt: SII-1, SII-2, SII-3)
  166. * @param sortierung die Reihenfolge des Jahrgangs bei der Sortierung der Jahrgänge. (z.B. 8)
  167. *
  168. * @return true, falls der Jahrgang hinzugefügt wurde, ansonsten false
  169. */
  170. addJahrgang(id, kuerzel, kuerzelAnzeige, beschreibung, stufe, sortierung) {
  171. if (this.mapJahrgaenge.get(id) !== null)
  172. return false;
  173. let enmJahrgang = new ENMJahrgang_1.ENMJahrgang();
  174. enmJahrgang.id = id;
  175. enmJahrgang.kuerzel = kuerzel;
  176. enmJahrgang.kuerzelAnzeige = kuerzelAnzeige;
  177. enmJahrgang.beschreibung = beschreibung;
  178. enmJahrgang.stufe = stufe;
  179. enmJahrgang.sortierung = sortierung;
  180. this.daten.jahrgaenge.add(enmJahrgang);
  181. this.mapJahrgaenge.put(id, enmJahrgang);
  182. return true;
  183. }
  184. /**
  185. * Fügt eine Klasse hinzu und überprüft dabei, ob die Klasse schon in der Liste vorhanden ist.
  186. *
  187. * @param id die eindeutige ID der Klasse
  188. * @param kuerzel das Kürzel der Klasse, wie es im Rahmen der amtlichen Schulstatistik verwendet wird. (z.B. EF)
  189. * @param kuerzelAnzeige das Kürzel der Klasse, wie es im Rahmen der Schule benannt wird und angezeigt werden soll. (z.B. EF)
  190. * @param sortierung die Reihenfolge der Klasse bei der Sortierung der Klassen. (z.B. 8)
  191. *
  192. * @return true, falls die Klasse hinzugefügt wurde, ansonsten false
  193. */
  194. addKlasse(id, kuerzel, kuerzelAnzeige, sortierung) {
  195. if (this.mapKlassen.get(id) !== null)
  196. return false;
  197. let enmKlasse = new ENMKlasse_1.ENMKlasse();
  198. enmKlasse.id = id;
  199. enmKlasse.kuerzel = kuerzel;
  200. enmKlasse.kuerzelAnzeige = kuerzelAnzeige;
  201. enmKlasse.sortierung = sortierung;
  202. this.daten.klassen.add(enmKlasse);
  203. this.mapKlassen.put(id, enmKlasse);
  204. return true;
  205. }
  206. /**
  207. * Liefert das ENM-Lehrer-Objekt für die angegebene Lehrer-ID zurück,
  208. * sofern die Lehrer über die Methode {@link ENMDatenManager#addLehrer(long, String, String, String, String)}
  209. * hinzugefügt wurden.
  210. *
  211. * @param id die ID des Lehrers
  212. *
  213. * @return das ENM-Lehrer-Objekt
  214. */
  215. getLehrer(id) {
  216. return this.mapLehrer.get(id);
  217. }
  218. /**
  219. * Liefert das ENM-Schüler-Objekt für die angegebene Schüler-ID zurück,
  220. * sofern die Schüler über die Methode {@link ENMDatenManager#addSchueler(long, long, long, String, String, Geschlecht, String, boolean, boolean)}
  221. * hinzugefügt wurden.
  222. *
  223. * @param id die ID des Schülers
  224. *
  225. * @return das ENM-Schüler-Objekt
  226. */
  227. getSchueler(id) {
  228. return this.mapSchueler.get(id);
  229. }
  230. /**
  231. * Liefert das ENM-Fächer-Objekt für die angegebene Fächer-ID zurück,
  232. * sofern die Fächer über die Methode {@link ENMDatenManager#addFach(long, String, String, int, boolean)}
  233. * hinzugefügt wurden.
  234. *
  235. * @param id die ID des Faches
  236. *
  237. * @return das ENM-Fächer-Objekt
  238. */
  239. getFach(id) {
  240. return this.mapFaecher.get(id);
  241. }
  242. /**
  243. * Liefert das ENM-Jahrgänge-Objekt für die angegebene Jahrgangs-ID zurück,
  244. * sofern die Jahrgänge über die Methode {@link ENMDatenManager#addJahrgang(long, String, String, String, String, int)}
  245. * hinzugefügt wurden.
  246. *
  247. * @param id die ID des Jahrgangs
  248. *
  249. * @return das ENM-Jahrgänge-Objekt
  250. */
  251. getJahrgang(id) {
  252. return this.mapJahrgaenge.get(id);
  253. }
  254. /**
  255. * Liefert das ENM-Klassen-Objekt für die angegebene Klassen-ID zurück,
  256. * sofern die Klassen über die Methode {@link ENMDatenManager#addKlasse(long, String, String, int)}
  257. * hinzugefügt wurden.
  258. *
  259. * @param id die ID der Klasse
  260. *
  261. * @return das ENM-Klassen-Objekt
  262. */
  263. getKlasse(id) {
  264. return this.mapKlassen.get(id);
  265. }
  266. /**
  267. * Fügt eine neue Lerngruppe mit den angegebenen Parametern hinzu, falls sie noch nicht existiert. Die strID ist dabei
  268. * eine temporäre ID, die nur bei der Erstellung von ENMLerngruppen auf Serverseite genutzt wird.
  269. *
  270. * @param strID die temporäre ID der Lerngruppe, um festzustellen, ob es diese Lerngruppe bereits gibt.
  271. * @param kID die ID der Lerngruppe (Klasse oder Kurs) in der SVWS-DB
  272. * @param fachID die ID des Faches der Lerngruppe.
  273. * @param kursartID gibt die ID der Kursart an. Ist dieser Wert null, so handelt es sich um Klassen-Unterricht
  274. * @param bezeichnung die Bezeichnung der Lerngruppe (z.B. D-GK4)
  275. * @param kursartKuerzel das Kürzel der (allgemeinen) Kursart (z.B. GK)
  276. * @param bilingualeSprache das einstellige Kürzel der bilingualen Sprache, sofern es sich um eine bilinguale
  277. * Lerngruppe handelt. (z.B. F)
  278. * @param wochenstunden die Anzahl der Wochenstunden, falls es sich um einen Kurs handelt.
  279. */
  280. addLerngruppe(strID, kID, fachID, kursartID, bezeichnung, kursartKuerzel, bilingualeSprache, wochenstunden) {
  281. if (this.mapLerngruppen.get(strID) !== null)
  282. return;
  283. let lerngruppe = new ENMLerngruppe_1.ENMLerngruppe();
  284. lerngruppe.id = this.lerngruppenIDZaehler++;
  285. lerngruppe.kID = kID;
  286. lerngruppe.fachID = fachID;
  287. lerngruppe.kursartID = kursartID;
  288. lerngruppe.bezeichnung = bezeichnung;
  289. lerngruppe.kursartKuerzel = kursartKuerzel;
  290. lerngruppe.bilingualeSprache = bilingualeSprache;
  291. lerngruppe.wochenstunden = wochenstunden;
  292. this.mapLerngruppen.put(strID, lerngruppe);
  293. this.daten.lerngruppen.add(lerngruppe);
  294. }
  295. /**
  296. * Liefert die Lerngruppe mit der übergebenen (temporären) ID zurück.
  297. *
  298. * @param strID die temporäre ID der Lerngruppe, um festzustellen, ob es diese Lerngruppe bereits gibt.
  299. *
  300. * @return die Lerngruppe
  301. */
  302. getLerngruppe(strID) {
  303. return this.mapLerngruppen.get(strID);
  304. }
  305. /**
  306. * Fügt die Klassenlehrer zu der List der Klassenlehrer bei einem Schüler hinzu
  307. *
  308. * @param schueler der Schüler
  309. * @param klassenlehrerIDs die IDs der Klassenlehrer
  310. */
  311. addSchuelerKlassenlehrer(schueler, ...klassenlehrerIDs) {
  312. }
  313. /**
  314. * Fügt eine Sprache mit den übergebenen Informationen zu der Sprachenfolge eines Schülers hinzu.
  315. *
  316. * @param schueler der Schüler
  317. * @param sprache das Kürzel der Sprache, bereinigt von dem Jahrgang, in dem die Sprache eingesetzt hat
  318. * @param fachID die ID des Faches
  319. * @param fachKuerzel das Kürzel des Faches
  320. * @param reihenfolge die Reihenfolge des Faches in der Sprachenfolge (Beispiel 1)
  321. * @param belegungVonJahrgang die Information, ab welchem Jahrgang die Sprache belegt wurde (Beispiel 5)
  322. * @param belegungVonAbschnitt die Information, ab welchem Abschnitt in dem Jahrgang die Sprache belegt wurde (Beispiel 1)
  323. * @param belegungBisJahrgang die Information, bis zu welchem Jahrgang die Sprache belegt wurde (Beispiel 12), sofern die Sprache bereits abgeschlossen ist
  324. * @param belegungBisAbschnitt die Information, bis zu welchem Abschnitt in dem Jahrgang die Sprache belegt wurde (Beispiel 2), sofern die Sprache bereits abgeschlossen ist
  325. * @param referenzniveau die Bezeichnung des Sprachreferenzniveaus, welches bisher erreicht wurde (z.B. B2/C1)
  326. * @param belegungSekI die Mindest-Dauer der Belegung in der Sekundarstufe I gemäß den Stufen im Core-Type SprachBelegungSekI (z.B. 0, 2, 4, 6)
  327. */
  328. addSchuelerSprachenfolge(schueler, sprache, fachID, fachKuerzel, reihenfolge, belegungVonJahrgang, belegungVonAbschnitt, belegungBisJahrgang, belegungBisAbschnitt, referenzniveau, belegungSekI) {
  329. }
  330. /**
  331. * Fügt die Leistungsdaten mit den übergebenen Informationen zu den Leistungsdaten eines Schülers hinzu
  332. *
  333. * @param schueler der Schüler
  334. * @param leistungID die ID der Leistungsdaten des Schülers in der SVWS-DB (z.B. 307956)
  335. * @param lerngruppenID die eindeutige ID der Lerngruppe, der der Schüler zugeordnet ist.
  336. * (Klasse oder Kurs wird erst in der Lerngruppe unterschieden!)
  337. * @param note das Kürzel der Note, die vergeben wurde
  338. * @param istSchriftlich gibt an, ob das Fach schriftlich belegt wurde oder nicht
  339. * @param abiturfach gibt an, ob es sich um ein Abitufach handelt (1,2,3 oder 4) oder nicht (null)
  340. * @param fehlstundenGesamt gibt die Anzahl der gesamten Fehlstunden an, sofern diese fachbezogen ermittel werden
  341. * @param fehlstundenUnentschuldigt gibt die Anzahl der unentschuldigten Fehlstunden an, sofern diese fachbezogen ermittel werden
  342. * @param fachbezogeneBemerkungen die fachbezogenen Bemerkungen bzw. das Thema bei Projektkursen
  343. * @param neueZuweisungKursart die Kurszuweisung, die auf dem Zeugnis erscheinen soll für den nächsten Kursabschnitt
  344. * (z.B. E oder G-Kurs, z.B. an der Gesamtschule)
  345. */
  346. addSchuelerLeistungsdaten(schueler, leistungID, lerngruppenID, note, istSchriftlich, abiturfach, fehlstundenGesamt, fehlstundenUnentschuldigt, fachbezogeneBemerkungen, neueZuweisungKursart) {
  347. let enmLeistung = new ENMLeistung_1.ENMLeistung();
  348. enmLeistung.id = leistungID;
  349. enmLeistung.lerngruppenID = lerngruppenID;
  350. enmLeistung.note = note;
  351. enmLeistung.istSchriftlich = istSchriftlich;
  352. enmLeistung.abiturfach = abiturfach;
  353. enmLeistung.fehlstundenGesamt = fehlstundenGesamt;
  354. enmLeistung.fehlstundenUnentschuldigt = fehlstundenUnentschuldigt;
  355. enmLeistung.fachbezogeneBemerkungen = fachbezogeneBemerkungen;
  356. enmLeistung.neueZuweisungKursart = neueZuweisungKursart;
  357. schueler.leistungsdaten.add(enmLeistung);
  358. }
  359. /**
  360. * Fügt die Teilleistung mit den übergebenen Angaben zu übergebenen Leistungsdaten
  361. * eines Schülers hinzu.
  362. *
  363. * @param leistung die Leistungsdaten eines Schülers
  364. * @param id die ID der Teilleistung
  365. * @param artID die ID der Art von Teileistungen
  366. * @param datum das Datum, welches dem Erbringen der Teilleistung zuzuordnen ist (z.B. Klausurdatum)
  367. * @param bemerkung ggf. eine Bemerkung zu der Teilleistung
  368. * @param notenKuerzel das Notenkürzel, welches der Teilleistung zuzuordnen ist.
  369. */
  370. addSchuelerTeilleistung(leistung, id, artID, datum, bemerkung, notenKuerzel) {
  371. }
  372. isTranspiledInstanceOf(name) {
  373. return ['de.nrw.schule.svws.core.utils.enm.ENMDatenManager'].includes(name);
  374. }
  375. }
  376. exports.ENMDatenManager = ENMDatenManager;
  377. function cast_de_nrw_schule_svws_core_utils_enm_ENMDatenManager(obj) {
  378. return obj;
  379. }
  380. exports.cast_de_nrw_schule_svws_core_utils_enm_ENMDatenManager = cast_de_nrw_schule_svws_core_utils_enm_ENMDatenManager;
  381. //# sourceMappingURL=ENMDatenManager.js.map