package org.jblooming.agenda;
import org.jblooming.ApplicationException;
import org.jblooming.ontology.Identifiable;
import java.util.Collection;
import java.util.Date;
import net.sf.json.JSONObject;
public interface Schedule extends Identifiable {
Date getStartDate();
Date getEndDate();
int getStartTimeInMillis();
long getDurationInMillis();
int getFrequency();
int getRepetitions();
/*
* Return true if the specified date is in ANY of schedule; false oterwhise
*
*/
boolean contains(Date date);
boolean overlap(Period p);
Collection getPeriods(Period p, boolean trim);
long getValidityStartTime();
long getValidityEndTime();
Date getValidityStartDate();
Date getValidityEndDate();
Period getPeriod();
Date getNextFireDate();
Date getNextDateAfter(Date afterTime);
Date getPreviousDateBefore(Date beforeTime);
long getNextFireTime();
long getNextFireTimeAfter(long afterTime);
long getPreviousFireTimeBefore(long beforeTime);
JSONObject jsonify();
}