From d144c75c2788e465bed78565729151eb47dfdae1 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Wed, 24 Jul 2024 07:04:06 +0200 Subject: [PATCH] Legger til validering om intervallet er positivt heltall + legger til const variabler for default intervall og for parameter-navnet til intervall --- .../scheduler/JobScheduler.java | 59 +++++++++++++------ 1 file changed, 41 insertions(+), 18 deletions(-) diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/scheduler/JobScheduler.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/scheduler/JobScheduler.java index c6e58ddae79..2ed462a118d 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/scheduler/JobScheduler.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/scheduler/JobScheduler.java @@ -28,6 +28,9 @@ public class JobScheduler { private ScheduledFuture scheduledFuture; + private static final String DEFAULT_INTERVALL = "24"; + private static final String INTERVALL_PARAM_NAVN = "intervall"; + /** * Funksjon som henter ut en intervallet fra databasen. * Funksjonen kalles når appen kjøres opp og vil kun ha en effekt dersom intervallet eksisterer i databasen. @@ -39,9 +42,8 @@ public void scheduleTask(){ List parametere = jobbService.hentAlleParametere(); - parametere.forEach(param -> { - if(param.getNavn().equals("intervall")){ + if(param.getNavn().equals(INTERVALL_PARAM_NAVN)){ String intervall = param.getVerdi(); log.info("Parameter-verdi for intervall: {}", intervall); rescheduleTask(intervall); @@ -51,8 +53,7 @@ public void scheduleTask(){ /** * Avslutter nåværende schedule og starter en ny med det nye intervallet. - * Forutsetning at parameter allerede er på riktig cron-expression format. - * @param intervall Heltall som representerer antall timer forsinkelse + * @param intervall Heltall som representerer antall timer forsinkelse for job-scheduleren */ public void rescheduleTask(String intervall){ @@ -60,15 +61,46 @@ public void rescheduleTask(String intervall){ scheduledFuture.cancel(true); } - //TODO: Sjekk om intervallet er positivt heltall før vi lager cron-expression osv - String cronExpression = lagCronExpression(intervall); - scheduledFuture = taskScheduler.schedule(new Job(), new CronTrigger(cronExpression)); + String cronExpression; + if (intervallErHeltall(intervall)){ + cronExpression = lagCronExpression(intervall); + } else { + cronExpression = lagCronExpression(DEFAULT_INTERVALL); + } + + scheduledFuture = taskScheduler.schedule(new AnsettelseJobb(), new CronTrigger(cronExpression)); log.info("Schedulet en task med intervall: {}", cronExpression); } + /** + * Formatterer en cron-expression for å kjøre en jobb hver x. time + * @param intervallet Heltall som representerer antall timer forsinkelse + * @return Ferdig formattert og gyldig cron-expression + */ + private String lagCronExpression(String intervallet) { + return "0 0 */" + intervallet + " ? * MON-SAT"; + } + + /** + * Funksjon som validerer om intervall er et positivt heltall. Brukes kun i this.rescheduleTask() metoden. + * @param intervall Heltall som representerer antall timer forsinkelse for job-scheduleren + * @return true hvis intervallet er et positivt heltall og false hvis ikke + */ + private static boolean intervallErHeltall(String intervall) { + try { + Integer.parseInt(intervall); + } catch (NumberFormatException e) { + return false; + } + return true; + } - private static class Job implements Runnable { + + /** + * Klasse for jobben som skal kjøres av scheduler + */ + private static class AnsettelseJobb implements Runnable { /** * Funksjon som automatisk blir kalt på av en task-scheduler og kjører ansettelsesservice utenom lørdag fra @@ -78,21 +110,12 @@ private static class Job implements Runnable { public void run() { /* - if (!((dag == mandag && clock <= 6AM) || (dag == lørdag && clock >= 12PM)) ){ + if (!((dag == mandag && clock <= 6AM) || (dag == søndag) || (dag == lørdag && clock >= 12PM)) ){ //Kall på AnsettelseService her - } */ log.info("Jobb kjørte!"); } } - /** - * Formatterer en cron-expression for å kjøre en jobb hver x. time - * @param intervallet Heltall som representerer antall timer forsinkelse - * @return Ferdig formattert og gyldig cron-expression - */ - private String lagCronExpression(String intervallet) { - return "0 0 */" + intervallet + " ? * MON-SAT"; - } }