package io.github.memfis19.cadar.internal.process;
import android.support.v4.util.Pair;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import io.github.memfis19.cadar.data.entity.Event;
import io.github.memfis19.cadar.data.process.EventCalculator;
import io.github.memfis19.cadar.internal.utils.DateUtils;
/**
* Created by memfis on 7/22/16.
*/
public class ListEventsProcessor extends EventsProcessor<Pair<Calendar, Calendar>, List<Event>> {
public ListEventsProcessor(boolean shouldProcess, EventCalculator eventProcessor) {
super(shouldProcess, eventProcessor, false);
}
@Override
protected List<Event> processEvents(Pair<Calendar, Calendar> listQueueItem) {
List<Event> result;
Calendar startCalendar;
Calendar endCalendar;
if (listQueueItem.first != null && listQueueItem.second != null) {
startCalendar = listQueueItem.first;
endCalendar = listQueueItem.second;
} else if (listQueueItem.first == null && listQueueItem.second != null) {
startCalendar = listQueueItem.second;
endCalendar = listQueueItem.second;
} else if (listQueueItem.first != null && listQueueItem.second == null) {
startCalendar = listQueueItem.first;
endCalendar = listQueueItem.first;
} else return new ArrayList<>();
if (startCalendar.getTimeInMillis() > endCalendar.getTimeInMillis()) {
Calendar temp = startCalendar;
startCalendar = endCalendar;
endCalendar = temp;
}
if (isShouldProcess()) {
Date start = DateUtils.setTimeToMonthStart(startCalendar.getTime());
Date end = DateUtils.setTimeToMonthEnd(endCalendar.getTime());
result = getEventProcessor().getEventsForPeriod(start, end);
} else result = new ArrayList<>(getEventList());
return result;
}
}