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

com.elephantdrummer.trigger.CronTrigger Maven / Gradle / Ivy

There is a newer version: 1.2.5
Show newest version
package com.elephantdrummer.trigger;

import java.text.ParseException;
import java.util.Date;

import com.elephantdrummer.container.ContainerElement;
import com.elephantdrummer.exception.DrummerCronCalculationError;
import com.elephantdrummer.trigger.base.CronExpression;
import com.elephantdrummer.trigger.base.DrumTrigger;
import com.elephantdrummer.trigger.base.TriggerType;

/**
 * Copyright 2018 Elephant Software Klaudiusz Wojtkowiak e-mail: [email protected]
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * you may not use this file except in compliance with the License. 
 * You may obtain a copy of the License at 
 * 
 *  http://www.apache.org/licenses/LICENSE-2.0 
 *  
 *  Unless required by applicable law or agreed to in writing, software 
 *  distributed under the License is distributed on an "AS IS" BASIS, 
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 *  See the License for the specific language governing permissions and 
 *  limitations under the License. 
 */
public class CronTrigger extends DrumTrigger implements ContainerElement{


	private CronExpression cronExpression;


	@Override
	public String getDescription() {
		return "Executes cron definied trigger.";
	}

	
	

	@Override
	public Date getNextRunTime(Date currDate) {
		try {
			return getCronExpression().getNextValidTimeAfter(currDate);
		}catch (Exception e) {
			throw new DrummerCronCalculationError(e);
		}
	}


    

		@Override
		public final TriggerType getTriggerType() {
			return TriggerType.CRON;
		}
		


		public CronExpression getCronExpression() {
			if (cronExpression==null)
				try {
					cronExpression=new CronExpression(getCron());
				} catch (ParseException e) {
//					e.printStackTrace();
					throw new DrummerCronCalculationError(e);
				}
			return cronExpression;
		}




		public void setCronExpression(CronExpression cronExpression) {
			this.cronExpression = cronExpression;
		}
		

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy