package ua.kpi.ecampus.ui.presenter; import android.content.Context; import android.content.res.Resources; import android.content.res.TypedArray; import ua.kpi.ecampus.model.dao.BulletinModeratorDao; import ua.kpi.ecampus.model.dao.IDataAccessObject; import ua.kpi.ecampus.model.pojo.Bulletin; import ua.kpi.ecampus.ui.Navigator; import java.util.ArrayList; import java.util.Collection; import java.util.List; import javax.inject.Inject; import ua.kpi.ecampus.util.BulletinPredicates; /** * BulletinBoardModeratorPresenter created to manage BulletinBoardModeratorActivity. * <p> * Created by Administrator on 19.02.2016. */ public class BulletinBoardModeratorPresenter extends BasePresenter { private IView mView; private Context mContext; private Navigator mNavigator; private IDataAccessObject<Bulletin> mDataAccess; @Inject public BulletinBoardModeratorPresenter(Context context, Navigator navigator) { mContext = context; mNavigator = navigator; mDataAccess = new BulletinModeratorDao(); } public void setView(IView view) { mView = view; } public void setDao(IDataAccessObject dao) { mDataAccess = dao; } @Override public void initializeViewComponent() { mView.setViewComponent(); } /** * Get array of icons of BulletinBoardModerator tabs. * * @return typed array of icons */ public TypedArray getTabsIcon() { Resources r = mContext.getResources(); return r.obtainTypedArray(ua.kpi.ecampus.R.array.bulletin_board_moderator_tab_icon); } /** * Handles click on Add button. * Open NewBulletinActivity class. */ public void onButtonAddClick() { mNavigator.startNewBulletinActivity(); } /** * Handles click on recyclerview item. * * @param item an item that is clicked on */ public void onItemClick(Object item) { mNavigator.startBulletinContentActivity((Bulletin) item); } /** * Handles click on edit menu item. * Open EditBulletinActivity class. * * @param bulletin recyclerview item which has to be edited */ public void onEditMenuClick(Bulletin bulletin) { mNavigator.startEditBulletinActivity(bulletin); } /** * Return access object to the list of Bulletins * * @return access object */ public IDataAccessObject getDao() { return mDataAccess; } /** * Get Bulletin data from DataAccessObject * * @return list of bulletins */ public Collection<Bulletin> getData() { return mDataAccess.getData(); } /** * Get Bulletin data filtered by profile which matches User profile * * @return list of bulletins filtered by User profile */ public Collection<Bulletin> getFilteredByProfile() { return ((BulletinModeratorDao) mDataAccess).getFilteredByProfile(); } /** * Get Bulletin data filtered by subdivision which matches User subdivision * * @return list of bulletins filtered by User subdivision */ public Collection<Bulletin> getFilteredBySubdivision() { return ((BulletinModeratorDao) mDataAccess).getFilteredBySubdiv(); } /** * Get Bulletins which already started and not expired * * @return list of bulletins filtered by date */ public Collection<Bulletin> getFilteredByDate() { return ((BulletinModeratorDao) mDataAccess).getNotExpired(); } /** * Get deleted Bulletins * * @return list of deleted bulletins */ public Collection<Bulletin> getDeletedBulletins() { return ((BulletinModeratorDao) mDataAccess).getDeleted(); } /** * Filter list by specified query * @param list initial list * @param query request that filters list * @return filtered list */ public List<Bulletin> filterData(Collection<Bulletin> list, String query) { query = query.toLowerCase(); final List<Bulletin> filteredList = new ArrayList<>(); filteredList.addAll(BulletinPredicates.filterBulletins(list, BulletinPredicates.isMatchesQuerySubject(query))); return filteredList; } public interface IView { void setViewComponent(); } }