package io.github.droidkaigi.confsched.fragment; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import org.parceler.Parcels; import java.util.List; import io.github.droidkaigi.confsched.model.SearchGroup; import io.github.droidkaigi.confsched.model.Session; import rx.Observable; import rx.Subscription; public class SearchedSessionsFragment extends SessionsFragment { private SearchGroup searchGroup; public static SearchedSessionsFragment newInstance(SearchGroup searchGroup) { SearchedSessionsFragment fragment = new SearchedSessionsFragment(); Bundle bundle = new Bundle(); bundle.putParcelable(SearchGroup.class.getSimpleName(), Parcels.wrap(searchGroup)); fragment.setArguments(bundle); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); searchGroup = Parcels.unwrap(getArguments().getParcelable(SearchGroup.class.getSimpleName())); } @Override protected Subscription loadData() { return getSessionsAsObservable().subscribe(sessions -> { if (!sessions.isEmpty()) { groupByDateSessions(sessions); } }); } private Observable<List<Session>> getSessionsAsObservable() { switch (searchGroup.getType()) { case CATEGORY: return dao.findByCategory(searchGroup.getId()); case PLACE: return dao.findByPlace(searchGroup.getId()); default: throw new IllegalStateException("Search type: " + searchGroup.getType() + " is invalid."); } } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater menuInflater) { // Do nothing } }