Skip to content

Commit 0963a5d

Browse files
fixes #11
1 parent dedb682 commit 0963a5d

File tree

1 file changed

+27
-19
lines changed

1 file changed

+27
-19
lines changed

de.bitctrl.dav.rest.client/src/main/java/de/bitctrl/dav/rest/client/Dav2RestSender.java

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import java.lang.management.MemoryUsage;
2525
import java.time.Duration;
2626
import java.time.LocalDateTime;
27+
import java.time.temporal.ChronoUnit;
2728
import java.util.ArrayList;
2829
import java.util.Arrays;
2930
import 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

Comments
 (0)