AbschlussManager.js 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.cast_de_nrw_schule_svws_core_abschluss_AbschlussManager = exports.AbschlussManager = void 0;
  4. const JavaObject_1 = require("../../java/lang/JavaObject");
  5. const GEAbschlussFach_1 = require("../../core/data/abschluss/GEAbschlussFach");
  6. const AbschlussErgebnis_1 = require("../../core/data/abschluss/AbschlussErgebnis");
  7. const StringBuilder_1 = require("../../java/lang/StringBuilder");
  8. const Abschluss_1 = require("../../core/types/Abschluss");
  9. const GELeistungsdifferenzierteKursart_1 = require("../../core/types/ge/GELeistungsdifferenzierteKursart");
  10. const Vector_1 = require("../../java/util/Vector");
  11. const HashSet_1 = require("../../java/util/HashSet");
  12. class AbschlussManager extends JavaObject_1.JavaObject {
  13. constructor() {
  14. super();
  15. }
  16. /**
  17. * Erzeugt ein Ergebnis der Abschlussberechnung unter Angabe, ob dieser erworben
  18. * wurde. Die Liste der Nachprüfungsfächer ist leer und ein Log ist nicht zugeordnet.
  19. * Sollten Nachprüfungsmöglichkeiten bestehen so ist die Methode
  20. * {@link AbschlussManager#getErgebnisNachpruefung} zu nutzen.
  21. * und ob dieser erworben wurde.
  22. *
  23. * @param abschluss der Abschluss für den das Ergebnis erzeugt wird
  24. * @param erworben true, falls der Abschluss erworben wurde, sonst false
  25. *
  26. * @return das Ergebnis der Abschlussberechnung
  27. */
  28. static getErgebnis(abschluss, erworben) {
  29. let ergebnis = new AbschlussErgebnis_1.AbschlussErgebnis();
  30. ergebnis.abschluss = abschluss === null ? null : abschluss.toString();
  31. ergebnis.erworben = erworben;
  32. ergebnis.npFaecher = null;
  33. ergebnis.log = null;
  34. return ergebnis;
  35. }
  36. /**
  37. * Erzeugt ein Ergebnis der Abschlussberechnung, wo der Abschluss nicht erreicht wurde, aber ggf.
  38. * noch durch Nachprüfungen erreicht werden kann. Ein log wird nicht zugeordnet.
  39. *
  40. * @param abschluss der Abschluss für den das Ergebnis erzeugt wird
  41. * @param np_faecher eine Liste von Nachprüfungsfächern, falls eine Nachprüfung möglich ist,
  42. * ansonsten null oder eine leere Liste
  43. *
  44. * @return das Ergebnis der Abschlussberechnung
  45. */
  46. static getErgebnisNachpruefung(abschluss, np_faecher) {
  47. let ergebnis = new AbschlussErgebnis_1.AbschlussErgebnis();
  48. ergebnis.abschluss = abschluss === null ? null : abschluss.toString();
  49. ergebnis.erworben = false;
  50. if ((np_faecher === null) || (np_faecher.size() === 0))
  51. ergebnis.npFaecher = null;
  52. else
  53. ergebnis.npFaecher = np_faecher;
  54. ergebnis.log = null;
  55. return ergebnis;
  56. }
  57. /**
  58. * Gibt an, ob für einen Abschluss eine Nachprüfungsmöglichkeit besteht.
  59. *
  60. * @param ergebnis das Abschluss-Ergebnis bei dem auf eine Nachprüfungsmöglichkeit
  61. * geprüft werden soll.
  62. *
  63. * @return true, falls eine Nachprüfungsmöglichkeit besteht, sonst false
  64. */
  65. static hatNachpruefungsmoeglichkeit(ergebnis) {
  66. return (ergebnis.npFaecher !== null) && ergebnis.npFaecher.size() > 0;
  67. }
  68. /**
  69. * Gibt die Nachprüfungsfächer als Komma-separierten String zurück.
  70. *
  71. * @param ergebnis das Abschluss-Ergebnis bei dem die Nachprüfungsmöglichkeiten
  72. * ausgegeben werden sollen
  73. *
  74. * @return die Nachprüfungsfächer als Komma-separierten String
  75. */
  76. static getNPFaecherString(ergebnis) {
  77. if (ergebnis.npFaecher === null)
  78. return "";
  79. let sb = new StringBuilder_1.StringBuilder();
  80. for (let fach of ergebnis.npFaecher) {
  81. if (sb.length() > 0)
  82. sb.append(", ");
  83. sb.append(fach);
  84. }
  85. return sb.toString();
  86. }
  87. /**
  88. * Vergleicht die beiden Abschlüsse, ob sie identisch sind. Ein
  89. * Übergabewert null wird als {@link Abschluss#OHNE_ABSCHLUSS}
  90. * interpretiert.
  91. *
  92. * @param a der eine Abschluss
  93. * @param b der andere Abschluss
  94. *
  95. * @return true, falls sie identisch sind und ansonsten false
  96. */
  97. static equalsAbschluesse(a, b) {
  98. if ((a === null) || (Abschluss_1.Abschluss.OHNE_ABSCHLUSS.is(a)))
  99. return (b === null) || (Abschluss_1.Abschluss.OHNE_ABSCHLUSS.is(b));
  100. return JavaObject_1.JavaObject.equalsTranspiler(a, (b));
  101. }
  102. /**
  103. * Gibt den Abschluss zurück. Im Falle das kein Abschluss angegeben ist
  104. * wird Abschluss.OHNE_ABSCHLUSS zurückgegeben.
  105. *
  106. * @param ergebnis das Ergebnis
  107. *
  108. * @return der Abschluss
  109. */
  110. static getAbschluss(ergebnis) {
  111. return ergebnis.abschluss === null ? Abschluss_1.Abschluss.OHNE_ABSCHLUSS.toString() : ergebnis.abschluss;
  112. }
  113. /**
  114. * Die Methode dient dem Erzeugen eines Faches für die Abschlussberechnung.
  115. *
  116. * @param kuerzel das Kürzel des Faches
  117. * @param bezeichnung die Bezeichnung des Faches
  118. * @param note die Note, die in dem Fach erteilt wurde
  119. * @param kursart gibt die Kursart Faches an: leistungsdifferenzierter (E-Kurs, G-Kurs) oder sonstiger Kurs
  120. * @param istFremdsprache gibt an, ob es sich bei dem Fach um eine Fremdsprache handelt oder nicht
  121. *
  122. * @return das Abschlussfach
  123. */
  124. static erstelleAbschlussFach(kuerzel, bezeichnung, note, kursart, istFremdsprache) {
  125. let fach = new GEAbschlussFach_1.GEAbschlussFach();
  126. fach.kuerzel = kuerzel;
  127. fach.bezeichnung = (bezeichnung === null || JavaObject_1.JavaObject.equalsTranspiler("", (bezeichnung))) ? "---" : bezeichnung;
  128. fach.note = note;
  129. fach.kursart = kursart.kuerzel;
  130. fach.istFremdsprache = istFremdsprache === null ? false : istFremdsprache;
  131. return fach;
  132. }
  133. /**
  134. * Liefert eine List mit den Fachkürzeln aus der übergebenen Liste mit Abschlussfächern.
  135. *
  136. * @param faecher die Liste mit Abschlussfächern
  137. *
  138. * @return die Liste mit den Fachkürzeln
  139. */
  140. static getKuerzel(faecher) {
  141. let result = new Vector_1.Vector();
  142. for (let i = 0; i < faecher.size(); i++) {
  143. let fach = faecher.get(i);
  144. if ((fach === null) || fach.kuerzel === null)
  145. continue;
  146. if (result.contains(fach.kuerzel))
  147. continue;
  148. result.add(fach.kuerzel);
  149. }
  150. return result;
  151. }
  152. /**
  153. * Prüft, ob vier leistungsdifferenzierte Fächer belegt wurden. Dabei wird nicht geprüft, ob
  154. * es sich um G oder E-Kurse handelt.
  155. *
  156. * @param abschluss_faecher die Abschlussfächer
  157. *
  158. * @return true, falls vier leistungsdifferenzierte Fächer belegt wurden, sonst false
  159. */
  160. static pruefeHat4LeistungsdifferenzierteFaecher(abschluss_faecher) {
  161. if (abschluss_faecher.faecher === null)
  162. return false;
  163. let count = 0;
  164. let faecher = abschluss_faecher.faecher;
  165. for (let fach of faecher) {
  166. if (fach === null)
  167. continue;
  168. let kursart = GELeistungsdifferenzierteKursart_1.GELeistungsdifferenzierteKursart.from(fach.kursart);
  169. if ((kursart === GELeistungsdifferenzierteKursart_1.GELeistungsdifferenzierteKursart.E) || (kursart === GELeistungsdifferenzierteKursart_1.GELeistungsdifferenzierteKursart.G))
  170. count++;
  171. }
  172. return (count === 4);
  173. }
  174. /**
  175. * Prüft, ob Duplikate bei den Kürzeln der Fächer vorkommen. Dies darf zur korrekten
  176. * Ausführung des Abschlussalgorithmus nicht vorkommen.
  177. *
  178. * @param abschluss_faecher die Abschlussfächer
  179. *
  180. * @return true, falls keine Duplikate vorkommen, sonst false
  181. */
  182. static pruefeKuerzelDuplikate(abschluss_faecher) {
  183. if (abschluss_faecher.faecher === null)
  184. return true;
  185. let kuerzel = new HashSet_1.HashSet();
  186. let faecher = abschluss_faecher.faecher;
  187. for (let fach of faecher) {
  188. if ((fach === null) || (fach.kuerzel === null))
  189. continue;
  190. if (!kuerzel.add(fach.kuerzel))
  191. return false;
  192. }
  193. return true;
  194. }
  195. isTranspiledInstanceOf(name) {
  196. return ['de.nrw.schule.svws.core.abschluss.AbschlussManager'].includes(name);
  197. }
  198. }
  199. exports.AbschlussManager = AbschlussManager;
  200. function cast_de_nrw_schule_svws_core_abschluss_AbschlussManager(obj) {
  201. return obj;
  202. }
  203. exports.cast_de_nrw_schule_svws_core_abschluss_AbschlussManager = cast_de_nrw_schule_svws_core_abschluss_AbschlussManager;
  204. //# sourceMappingURL=AbschlussManager.js.map