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.BulletinDao; import ua.kpi.ecampus.model.dao.IDataAccessObject; import ua.kpi.ecampus.model.pojo.Bulletin; import ua.kpi.ecampus.model.pojo.User; import ua.kpi.ecampus.ui.Navigator; import java.util.ArrayList; import java.util.Collection; import java.util.List; import javax.inject.Inject; /** * BulletinBoardPresenter created to manage BulletinBoardActivity. * * Created by Admin on 02.02.2016. */ public class BulletinBoardPresenter extends BasePresenter { private IView mView; private Context mContext; private Navigator mNavigator; private IDataAccessObject<Bulletin> mDataAccess; @Inject public BulletinBoardPresenter(Context context, Navigator navigator) { mContext = context; mNavigator = navigator; mDataAccess = new BulletinDao(); } public void setView(IView view) { mView = view; } public void setDao(IDataAccessObject dao) { mDataAccess = dao; } @Override public void initializeViewComponent() { mView.setViewComponent(); } /** * Get icons of BulletinBoard tabs. * @return array of resources */ public TypedArray getTabsIcon() { Resources r = mContext.getResources(); return r.obtainTypedArray(ua.kpi.ecampus.R.array.bulletin_board_tab_icon); } /** * Return whether current user is Moderator of BulletinBoard * @return true if user is moderator, false otherwise */ public boolean isModerator() { return User.getInstance().isBulletinBoardModerator; } /** * Start BulletinBoardModeratorActivity */ public void openBulletinModeratorActivity() { mNavigator.startBulletinBoardModeratorActivity(); } /** * Handles click on recyclerview item. * @param item an item that is clicked on */ public void onItemClick(Object item) { mNavigator.startBulletinContentActivity((Bulletin) item); } /** * 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> getSelectedByProfile() { return ((BulletinDao) mDataAccess).getFilteredByProfile(); } /** * Get Bulletin data filtered by subdivision which matches User subdivision * @return list of bulletins filtered by User subdivision */ public Collection<Bulletin> getSelectedBySubdivision() { return ((BulletinDao) mDataAccess).getFilteredBySubdiv(); } /** * Return access object to the list of Bulletins * @return */ public IDataAccessObject getDao() { return mDataAccess; } /** * 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<>(); for (Bulletin b : list) { final String text = b.getSubject().toLowerCase(); if (text.contains(query)) { filteredList.add(b); } } return filteredList; } public interface IView { void setViewComponent(); } }