KursblockungAlgorithmus.ts 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { JavaObject, cast_java_lang_Object } from '../../java/lang/JavaObject';
  2. import { KursblockungOutput, cast_de_nrw_schule_svws_core_data_kursblockung_KursblockungOutput } from '../../core/data/kursblockung/KursblockungOutput';
  3. import { KursblockungOutputs, cast_de_nrw_schule_svws_core_data_kursblockung_KursblockungOutputs } from '../../core/data/kursblockung/KursblockungOutputs';
  4. import { KursblockungInput, cast_de_nrw_schule_svws_core_data_kursblockung_KursblockungInput } from '../../core/data/kursblockung/KursblockungInput';
  5. import { KursblockungAlgorithmusS, cast_de_nrw_schule_svws_core_kursblockung_KursblockungAlgorithmusS } from '../../core/kursblockung/KursblockungAlgorithmusS';
  6. import { KursblockungAlgorithmusKMatching, cast_de_nrw_schule_svws_core_kursblockung_KursblockungAlgorithmusKMatching } from '../../core/kursblockung/KursblockungAlgorithmusKMatching';
  7. import { KursblockungDynDaten, cast_de_nrw_schule_svws_core_kursblockung_KursblockungDynDaten } from '../../core/kursblockung/KursblockungDynDaten';
  8. import { Service, cast_de_nrw_schule_svws_core_Service } from '../../core/Service';
  9. import { KursblockungAlgorithmusSZufaellig, cast_de_nrw_schule_svws_core_kursblockung_KursblockungAlgorithmusSZufaellig } from '../../core/kursblockung/KursblockungAlgorithmusSZufaellig';
  10. import { KursblockungAlgorithmusK, cast_de_nrw_schule_svws_core_kursblockung_KursblockungAlgorithmusK } from '../../core/kursblockung/KursblockungAlgorithmusK';
  11. import { Vector, cast_java_util_Vector } from '../../java/util/Vector';
  12. import { System, cast_java_lang_System } from '../../java/lang/System';
  13. export class KursblockungAlgorithmus extends Service<KursblockungInput, KursblockungOutputs> {
  14. public constructor() {
  15. super();
  16. }
  17. public handle(input : KursblockungInput) : KursblockungOutputs {
  18. this.logger.modifyIndent(+4);
  19. let kursblockungOutputs : KursblockungOutputs = new KursblockungOutputs();
  20. kursblockungOutputs.outputs = new Vector();
  21. let dynDaten : KursblockungDynDaten = new KursblockungDynDaten(this.logger, input);
  22. let timeMaxGlobal : number = dynDaten.gibBlockungszeitMillis();
  23. let algorithmenK : Array<KursblockungAlgorithmusK> = [new KursblockungAlgorithmusKMatching(this.logger, dynDaten)];
  24. let algorithmenS : Array<KursblockungAlgorithmusS> = [new KursblockungAlgorithmusSZufaellig(this.logger, dynDaten, false)];
  25. let timeStart : number = System.currentTimeMillis();
  26. let timeMaxLocal : number = 1000;
  27. do {
  28. for (let iK : number = 0; iK < algorithmenK.length; iK++){
  29. for (let iS : number = 0; iS < algorithmenS.length; iS++){
  30. algorithmenK[iK].berechne(timeMaxLocal);
  31. algorithmenS[iS].berechne(timeMaxLocal);
  32. let out : KursblockungOutput = dynDaten.gibErzeugtesKursblockungOutput();
  33. kursblockungOutputs.outputs.add(out);
  34. }
  35. }
  36. timeMaxLocal += 100;
  37. } while (System.currentTimeMillis() - timeStart < timeMaxGlobal);
  38. this.logger.modifyIndent(-4);
  39. return kursblockungOutputs;
  40. }
  41. isTranspiledInstanceOf(name : string): boolean {
  42. return ['de.nrw.schule.svws.core.Service', 'de.nrw.schule.svws.core.kursblockung.KursblockungAlgorithmus'].includes(name);
  43. }
  44. }
  45. export function cast_de_nrw_schule_svws_core_kursblockung_KursblockungAlgorithmus(obj : unknown) : KursblockungAlgorithmus {
  46. return obj as KursblockungAlgorithmus;
  47. }