All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.spikeify.cron.data.CronJsonUpdater Maven / Gradle / Ivy

package com.spikeify.cron.data;

import com.spikeify.cron.data.json.CronJobJSON;
import com.spikeify.cron.entities.CronJob;
import com.spikeify.cron.utils.Assert;

import java.util.ArrayList;
import java.util.List;

public class CronJsonUpdater implements CronJobUpdater {

	private final CronJobJSON data;
	private final int timeZone;

	public CronJsonUpdater(CronJobJSON json, int localTimeZone) {

		Assert.notNull(json, "Missing job JSON");

		data = json;
		timeZone = localTimeZone;
	}

	public void update(CronJob job) {

		List updaters = new ArrayList<>();

		updaters.add(new FirstRunUpdater(data.firstRun));

		if (data.target != null && data.target.trim().length() > 0) {

			if (data.intervalUnits != null &&
				data.interval > 0 &&
				data.startHour != null && data.startMinute != null &&
				data.endHour != null && data.endMinute != null) {

				// repeat only in range of hours
				updaters.add(new ScheduleUpdater(data.target, data.interval, data.intervalUnits, data.startHour, data.startMinute, data.endHour, data.endMinute, timeZone));
			}
			else if (data.startHour != null && data.startMinute != null &&
					 data.endHour == null && data.endMinute == null) {

				// once a day at certain hour
				updaters.add(new ScheduleUpdater(data.target, data.startHour, data.startMinute, timeZone));
			}
			else if (data.intervalUnits != null &&
					 data.interval > 0) {

				// repeat by interval
				updaters.add(new ScheduleUpdater(data.target, data.interval, data.intervalUnits));
			}
		}

		// enable / disable
		if (job.isDisabled() != data.disabled) {
			updaters.add(new EnableDisableUpdater(!data.disabled));
		}

		// call all added updaters
		for (CronJobUpdater updater : updaters) {
			updater.update(job);
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy