package org.jboss.seam.async;
import java.io.Serializable;
import java.util.Date;
/**
* A "schedule" for a timed event executed by
* a timer service which supports delayed
* timed events. It is the base class for the more
* useful TimerSchedule, NthBusinessDay and CronSchedule classes.
*
* @author Michael Yuan
*
*/
public class Schedule implements Serializable
{
private Long duration;
private Date expiration;
private Date finalExpiration;
public Long getDuration()
{
return duration;
}
public Date getExpiration()
{
return expiration;
}
public Date getFinalExpiration()
{
return finalExpiration;
}
/**
* @param duration the delay before the event occurs
* @param expiration the datetime at which the event occurs
*/
public Schedule(Long duration, Date expiration)
{
this.duration = duration;
this.expiration = expiration;
}
/**
* @param duration the delay before the event occurs
* @param expiration the datetime at which the event occurs
* @param finalExpiration the datetime at which the event ends
*/
public Schedule(Long duration, Date expiration, Date finalExpiration)
{
this.duration = duration;
this.expiration = expiration;
this.finalExpiration = finalExpiration;
}
/**
* @param duration the delay before the event occurs
*/
public Schedule(Long duration)
{
this.duration = duration;
}
/**
* @param expiration the datetime at which the event occurs
*/
public Schedule(Date expiration)
{
this.expiration = expiration;
}
public Schedule () { }
@Override
public int hashCode()
{
final int prime = 31;
int result = 1;
result = prime * result + ((duration == null) ? 0 : duration.hashCode());
result = prime * result + ((expiration == null) ? 0 : expiration.hashCode());
return result;
}
@Override
public boolean equals(Object obj)
{
if (this == obj) return true;
if (obj == null) return false;
if (getClass() != obj.getClass()) return false;
final Schedule other = (Schedule) obj;
if (duration == null)
{
if (other.duration != null) return false;
}
else if (!duration.equals(other.duration)) return false;
if (expiration == null)
{
if (other.expiration != null) return false;
}
else if (!expiration.equals(other.expiration)) return false;
return true;
}
}