Skip to content

Commit

Permalink
Legger til validering om intervallet er positivt heltall + legger til…
Browse files Browse the repository at this point in the history
… const variabler for default intervall og for parameter-navnet til intervall
  • Loading branch information
ulrikHesmyr committed Jul 24, 2024
1 parent 37b69c1 commit d144c75
Showing 1 changed file with 41 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -39,9 +42,8 @@ public void scheduleTask(){

List<JobbParameterEntity> 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);
Expand All @@ -51,24 +53,54 @@ 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){

if (scheduledFuture != null) {
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
Expand All @@ -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";
}
}

0 comments on commit d144c75

Please sign in to comment.