package net.dewep.intranetepitech.ui.calendar; import java.util.Map; import java.util.TreeMap; import net.dewep.intranetepitech.api.model.EventModel; public abstract class GenericCalendar implements IGenericCalendar, IFilterCalendar { protected Map<Integer, IGenericCalendar> mContainer = new TreeMap<Integer, IGenericCalendar>(); protected Boolean mIsDisplay = true; protected int mIdentifier = 0; public abstract IGenericCalendar getInstance(int index, EventModel event); public abstract Integer getIdentifier(EventModel event); public abstract void onRefreshFiltering(); public void setIdentifier(int identifier) { mIdentifier = identifier; } public int getIdentifier() { return mIdentifier; } public void addEvent(EventModel event) { int identifier = getIdentifier(event); if (!mContainer.containsKey(identifier)) { int index = 0; for (Map.Entry<Integer, IGenericCalendar> entry : mContainer.entrySet()) { if (getIdentifier(event) > ((IGenericCalendar) entry.getValue()).getIdentifier()) { index++; } } IGenericCalendar instance = getInstance(index, event); mContainer.put(identifier, instance); if (instance instanceof IGenericCalendar) { ((IGenericCalendar) instance).setIdentifier(identifier); } } if (mContainer.get(identifier) instanceof IGenericCalendar) { ((IGenericCalendar) mContainer.get(identifier)).addEvent(event); } } public void refreshFiltering() { mIsDisplay = false; for (Map.Entry<Integer, IGenericCalendar> entry : mContainer.entrySet()) { if (entry.getValue() instanceof IFilterCalendar) { IFilterCalendar filter = ((IFilterCalendar) entry.getValue()); filter.refreshFiltering(); if (filter.isDisplay()) { mIsDisplay = true; } } } onRefreshFiltering(); } public boolean isDisplay() { return mIsDisplay; } }