package io.github.memfis19.cadar.internal.process; import android.util.SparseArray; 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 MonthEventsProcessor extends EventsProcessor<Calendar, SparseArray<List<Event>>> { public MonthEventsProcessor(boolean shouldProcess, EventCalculator eventProcessor) { super(shouldProcess, eventProcessor, false); } @Override protected SparseArray<List<Event>> processEvents(Calendar target) { List<Event> result; final SparseArray<List<Event>> calendarEvents = new SparseArray<>(); if (isShouldProcess()) { Date start = DateUtils.setTimeToMonthStart(target.getTime()); Date end = DateUtils.setTimeToMonthEnd(target.getTime()); result = getEventProcessor().getEventsForPeriod(start, end); } else result = new ArrayList<>(getEventList() == null ? new ArrayList<Event>() : getEventList()); Calendar temp = DateUtils.getCalendarInstance(); for (Event event : result) { temp.setTime(event.getEventStartDate()); if (!DateUtils.isSameMonth(temp, target)) continue; List<Event> events = calendarEvents.get(temp.get(Calendar.DAY_OF_MONTH), new ArrayList<Event>()); events.add(event); calendarEvents.put(temp.get(Calendar.DAY_OF_MONTH), events); } result.clear(); return calendarEvents; } }