package io.github.memfis19.cadar.data.process;
import java.util.Date;
import java.util.List;
import io.github.memfis19.cadar.data.entity.Event;
import io.github.memfis19.cadar.data.factory.EventFactory;
/**
* Created by memfis on 3/26/15.
* Interface that provides general functionality for events generation. For supported event repeat periods.
*
* @see io.github.memfis19.cadar.data.entity.property.EventProperties.RepeatPeriod
*/
public interface EventCalculator {
void setEventFactory(EventFactory eventFactory);
void setEventsToProcess(List<Event> eventList);
/**
* Method provides and generate if needed event list for specified date. Null if no events.
*
* @param date - date for which events will be provided.
* @return - events list for specified date.
*/
List<Event> getEventsForDate(Date date);
/**
* Method provides and generate if needed event list for specified date. Null if no events.
*
* @param startDate - start date for generation period
* @param endDate - end date for generation period
* @return - events list for specified date.
*/
List<Event> getEventsForPeriod(Date startDate, Date endDate);
/**
* Method returns dates list for specified events. Null if no events.
* Can bes used for grouping events by date in case when few events can be at the same day.
*
* @param events - events for which we will generate dates.
* @return - dates list for specified events.
*/
List<Date> getEventsDates(List<Event> events);
}