2424import java .lang .management .MemoryUsage ;
2525import java .time .Duration ;
2626import java .time .LocalDateTime ;
27+ import java .time .temporal .ChronoUnit ;
2728import java .util .ArrayList ;
2829import java .util .Arrays ;
2930import java .util .Collection ;
@@ -114,6 +115,7 @@ public class Dav2RestSender implements ClientReceiverInterface {
114115
115116 private final ExecutorService executor = Executors .newWorkStealingPool ();
116117 private Reflections reflections ;
118+ private SettingsManager settingsManager ;
117119
118120 public Dav2RestSender (WebTarget target , ClientDavInterface connection , SystemObject archivObjekt ) {
119121 this .target = target ;
@@ -492,23 +494,6 @@ public void anmelden() {
492494
493495 subscribeDavData ();
494496
495- // TODO: übergangsweise senden wir die symstemobjekte einmal stündlich
496- // final LocalDateTime now = LocalDateTime.now();
497- // LocalDateTime twoOclock = now.withHour(2).withMinute(0).withSecond(0);
498- //
499- // long until = now.until(twoOclock, ChronoUnit.MINUTES);
500- // while (until < 0) {
501- // twoOclock = twoOclock.plusDays(1);
502- // until = now.until(twoOclock, ChronoUnit.MINUTES);
503- // }
504- //
505- // // täglich ca. um 2 werden die statischen Daten (SystemObjekte) neu übertragen.
506- // final ScheduledExecutorService scheduledExecutor = Executors.newSingleThreadScheduledExecutor();
507- // scheduledExecutor.scheduleAtFixedRate(() -> {
508- // LOGGER.info("Zyklisches versenden statischer Daten (SystemOjekte) gestartet.");
509- // executor.execute(new RestSystemObjektSender(objects2Store));
510- // }, until, 1440, TimeUnit.MINUTES);
511-
512497 final ScheduledExecutorService scheduledExecutor = Executors .newSingleThreadScheduledExecutor ();
513498 scheduledExecutor .scheduleAtFixedRate (() -> {
514499 LOGGER .info ("Zyklisches versenden statischer Daten (SystemOjekte) gestartet. - " + objects2Store .size ()
@@ -522,15 +507,38 @@ public void anmelden() {
522507 executor .execute (new RestOnlineDatenNachSender ());
523508 }, 1 , 1 , TimeUnit .MINUTES );
524509
510+ final LocalDateTime now = LocalDateTime .now ();
511+ LocalDateTime twoOclock = now .withHour (3 ).withMinute (33 ).withSecond (0 );
512+
513+ // täglich ca. um 3:33 Uhr werden die dynamischen Daten neu
514+ // übertragen.
515+ long until = now .until (twoOclock , ChronoUnit .MINUTES );
516+ while (until < 0 ) {
517+ twoOclock = twoOclock .plusDays (1 );
518+ until = now .until (twoOclock , ChronoUnit .MINUTES );
519+ }
520+
521+ scheduledExecutor .scheduleAtFixedRate (() -> {
522+ LOGGER .warning ("Tägliches versenden dynamischer Daten gestartet." );
523+ executor .execute (() -> {
524+ subscribeDavData ();
525+ });
526+ }, until , 1440 , TimeUnit .MINUTES );
527+
525528 }
526529
527530 private void subscribeDavData () {
528-
529531 final AttributeGroup atgArchiv = connection .getDataModel ().getAttributeGroup ("atg.archiv" );
530532 final Aspect aspParameterSoll = connection .getDataModel ().getAspect ("asp.parameterSoll" );
531533 final DataDescription desc = new DataDescription (atgArchiv , aspParameterSoll );
532534 final DataIdentification dataId = new DataIdentification (archivObjekt , desc );
533- final SettingsManager settingsManager = new SettingsManager (connection , dataId );
535+
536+ if (settingsManager !=null ) {
537+ //ggf. dem alten SettingsManager anhalten
538+ settingsManager .stop ();
539+ }
540+
541+ settingsManager = new SettingsManager (connection , dataId );
534542
535543 final SettingsManagerUpdateListener settingsManagerUpdateListener = new SettingsManagerUpdateListener ();
536544 settingsManager .addUpdateListener (settingsManagerUpdateListener );
0 commit comments