From 6d6136dda498ce5a9f8609b783288c11466d989e Mon Sep 17 00:00:00 2001 From: salmanoe Date: Sat, 19 Jun 2021 20:50:54 +0700 Subject: [PATCH] perbaikan timer --- .../asynctask/CalendarSystemGenerating.java | 4 +- .../PegawaiJadwalKerjaGenerating.java | 4 +- .../asynctask/TargetLayananGenerating.java | 4 +- ...onthlyTimer.java => JadwalKerjaTimer.java} | 41 ++++++++++++------ .../{YearlyTimer.java => KalenderTimer.java} | 42 ++++++++++++------- 5 files changed, 62 insertions(+), 33 deletions(-) rename jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/timer/{MonthlyTimer.java => JadwalKerjaTimer.java} (53%) rename jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/timer/{YearlyTimer.java => KalenderTimer.java} (55%) diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/CalendarSystemGenerating.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/CalendarSystemGenerating.java index 271c582f..87ad24da 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/CalendarSystemGenerating.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/CalendarSystemGenerating.java @@ -6,7 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; -import com.jasamedika.medifirst2000.asynctask.timer.YearlyTimer; +import com.jasamedika.medifirst2000.asynctask.timer.KalenderTimer; import com.jasamedika.medifirst2000.controller.base.LocaleController; import com.jasamedika.medifirst2000.service.KalenderService; import com.jasamedika.medifirst2000.util.CommonUtil; @@ -22,7 +22,7 @@ public class CalendarSystemGenerating extends LocaleController { public CalendarSystemGenerating() { int the1st = 1; int at0hrs = 0; - YearlyTimer.schedule(new Runnable() { + KalenderTimer.schedule(new Runnable() { @Override public void run() { try { diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/PegawaiJadwalKerjaGenerating.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/PegawaiJadwalKerjaGenerating.java index da444267..76021436 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/PegawaiJadwalKerjaGenerating.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/PegawaiJadwalKerjaGenerating.java @@ -6,7 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; -import com.jasamedika.medifirst2000.asynctask.timer.MonthlyTimer; +import com.jasamedika.medifirst2000.asynctask.timer.JadwalKerjaTimer; import com.jasamedika.medifirst2000.controller.base.LocaleController; import com.jasamedika.medifirst2000.service.PegawaiJadwalKerjaService; import com.jasamedika.medifirst2000.util.CommonUtil; @@ -22,7 +22,7 @@ public class PegawaiJadwalKerjaGenerating extends LocaleController { public TargetLayananGenerating() { int the4th = 4; int at0hrs = 0; - MonthlyTimer.schedule(new Runnable() { + TargetLayananTimer.schedule(new Runnable() { @Override public void run() { try { diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/timer/MonthlyTimer.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/timer/JadwalKerjaTimer.java similarity index 53% rename from jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/timer/MonthlyTimer.java rename to jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/timer/JadwalKerjaTimer.java index 5cd6e04f..d75a8ea4 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/timer/MonthlyTimer.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/timer/JadwalKerjaTimer.java @@ -5,43 +5,56 @@ import java.util.Date; import java.util.Timer; import java.util.TimerTask; -public class MonthlyTimer { +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class JadwalKerjaTimer { + private final static Logger LOGGER = LoggerFactory.getLogger(JadwalKerjaTimer.class); + // What to do private final Runnable whatToDo; - + // when private final int dayOfMonth; private final int hourOfDay; - + // The current timer private Timer current = new Timer(); - + public void cancelCurrent() { + LOGGER.info("JadwalKerjaTimer : Cancel current execution"); current.cancel(); + + LOGGER.info("JadwalKerjaTimer : Removes the timertask so it can be garbage collected"); current.purge(); } - - public static MonthlyTimer schedule(Runnable runnable, int dayOfMonth, int hourOfDay) { - return new MonthlyTimer(runnable, dayOfMonth, hourOfDay); + + public static JadwalKerjaTimer schedule(Runnable runnable, int dayOfMonth, int hourOfDay) { + LOGGER.info("JadwalKerjaTimer : Create a new instance"); + return new JadwalKerjaTimer(runnable, dayOfMonth, hourOfDay); } - - private MonthlyTimer(Runnable runnable, int day, int hour) { + + private JadwalKerjaTimer(Runnable runnable, int day, int hour) { this.whatToDo = runnable; this.dayOfMonth = day; this.hourOfDay = hour; - + schedule(); } - + private void schedule() { cancelCurrent(); - + + LOGGER.info( + "JadwalKerjaTimer : Assigning a new instance of Timer, allow the previous Timer to be garbage collected"); current = new Timer(); current.schedule(new TimerTask() { public void run() { try { + LOGGER.info("JadwalKerjaTimer : Running schedule"); whatToDo.run(); } finally { + LOGGER.info("JadwalKerjaTimer : Schedule for the next month"); schedule(); } } @@ -56,7 +69,9 @@ public class MonthlyTimer { runDate.set(Calendar.SECOND, 0); runDate.set(Calendar.MILLISECOND, 0); runDate.add(Calendar.MONTH, 1); - + + LOGGER.info("JadwalKerjaTimer : Set to next month " + runDate.getTime()); + return runDate.getTime(); } } diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/timer/YearlyTimer.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/timer/KalenderTimer.java similarity index 55% rename from jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/timer/YearlyTimer.java rename to jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/timer/KalenderTimer.java index faacfa94..369b0c75 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/timer/YearlyTimer.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/timer/KalenderTimer.java @@ -5,44 +5,56 @@ import java.util.Date; import java.util.Timer; import java.util.TimerTask; -public class YearlyTimer { - +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class KalenderTimer { + private final static Logger LOGGER = LoggerFactory.getLogger(KalenderTimer.class); + // What to do private final Runnable whatToDo; - + // when private final int dayOfMonth; private final int hourOfDay; - + // The current timer private Timer current = new Timer(); - + public void cancelCurrent() { + LOGGER.info("KalenderTimer : Cancel current execution"); current.cancel(); + + LOGGER.info("KalenderTimer : Removes the timertask so it can be garbage collected"); current.purge(); } - - public static YearlyTimer schedule(Runnable runnable, int dayOfMonth, int hourOfDay) { - return new YearlyTimer(runnable, dayOfMonth, hourOfDay); + + public static KalenderTimer schedule(Runnable runnable, int dayOfMonth, int hourOfDay) { + LOGGER.info("KalenderTimer : Create a new instance"); + return new KalenderTimer(runnable, dayOfMonth, hourOfDay); } - - private YearlyTimer(Runnable runnable, int day, int hour) { + + private KalenderTimer(Runnable runnable, int day, int hour) { this.whatToDo = runnable; this.dayOfMonth = day; this.hourOfDay = hour; - + schedule(); } - + private void schedule() { cancelCurrent(); - + + LOGGER.info( + "KalenderTimer : Assigning a new instance of Timer, allow the previous Timer to be garbage collected"); current = new Timer(); current.schedule(new TimerTask() { public void run() { try { + LOGGER.info("KalenderTimer : Running schedule"); whatToDo.run(); } finally { + LOGGER.info("KalenderTimer : Schedule for the next year"); schedule(); } } @@ -58,7 +70,9 @@ public class YearlyTimer { runDate.set(Calendar.SECOND, 0); runDate.set(Calendar.MILLISECOND, 0); runDate.add(Calendar.YEAR, 1); - + + LOGGER.info("KalenderTimer : Set to next year " + runDate.getTime()); + return runDate.getTime(); } }