KurszahlenUndWochenstunden.ts 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490
  1. import { JavaObject, cast_java_lang_Object } from '../../../../java/lang/JavaObject';
  2. import { GostFach, cast_de_nrw_schule_svws_core_data_gost_GostFach } from '../../../../core/data/gost/GostFach';
  3. import { HashMap, cast_java_util_HashMap } from '../../../../java/util/HashMap';
  4. import { AbiturFachbelegung, cast_de_nrw_schule_svws_core_data_gost_AbiturFachbelegung } from '../../../../core/data/gost/AbiturFachbelegung';
  5. import { GostBelegpruefungsArt, cast_de_nrw_schule_svws_core_abschluss_gost_GostBelegpruefungsArt } from '../../../../core/abschluss/gost/GostBelegpruefungsArt';
  6. import { AbiturFachbelegungHalbjahr, cast_de_nrw_schule_svws_core_data_gost_AbiturFachbelegungHalbjahr } from '../../../../core/data/gost/AbiturFachbelegungHalbjahr';
  7. import { GostBelegpruefung, cast_de_nrw_schule_svws_core_abschluss_gost_GostBelegpruefung } from '../../../../core/abschluss/gost/GostBelegpruefung';
  8. import { AbiturdatenManager, cast_de_nrw_schule_svws_core_abschluss_gost_AbiturdatenManager } from '../../../../core/abschluss/gost/AbiturdatenManager';
  9. import { GostKursart, cast_de_nrw_schule_svws_core_types_gost_GostKursart } from '../../../../core/types/gost/GostKursart';
  10. import { Projektkurse, cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_Projektkurse } from '../../../../core/abschluss/gost/belegpruefung/Projektkurse';
  11. import { JavaInteger, cast_java_lang_Integer } from '../../../../java/lang/JavaInteger';
  12. import { GostFachbereich, cast_de_nrw_schule_svws_core_types_gost_GostFachbereich } from '../../../../core/types/gost/GostFachbereich';
  13. import { NullPointerException, cast_java_lang_NullPointerException } from '../../../../java/lang/NullPointerException';
  14. import { Note, cast_de_nrw_schule_svws_core_types_Note } from '../../../../core/types/Note';
  15. import { GostHalbjahr, cast_de_nrw_schule_svws_core_types_gost_GostHalbjahr } from '../../../../core/types/gost/GostHalbjahr';
  16. import { Collection, cast_java_util_Collection } from '../../../../java/util/Collection';
  17. import { List, cast_java_util_List } from '../../../../java/util/List';
  18. import { GostBelegungsfehler, cast_de_nrw_schule_svws_core_abschluss_gost_GostBelegungsfehler } from '../../../../core/abschluss/gost/GostBelegungsfehler';
  19. export class KurszahlenUndWochenstunden extends GostBelegpruefung {
  20. private kurszahlen : HashMap<GostHalbjahr, HashMap<GostKursart, Number>> | null = null;
  21. private kurszahlenGrundkurse : HashMap<GostHalbjahr, Number> | null = null;
  22. private kurszahlenLeistungskurse : HashMap<GostHalbjahr, Number> | null = null;
  23. private kurszahlenAnrechenbar : HashMap<GostHalbjahr, Number> | null = null;
  24. private kurszahlenEinfuehrungsphase : HashMap<GostKursart, Number> | null = null;
  25. private kurszahlenQualifikationsphase : HashMap<GostKursart, Number> | null = null;
  26. private blockIAnzahlGrundkurse : number = 0;
  27. private anzahlLKFaecher : number = 0;
  28. private blockIAnzahlLeistungskurse : number = 0;
  29. private blockIAnzahlAnrechenbar : number = 0;
  30. private wochenstunden : HashMap<GostHalbjahr, Number> | null = null;
  31. private wochenstundenEinfuehrungsphase : number = 0;
  32. private wochenstundenQualifikationsphase : number = 0;
  33. /**
  34. * Erstellt eine neue Belegprüfung für die Kurszahlen.
  35. *
  36. * @param manager der Daten-Manager für die Abiturdaten
  37. * @param pruefungs_art die Art der durchzuführenden Prüfung (z.B. EF.1 oder GESAMT)
  38. * @param pruefungProjektkurse das Ergebnis für die Belegprüfung der Projektkurse
  39. */
  40. public constructor(manager : AbiturdatenManager, pruefungs_art : GostBelegpruefungsArt, pruefungProjektkurse : GostBelegpruefung) {
  41. super(manager, pruefungs_art, pruefungProjektkurse);
  42. }
  43. protected init() : void {
  44. this.kurszahlen = new HashMap();
  45. this.kurszahlenGrundkurse = new HashMap();
  46. this.kurszahlenLeistungskurse = new HashMap();
  47. this.kurszahlenAnrechenbar = new HashMap();
  48. this.kurszahlenEinfuehrungsphase = new HashMap();
  49. this.kurszahlenQualifikationsphase = new HashMap();
  50. this.blockIAnzahlGrundkurse = 0;
  51. this.anzahlLKFaecher = 0;
  52. this.blockIAnzahlLeistungskurse = 0;
  53. this.blockIAnzahlAnrechenbar = 0;
  54. this.wochenstunden = new HashMap();
  55. this.wochenstundenEinfuehrungsphase = 0;
  56. this.wochenstundenQualifikationsphase = 0;
  57. let projektkurse : Projektkurse = (cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_Projektkurse(this.pruefungen_vorher[0]));
  58. let kursarten : Collection<GostKursart> = GostKursart.values();
  59. for (let halbjahr of GostHalbjahr.values()) {
  60. let kurszahlenHalbjahr : HashMap<GostKursart, Number> = new HashMap();
  61. this.kurszahlen.put(halbjahr, kurszahlenHalbjahr);
  62. for (let kursart of kursarten) {
  63. kurszahlenHalbjahr.put(kursart, 0);
  64. }
  65. this.kurszahlenGrundkurse.put(halbjahr, 0);
  66. this.kurszahlenLeistungskurse.put(halbjahr, 0);
  67. this.kurszahlenAnrechenbar.put(halbjahr, 0);
  68. this.wochenstunden.put(halbjahr, 0);
  69. }
  70. for (let kursart of kursarten) {
  71. this.kurszahlenEinfuehrungsphase.put(kursart, 0);
  72. this.kurszahlenQualifikationsphase.put(kursart, 0);
  73. }
  74. let alleFachbelegungen : List<AbiturFachbelegung> = this.manager.getFachbelegungen();
  75. for (let i : number = 0; i < alleFachbelegungen.size(); i++){
  76. let fachbelegung : AbiturFachbelegung | null = alleFachbelegungen.get(i);
  77. let fach : GostFach | null = this.manager.getFach(fachbelegung);
  78. let istLKFach : boolean = false;
  79. for (let fachbelegungHalbjahr of fachbelegung.belegungen) {
  80. if (fachbelegungHalbjahr === null)
  81. continue;
  82. if (GostFachbereich.SPORT.hat(fach) && JavaObject.equalsTranspiler(Note.ATTEST, (Note.fromKuerzel(fachbelegungHalbjahr.notenkuerzel))))
  83. continue;
  84. let halbjahr : GostHalbjahr | null = GostHalbjahr.fromKuerzel(fachbelegungHalbjahr.halbjahrKuerzel);
  85. if (halbjahr === null)
  86. continue;
  87. let kursart : GostKursart | null = GostKursart.fromKuerzel(fachbelegungHalbjahr.kursartKuerzel);
  88. if (kursart === null)
  89. continue;
  90. let kurszahlenHalbjahr : HashMap<GostKursart, Number> | null = this.kurszahlen.get(halbjahr);
  91. if (kurszahlenHalbjahr === null)
  92. kurszahlenHalbjahr = new HashMap();
  93. let kurszahlAlt : Number | null = kurszahlenHalbjahr.get(kursart);
  94. kurszahlenHalbjahr.put(kursart, kurszahlAlt === null ? 1 : kurszahlAlt.valueOf() + 1);
  95. if ((kursart as unknown === GostKursart.GK as unknown) || (halbjahr.istQualifikationsphase() && ((kursart as unknown === GostKursart.ZK as unknown) || ((kursart as unknown === GostKursart.PJK as unknown) && (projektkurse.istAnrechenbar(fachbelegungHalbjahr)))))) {
  96. let kurszahlGK : Number | null = this.kurszahlenGrundkurse.get(halbjahr);
  97. this.kurszahlenGrundkurse.put(halbjahr, kurszahlGK === null ? 1 : kurszahlGK.valueOf() + 1);
  98. let kurszahlAnrechenbar : Number | null = this.kurszahlenAnrechenbar.get(halbjahr);
  99. this.kurszahlenAnrechenbar.put(halbjahr, kurszahlAnrechenbar === null ? 1 : kurszahlAnrechenbar.valueOf() + 1);
  100. if (halbjahr.istQualifikationsphase()) {
  101. this.blockIAnzahlGrundkurse++;
  102. this.blockIAnzahlAnrechenbar++;
  103. }
  104. }
  105. if (halbjahr.istQualifikationsphase() && (kursart as unknown === GostKursart.LK as unknown)) {
  106. istLKFach = true;
  107. let kurszahlLK : Number | null = this.kurszahlenLeistungskurse.get(halbjahr);
  108. this.kurszahlenLeistungskurse.put(halbjahr, kurszahlLK === null ? 1 : kurszahlLK.valueOf() + 1);
  109. let kurszahlAnrechenbar : Number | null = this.kurszahlenAnrechenbar.get(halbjahr);
  110. this.kurszahlenAnrechenbar.put(halbjahr, kurszahlAnrechenbar === null ? 1 : kurszahlAnrechenbar.valueOf() + 1);
  111. this.blockIAnzahlLeistungskurse++;
  112. this.blockIAnzahlAnrechenbar++;
  113. }
  114. let stunden : number = 0;
  115. switch (kursart.kuerzel) {
  116. case "GK":
  117. stunden = ((fach !== null) && fach.istFremdSpracheNeuEinsetzend) ? 4 : 3;
  118. break;
  119. case "LK":
  120. stunden = 5;
  121. break;
  122. case "PJK":
  123. stunden = (fachbelegungHalbjahr.wochenstunden === 3) ? 3 : 2;
  124. break;
  125. case "VTF":
  126. stunden = 2;
  127. break;
  128. case "ZK":
  129. stunden = 3;
  130. break;
  131. }
  132. let wochenstundenAlt : Number | null = this.wochenstunden.get(halbjahr);
  133. this.wochenstunden.put(halbjahr, wochenstundenAlt === null ? stunden : wochenstundenAlt.valueOf() + stunden);
  134. if (halbjahr.istEinfuehrungsphase()) {
  135. let kurszahlEF : Number | null = this.kurszahlenEinfuehrungsphase.get(kursart);
  136. this.kurszahlenEinfuehrungsphase.put(kursart, kurszahlEF === null ? 1 : kurszahlEF.valueOf() + 1);
  137. this.wochenstundenEinfuehrungsphase += stunden;
  138. } else {
  139. let kurszahlQ : Number | null = this.kurszahlenQualifikationsphase.get(kursart);
  140. this.kurszahlenQualifikationsphase.put(kursart, kurszahlQ === null ? 1 : kurszahlQ.valueOf() + 1);
  141. this.wochenstundenQualifikationsphase += stunden;
  142. }
  143. }
  144. if (istLKFach)
  145. this.anzahlLKFaecher++;
  146. }
  147. }
  148. protected pruefeEF1() : void {
  149. this.pruefeGrundkurseEF1();
  150. this.pruefeWochenstundenEF1();
  151. }
  152. /**
  153. * EF1-Prüfung Punkt 21:
  154. * Prüfe, ob zu wenige Grundkurse (ohne Vertiefungskurse) in der EF belegt wurden,
  155. * dh. weniger als 10 Kurse
  156. */
  157. private pruefeGrundkurseEF1() : void {
  158. if (this.kurszahlenGrundkurse === null)
  159. throw new NullPointerException()
  160. let kurszahlGK : Number | null = this.kurszahlenGrundkurse.get(GostHalbjahr.EF1);
  161. if ((kurszahlGK === null) || (kurszahlGK < 10))
  162. this.addFehler(GostBelegungsfehler.ANZ_10);
  163. }
  164. /**
  165. * EF1-Prüfung Punkt 22:
  166. * Prüfe, ob die Summe der Kursstunden in der EF.1 größer oder gleich 32 und kleiner oder gleich 36 ist.
  167. */
  168. private pruefeWochenstundenEF1() : void {
  169. if (this.wochenstunden === null)
  170. throw new NullPointerException()
  171. let stunden : Number | null = this.wochenstunden.get(GostHalbjahr.EF1);
  172. if ((stunden === null) || (stunden < 32) || (stunden > 36))
  173. this.addFehler(GostBelegungsfehler.ANZ_11_INFO);
  174. }
  175. protected pruefeGesamt() : void {
  176. this.pruefeGrundkurseEF();
  177. this.pruefeGrundkurseQ();
  178. this.pruefeLeistungskurse();
  179. this.pruefeVertiefungskurseEF();
  180. this.pruefeWochenstunden();
  181. this.pruefeVertiefungskurseQ();
  182. this.pruefeAnrechenbareKurse();
  183. this.pruefeKursstundenSummen();
  184. }
  185. /**
  186. * Gesamtprüfung Punkt 58:
  187. * Prüfe, ob zu wenige Grundkurse (ohne Vertiefungskurse) in der EF belegt wurden,
  188. * dh. weniger als 10 Kurse
  189. */
  190. private pruefeGrundkurseEF() : void {
  191. if (this.kurszahlenGrundkurse === null)
  192. throw new NullPointerException()
  193. let kurszahlGK_EF1 : Number | null = this.kurszahlenGrundkurse.get(GostHalbjahr.EF1);
  194. let kurszahlGK_EF2 : Number | null = this.kurszahlenGrundkurse.get(GostHalbjahr.EF2);
  195. if ((kurszahlGK_EF1 === null) || (kurszahlGK_EF1 < 10) || (kurszahlGK_EF2 === null) || (kurszahlGK_EF2 < 10))
  196. this.addFehler(GostBelegungsfehler.ANZ_10);
  197. }
  198. /**
  199. * Gesamtprüfung Punkt 59:
  200. * Prüfe, ob in jedem Halbjahr die Summe der Kursstunden größer oder gleich 32 und kleiner oder gleich 36 ist.
  201. */
  202. private pruefeWochenstunden() : void {
  203. if (this.wochenstunden === null)
  204. throw new NullPointerException()
  205. for (let halbjahr of GostHalbjahr.values()) {
  206. let stunden : Number | null = this.wochenstunden.get(halbjahr);
  207. if ((stunden === null) || (stunden < 32) || (stunden > 36))
  208. this.addFehler(GostBelegungsfehler.ANZ_11_INFO);
  209. }
  210. }
  211. /**
  212. * Gesamtprüfung Punkt 61:
  213. * Prüfe, ob in den Halbjahren der Qualifikationsphase mindestens 7 Grundkurse belegt wurden.
  214. * Dazu zählen auch Zusatzkurse sowie solche Projektkurse, die 2 Halbjahre belegt wurden
  215. * und zu keiner besonderen Lernleistung zählen.
  216. */
  217. private pruefeGrundkurseQ() : void {
  218. if (this.kurszahlenGrundkurse === null)
  219. throw new NullPointerException()
  220. for (let halbjahr of GostHalbjahr.getQualifikationsphase()) {
  221. let kurszahlGK : Number | null = this.kurszahlenGrundkurse.get(halbjahr);
  222. if ((kurszahlGK === null) || (kurszahlGK < 7))
  223. this.addFehler(GostBelegungsfehler.GKS_10);
  224. }
  225. }
  226. /**
  227. * Gesamtprüfung Punkt 60 und 75:
  228. * Wurden in der Qualifikationsphase in jedem Halbjahr zwei LKs belegt in insgesamt genau 2 Fächern.
  229. */
  230. private pruefeLeistungskurse() : void {
  231. if (this.anzahlLKFaecher !== 2)
  232. this.addFehler(GostBelegungsfehler.LK_10);
  233. if (this.kurszahlenLeistungskurse === null)
  234. throw new NullPointerException()
  235. for (let halbjahr of GostHalbjahr.getQualifikationsphase()) {
  236. let kurszahlLK : Number | null = this.kurszahlenLeistungskurse.get(halbjahr);
  237. if ((kurszahlLK !== null) && (kurszahlLK > 2))
  238. this.addFehler(GostBelegungsfehler.LK_11);
  239. }
  240. }
  241. /**
  242. * Gesamtprüfung Punkt 62:
  243. * Ist die Summe aller belegten Vertiefungskurse in der EF kleiner gleich 4?
  244. */
  245. private pruefeVertiefungskurseEF() : void {
  246. if (this.kurszahlenEinfuehrungsphase === null)
  247. throw new NullPointerException()
  248. let kurszahlEF_VTF : Number | null = this.kurszahlenEinfuehrungsphase.get(GostKursart.VTF);
  249. if ((kurszahlEF_VTF !== null) && (kurszahlEF_VTF > 4))
  250. this.addFehler(GostBelegungsfehler.VF_10);
  251. }
  252. /**
  253. * Gesamtprüfung Punkt 63:
  254. * Ist die Summe aller belegten Vertiefungskurse in der Qualifikationsphase kleiner gleich 2?
  255. */
  256. private pruefeVertiefungskurseQ() : void {
  257. if (this.kurszahlenQualifikationsphase === null)
  258. throw new NullPointerException()
  259. let kurszahlQ_VTF : Number | null = this.kurszahlenQualifikationsphase.get(GostKursart.VTF);
  260. if ((kurszahlQ_VTF !== null) && (kurszahlQ_VTF > 2))
  261. this.addFehler(GostBelegungsfehler.VF_11);
  262. }
  263. /**
  264. * Gesamtprüfung Punkt 69:
  265. * Ist die Anzahl anrechenbarer Kurse für Block I des Abiturs (Qualifikationsphase) größer gleich 38?
  266. */
  267. private pruefeAnrechenbareKurse() : void {
  268. if (this.blockIAnzahlAnrechenbar < 38)
  269. this.addFehler(GostBelegungsfehler.ANZ_12);
  270. }
  271. /**
  272. * Gesamtprüfung Punkte 80-82:
  273. * Prüfe, ob die Summe der durschnittlichen Kursstunden der 3 Jahre größer oder gleich 100 bzw. 102 ist
  274. * und ob die durchschnittliche Summe der Kurstunden in der Einführungsphase under Qualifikationsphase
  275. * größer oder gleich 34 ist.
  276. */
  277. private pruefeKursstundenSummen() : void {
  278. if (this.wochenstundenEinfuehrungsphase / 2.0 < 34.0)
  279. this.addFehler(GostBelegungsfehler.WST_20);
  280. if (this.wochenstundenQualifikationsphase / 4.0 < 34.0)
  281. this.addFehler(GostBelegungsfehler.WST_21);
  282. let summeKursstundenDurchschnitte : number = (this.wochenstundenEinfuehrungsphase / 2.0) + (this.wochenstundenQualifikationsphase / 4.0) * 2.0;
  283. if (summeKursstundenDurchschnitte < 102) {
  284. if (summeKursstundenDurchschnitte < 100) {
  285. this.addFehler(GostBelegungsfehler.STD_10);
  286. } else {
  287. this.addFehler(GostBelegungsfehler.STD_11_INFO);
  288. }
  289. }
  290. }
  291. /**
  292. * Gibt die Kurszahlen für das Halbjahr und die Kursart zurück.
  293. *
  294. * @param halbjahr das Halbjahr
  295. * @param kursart die Kursart
  296. *
  297. * @return die Kurszahlen
  298. */
  299. public getKurszahlen(halbjahr : GostHalbjahr, kursart : GostKursart) : number {
  300. if (this.kurszahlen === null)
  301. return 0;
  302. let kurszahlenHalbjahr : HashMap<GostKursart, Number> | null = this.kurszahlen.get(halbjahr);
  303. if (kurszahlenHalbjahr === null)
  304. return 0;
  305. let kurszahl : Number | null = kurszahlenHalbjahr.get(kursart);
  306. if (kurszahl === null)
  307. return 0;
  308. return kurszahl.valueOf();
  309. }
  310. /**
  311. * Gibt die Kurszahlen für die Grundkurse für das angegebene Halbjahr zurück.
  312. *
  313. * @param halbjahr das Halbjahr
  314. *
  315. * @return die Kurszahlen
  316. */
  317. public getKurszahlenGrundkurse(halbjahr : GostHalbjahr) : number {
  318. if (this.kurszahlenGrundkurse === null)
  319. return 0;
  320. let kurszahl : Number | null = this.kurszahlenGrundkurse.get(halbjahr);
  321. if (kurszahl === null)
  322. return 0;
  323. return kurszahl.valueOf();
  324. }
  325. /**
  326. * Gibt die Kurszahlen für die Leistungskurse für das angegebene Halbjahr zurück.
  327. *
  328. * @param halbjahr das Halbjahr
  329. *
  330. * @return die Kurszahlen
  331. */
  332. public getKurszahlenLeistungskurse(halbjahr : GostHalbjahr) : number {
  333. if (this.kurszahlenLeistungskurse === null)
  334. return 0;
  335. let kurszahl : Number | null = this.kurszahlenLeistungskurse.get(halbjahr);
  336. if (kurszahl === null)
  337. return 0;
  338. return kurszahl.valueOf();
  339. }
  340. /**
  341. * Gibt die Zahl der anrechenbaren Kurse für das angegebene Halbjahr zurück.
  342. *
  343. * @param halbjahr das Halbjahr
  344. *
  345. * @return die Kurszahlen
  346. */
  347. public getKurszahlenAnrechenbar(halbjahr : GostHalbjahr) : number {
  348. if (this.kurszahlenAnrechenbar === null)
  349. return 0;
  350. let kurszahl : Number | null = this.kurszahlenAnrechenbar.get(halbjahr);
  351. if (kurszahl === null)
  352. return 0;
  353. return kurszahl.valueOf();
  354. }
  355. /**
  356. * Gibt die Zahl der Kurse mit der angegebenen Kursart in der Einführungsphase zurück.
  357. *
  358. * @param kursart die Kursart
  359. *
  360. * @return die Kurszahlen
  361. */
  362. public getKurszahlenEinfuehrungsphase(kursart : GostKursart) : number {
  363. if (this.kurszahlenEinfuehrungsphase === null)
  364. return 0;
  365. let kurszahl : Number | null = this.kurszahlenEinfuehrungsphase.get(kursart);
  366. if (kurszahl === null)
  367. return 0;
  368. return kurszahl.valueOf();
  369. }
  370. /**
  371. * Gibt die Zahl der Kurse mit der angegebenen Kursart in der Qualifikationsphase zurück.
  372. *
  373. * @param kursart die Kursart
  374. *
  375. * @return die Kurszahlen
  376. */
  377. public getKurszahlenQualifikationsphase(kursart : GostKursart) : number {
  378. if (this.kurszahlenQualifikationsphase === null)
  379. return 0;
  380. let kurszahl : Number | null = this.kurszahlenQualifikationsphase.get(kursart);
  381. if (kurszahl === null)
  382. return 0;
  383. return kurszahl.valueOf();
  384. }
  385. /**
  386. * Gibt die Anzahl der Grundkurse für Block I zurück.
  387. *
  388. * @return die Anzahl der Grundkurse
  389. */
  390. public getBlockIAnzahlGrundkurse() : number {
  391. return this.blockIAnzahlGrundkurse;
  392. }
  393. /**
  394. * Gibt die Anzahl der Leistungskurse für Block I zurück.
  395. *
  396. * @return die Anzahl der Leistungskurse
  397. */
  398. public getBlockIAnzahlLeistungskurse() : number {
  399. return this.blockIAnzahlLeistungskurse;
  400. }
  401. /**
  402. * Gibt die Anzahl der anrechenbaren Kurse für Block I zurück.
  403. *
  404. * @return die Anzahl der anrechenbaren Kurse
  405. */
  406. public getBlockIAnzahlAnrechenbar() : number {
  407. return this.blockIAnzahlAnrechenbar;
  408. }
  409. /**
  410. * Gibt die Anzahl der Wochenstunden für das angegebene Halbjahr zurück.
  411. *
  412. * @param halbjahr das Halbjahr
  413. *
  414. * @return die Anzahl der Wochenstunden
  415. */
  416. public getWochenstunden(halbjahr : GostHalbjahr) : number {
  417. if (this.wochenstunden === null)
  418. return 0;
  419. let stunden : Number | null = this.wochenstunden.get(halbjahr);
  420. if (stunden === null)
  421. stunden = 0;
  422. return stunden.valueOf();
  423. }
  424. /**
  425. * Gibt die Anzahl der Wochenstunden für die Einführungsphase zurück.
  426. *
  427. * @return die Anzahl der Wochenstunden
  428. */
  429. public getWochenstundenEinfuehrungsphase() : number {
  430. return this.wochenstundenEinfuehrungsphase;
  431. }
  432. /**
  433. * Gibt die Anzahl der Wochenstunden für die Qualifikationsphase zurück.
  434. *
  435. * @return die Anzahl der Wochenstunden
  436. */
  437. public getWochenstundenQualifikationsphase() : number {
  438. return this.wochenstundenQualifikationsphase;
  439. }
  440. isTranspiledInstanceOf(name : string): boolean {
  441. return ['de.nrw.schule.svws.core.abschluss.gost.GostBelegpruefung', 'de.nrw.schule.svws.core.abschluss.gost.belegpruefung.KurszahlenUndWochenstunden'].includes(name);
  442. }
  443. }
  444. export function cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_KurszahlenUndWochenstunden(obj : unknown) : KurszahlenUndWochenstunden {
  445. return obj as KurszahlenUndWochenstunden;
  446. }