AbschlussFaecherGruppe.js 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.cast_de_nrw_schule_svws_core_abschluss_ge_AbschlussFaecherGruppe = exports.AbschlussFaecherGruppe = void 0;
  4. const JavaObject_1 = require("../../../java/lang/JavaObject");
  5. const StringBuilder_1 = require("../../../java/lang/StringBuilder");
  6. const Vector_1 = require("../../../java/util/Vector");
  7. const GELeistungsdifferenzierteKursart_1 = require("../../../core/types/ge/GELeistungsdifferenzierteKursart");
  8. const AbschlussManager_1 = require("../../../core/abschluss/AbschlussManager");
  9. class AbschlussFaecherGruppe extends JavaObject_1.JavaObject {
  10. faecher = new Vector_1.Vector();
  11. /**
  12. * Erzeugt eine Fächergruppe aus den angegebenen Fächern und den vorgegebenen Kriterien.
  13. *
  14. * @param faecherAlle eine Liste aller vorhandenen Leistungen
  15. * @param faecherNutzen nur die gelisteten Fächer nutzen, null bedeutet grundsätzlich alle benoteten Fächer nutzen (außer den gefilterten)
  16. * @param faecherFiltern null bedeutet keinen Filter verwenden, ansonsten werden die gelisteten Fächer gefiltert
  17. */
  18. constructor(faecherAlle, faecherNutzen, faecherFiltern) {
  19. super();
  20. if (faecherAlle === null)
  21. return;
  22. for (let i = 0; i < faecherAlle.size(); i++) {
  23. let fach = faecherAlle.get(i);
  24. if (fach.kuerzel === null)
  25. continue;
  26. if ((faecherFiltern !== null) && faecherFiltern.contains(fach.kuerzel))
  27. continue;
  28. if ((faecherNutzen !== null) && !faecherNutzen.contains(fach.kuerzel))
  29. continue;
  30. this.faecher.add(AbschlussManager_1.AbschlussManager.erstelleAbschlussFach(fach.kuerzel, fach.bezeichnung, fach.note, GELeistungsdifferenzierteKursart_1.GELeistungsdifferenzierteKursart.from(fach.kursart), fach.istFremdsprache));
  31. }
  32. }
  33. /**
  34. * Prüft, ob die gelisteten Fächer in der Fächergruppe sind und nur diese.
  35. *
  36. * @param faecherAbgleich die Fächer, welche in der Fächergruppe sein sollen.
  37. *
  38. * @return true, falls die angegebenen Fächer und nur diese in der Fächergruppe sind, ansonsten false.
  39. */
  40. istVollstaendig(faecherAbgleich) {
  41. if (faecherAbgleich === null)
  42. return true;
  43. if (this.isEmpty())
  44. return false;
  45. for (let kuerzel of faecherAbgleich) {
  46. if (!this.contains(kuerzel))
  47. return false;
  48. }
  49. for (let i = 0; i < this.faecher.size(); i++) {
  50. let fach = this.faecher.get(i);
  51. if (!faecherAbgleich.contains(fach.kuerzel))
  52. return false;
  53. }
  54. return true;
  55. }
  56. /**
  57. * Gibt zurück, ob die Fächergruppe leer ist oder mindestens ein Fach beinhaltet.
  58. *
  59. * @return true, falls die Fächergruppe leer ist, ansonsten false
  60. */
  61. isEmpty() {
  62. return (this.faecher === null) || (this.faecher.isEmpty());
  63. }
  64. /**
  65. * Prüft, ob das Fach mit dem angegebenen Fachkürzel in der Fächergruppe enthalten ist
  66. * oder nicht.
  67. *
  68. * @param kuerzel das Kürzel des Faches, welches geprüft werden soll.
  69. *
  70. * @return true, falls das Fach vorhanden ist, und ansonsten false
  71. */
  72. contains(kuerzel) {
  73. if (kuerzel === null)
  74. return false;
  75. for (let i = 0; i < this.faecher.size(); i++) {
  76. let fach = this.faecher.get(i);
  77. if ((fach !== null) && (JavaObject_1.JavaObject.equalsTranspiler(fach.kuerzel, (kuerzel))))
  78. return true;
  79. }
  80. return false;
  81. }
  82. /**
  83. * Entfernt alle Fächer aus der Fächergruppe, die dem übergebenen Filter entsprechen.
  84. *
  85. * @param filter die Funktion, um die zu entfernenden Fächer zu bestimmen
  86. *
  87. * @return die Liste der tatsächlich entfernten Fächer
  88. */
  89. entferneFaecher(filter) {
  90. let selected = new Vector_1.Vector();
  91. for (let i = 0; i < this.faecher.size(); i++) {
  92. let fach = this.faecher.get(i);
  93. if (filter.test(fach))
  94. selected.add(fach);
  95. }
  96. this.faecher.removeAll(selected);
  97. return selected;
  98. }
  99. /**
  100. * Bestimmt das Fach, welches dem übergebenen Filter entspricht. Entsprechen
  101. * mehrere Fächer dem Filterkriterium, so wird nur das erste Fach
  102. * der internen Liste zurückgegeben.
  103. *
  104. * @param filter die Funktion, die das Kriterium für das gesuchte Fach angibt.
  105. *
  106. * @return das Fach, sofern eines gefunden wurde, ansonsten false
  107. */
  108. getFach(filter) {
  109. for (let i = 0; i < this.faecher.size(); i++) {
  110. let fach = this.faecher.get(i);
  111. if (filter.test(fach))
  112. return fach;
  113. }
  114. return null;
  115. }
  116. /**
  117. * Bestimmt alle Fächer, welche dem übergebenen Filterkriterium entsprechen.
  118. *
  119. * @param filter die Funktion, die das Kriterium für die gesuchten Fächer angibt.
  120. *
  121. * @return eine Liste der Fächer, die dem Filterkriterium entsprechen
  122. */
  123. getFaecher(filter) {
  124. let result = new Vector_1.Vector();
  125. for (let i = 0; i < this.faecher.size(); i++) {
  126. let fach = this.faecher.get(i);
  127. if (filter.test(fach))
  128. result.add(fach);
  129. }
  130. return result;
  131. }
  132. /**
  133. * Gibt die Anzahl der Fächer zurück, welche dem übergebenen Filterkriterium entsprechen.
  134. *
  135. * @param filter die Funktion, die das Kriterium für die gesuchten Fächer angibt.
  136. *
  137. * @return die Anzahl der Fächer
  138. */
  139. getFaecherAnzahl(filter) {
  140. let count = 0;
  141. for (let i = 0; i < this.faecher.size(); i++) {
  142. let fach = this.faecher.get(i);
  143. if (filter.test(fach))
  144. count++;
  145. }
  146. return count;
  147. }
  148. /**
  149. * Bestimmt die Kürzel aller Fächer, welche dem übergebenen Filterkriterium entsprechen.
  150. *
  151. * @param filter die Funktion, die das Kriterium für die gesuchten Fächer angibt.
  152. *
  153. * @return eine Liste der Kürzel der Fächer, die dem Filterkriterium entsprechen
  154. */
  155. getKuerzel(filter) {
  156. let result = new Vector_1.Vector();
  157. for (let i = 0; i < this.faecher.size(); i++) {
  158. let fach = this.faecher.get(i);
  159. if (filter.test(fach) && (fach.kuerzel !== null))
  160. result.add(fach.kuerzel);
  161. }
  162. return result;
  163. }
  164. /**
  165. * Erstellt eine Zeichenkette mit einer Komma-separierten Liste der Kürzel aller Fächer,
  166. * welche dem übergebenen Filterkriterium entsprechen.
  167. *
  168. * @param filter die Funktion, die das Kriterium für die gesuchten Fächer angibt.
  169. *
  170. * @return die Zeichenkette mit einer Komma-separierten Liste der Fächerkürzel
  171. */
  172. getKuerzelListe(filter) {
  173. let sb = new StringBuilder_1.StringBuilder();
  174. for (let i = 0; i < this.faecher.size(); i++) {
  175. let fach = this.faecher.get(i);
  176. if (filter.test(fach)) {
  177. if (sb.length() > 0)
  178. sb.append(", ");
  179. sb.append(fach.kuerzel);
  180. }
  181. }
  182. return sb.toString();
  183. }
  184. /**
  185. * Gibt eine Komma-separierte Liste, der Abschlussfächer aus. Dabei wird
  186. * die toString Methode der Klasse AbschlussFach verwendet.
  187. */
  188. toString() {
  189. let sb = new StringBuilder_1.StringBuilder();
  190. for (let i = 0; i < this.faecher.size(); i++) {
  191. let fach = this.faecher.get(i);
  192. if (sb.length() > 0)
  193. sb.append(", ");
  194. let diffkursinfo = "";
  195. if ((fach.kursart === null) || (fach.kuerzel === null))
  196. continue;
  197. if (!GELeistungsdifferenzierteKursart_1.GELeistungsdifferenzierteKursart.Sonstige.hat(fach.kursart))
  198. diffkursinfo += fach.kursart + ",";
  199. sb.append(fach.kuerzel + "(" + diffkursinfo.valueOf() + fach.note + ")");
  200. }
  201. return sb.toString();
  202. }
  203. isTranspiledInstanceOf(name) {
  204. return ['de.nrw.schule.svws.core.abschluss.ge.AbschlussFaecherGruppe'].includes(name);
  205. }
  206. }
  207. exports.AbschlussFaecherGruppe = AbschlussFaecherGruppe;
  208. function cast_de_nrw_schule_svws_core_abschluss_ge_AbschlussFaecherGruppe(obj) {
  209. return obj;
  210. }
  211. exports.cast_de_nrw_schule_svws_core_abschluss_ge_AbschlussFaecherGruppe = cast_de_nrw_schule_svws_core_abschluss_ge_AbschlussFaecherGruppe;
  212. //# sourceMappingURL=AbschlussFaecherGruppe.js.map