Commit ef7a94f5 authored by Sajal Narang's avatar Sajal Narang

Implement search in Placement Blog, Internship Blog, News

parent e917f491
...@@ -65,16 +65,16 @@ public interface RetrofitInterface { ...@@ -65,16 +65,16 @@ public interface RetrofitInterface {
Call<Void> updateUserEventStatus(@Header("Cookie") String sessionID, @Path("eventID") String eventID, @Query("status") int status); Call<Void> updateUserEventStatus(@Header("Cookie") String sessionID, @Path("eventID") String eventID, @Query("status") int status);
@GET("placement-blog") @GET("placement-blog")
Call<List<PlacementBlogPost>> getPlacementBlogFeed(@Header("Cookie") String sessionID, @Query("from") int from,@Query("num") int num); Call<List<PlacementBlogPost>> getPlacementBlogFeed(@Header("Cookie") String sessionID, @Query("from") int from, @Query("num") int num, @Query("query") String query);
@GET("training-blog") @GET("training-blog")
Call<List<TrainingBlogPost>> getTrainingBlogFeed(@Header("Cookie") String sessionID, @Query("from") int from,@Query("num") int num); Call<List<TrainingBlogPost>> getTrainingBlogFeed(@Header("Cookie") String sessionID, @Query("from") int from, @Query("num") int num, @Query("query") String query);
@GET("mess") @GET("mess")
Call<List<HostelMessMenu>> getInstituteMessMenu(@Header("Cookie") String sessionID); Call<List<HostelMessMenu>> getInstituteMessMenu(@Header("Cookie") String sessionID);
@GET("news") @GET("news")
Call<List<NewsArticle>> getNews(@Header("Cookie") String sessionID, @Query("from") int from,@Query("num") int num); Call<List<NewsArticle>> getNews(@Header("Cookie") String sessionID, @Query("from") int from, @Query("num") int num, @Query("query") String query);
@GET("notifications") @GET("notifications")
Call<List<Notification>> getNotifications(@Header("Cookie") String sessionID); Call<List<Notification>> getNotifications(@Header("Cookie") String sessionID);
......
...@@ -31,9 +31,6 @@ public interface DbDao { ...@@ -31,9 +31,6 @@ public interface DbDao {
@Query("SELECT * FROM placementBlogPosts") @Query("SELECT * FROM placementBlogPosts")
List<PlacementBlogPost> getAllPlacementBlogPosts(); List<PlacementBlogPost> getAllPlacementBlogPosts();
@Query("SELECT * FROM placementBlogPosts WHERE title LIKE :query OR content LIKE :query")
List<PlacementBlogPost> searchPlacementBlogPosts(String query);
@Query("SELECT * FROM trainingBlogPosts") @Query("SELECT * FROM trainingBlogPosts")
List<TrainingBlogPost> getAllTrainingBlogPosts(); List<TrainingBlogPost> getAllTrainingBlogPosts();
......
...@@ -10,8 +10,13 @@ import android.support.v4.app.Fragment; ...@@ -10,8 +10,13 @@ import android.support.v4.app.Fragment;
import android.support.v4.widget.SwipeRefreshLayout; import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.text.TextUtils;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
...@@ -21,6 +26,7 @@ import java.util.List; ...@@ -21,6 +26,7 @@ import java.util.List;
import app.insti.ActivityBuffer; import app.insti.ActivityBuffer;
import app.insti.Constants; import app.insti.Constants;
import app.insti.ItemClickListener; import app.insti.ItemClickListener;
import app.insti.MainActivity;
import app.insti.R; import app.insti.R;
import app.insti.adapter.NewsAdapter; import app.insti.adapter.NewsAdapter;
import app.insti.api.RetrofitInterface; import app.insti.api.RetrofitInterface;
...@@ -41,6 +47,7 @@ public class NewsFragment extends BaseFragment { ...@@ -41,6 +47,7 @@ public class NewsFragment extends BaseFragment {
private AppDatabase appDatabase; private AppDatabase appDatabase;
private boolean freshNewsDisplayed = false; private boolean freshNewsDisplayed = false;
public static boolean showLoader = true; public static boolean showLoader = true;
private String searchQuery;
public NewsFragment() { public NewsFragment() {
// Required empty public constructor // Required empty public constructor
...@@ -61,6 +68,8 @@ public class NewsFragment extends BaseFragment { ...@@ -61,6 +68,8 @@ public class NewsFragment extends BaseFragment {
Toolbar toolbar = getActivity().findViewById(R.id.toolbar); Toolbar toolbar = getActivity().findViewById(R.id.toolbar);
toolbar.setTitle("News"); toolbar.setTitle("News");
setHasOptionsMenu(true);
appDatabase = AppDatabase.getAppDatabase(getContext()); appDatabase = AppDatabase.getAppDatabase(getContext());
new NewsFragment.showNewsFromDB().execute(); new NewsFragment.showNewsFromDB().execute();
...@@ -77,7 +86,7 @@ public class NewsFragment extends BaseFragment { ...@@ -77,7 +86,7 @@ public class NewsFragment extends BaseFragment {
private void updateNews() { private void updateNews() {
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class); RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
retrofitInterface.getNews("sessionid=" + getArguments().getString(Constants.SESSION_ID), 0, 20).enqueue(new Callback<List<NewsArticle>>() { retrofitInterface.getNews("sessionid=" + getArguments().getString(Constants.SESSION_ID), 0, 20, searchQuery).enqueue(new Callback<List<NewsArticle>>() {
@Override @Override
public void onResponse(Call<List<NewsArticle>> call, Response<List<NewsArticle>> response) { public void onResponse(Call<List<NewsArticle>> call, Response<List<NewsArticle>> response) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
...@@ -130,7 +139,7 @@ public class NewsFragment extends BaseFragment { ...@@ -130,7 +139,7 @@ public class NewsFragment extends BaseFragment {
loading = true; loading = true;
View v = getActivity().findViewById(R.id.training_feed_swipe_refresh_layout); View v = getActivity().findViewById(R.id.training_feed_swipe_refresh_layout);
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class); RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
retrofitInterface.getNews("sessionid=" + getArguments().getString(Constants.SESSION_ID), layoutManager.getItemCount(), 10).enqueue(new Callback<List<NewsArticle>>() { retrofitInterface.getNews("sessionid=" + getArguments().getString(Constants.SESSION_ID), layoutManager.getItemCount(), 10, searchQuery).enqueue(new Callback<List<NewsArticle>>() {
@Override @Override
public void onResponse(Call<List<NewsArticle>> call, Response<List<NewsArticle>> response) { public void onResponse(Call<List<NewsArticle>> call, Response<List<NewsArticle>> response) {
...@@ -189,4 +198,41 @@ public class NewsFragment extends BaseFragment { ...@@ -189,4 +198,41 @@ public class NewsFragment extends BaseFragment {
} }
} }
} }
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.search_view_menu, menu);
MenuItem item = menu.findItem(R.id.action_search);
SearchView sv = new SearchView(((MainActivity) getActivity()).getSupportActionBar().getThemedContext());
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW | MenuItem.SHOW_AS_ACTION_IF_ROOM);
item.setActionView(sv);
sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
performSearch(query);
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
if (TextUtils.isEmpty(newText)){
//Text is cleared, do your thing
searchQuery = null;
updateNews();
showLoader = true;
return true;
} else if (newText.length() >= 3) {
performSearch(newText);
return true;
}
return false;
}
});
}
private void performSearch(String query) {
searchQuery = query;
updateNews();
showLoader = false;
}
} }
...@@ -12,12 +12,14 @@ import android.support.v7.widget.LinearLayoutManager; ...@@ -12,12 +12,14 @@ import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.SearchView; import android.support.v7.widget.SearchView;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.text.TextUtils;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ImageView;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -47,6 +49,7 @@ public class PlacementBlogFragment extends BaseFragment { ...@@ -47,6 +49,7 @@ public class PlacementBlogFragment extends BaseFragment {
private AppDatabase appDatabase; private AppDatabase appDatabase;
private boolean freshBlogDisplayed = false; private boolean freshBlogDisplayed = false;
public static boolean showLoader = true; public static boolean showLoader = true;
private String searchQuery;
public PlacementBlogFragment() { public PlacementBlogFragment() {
...@@ -86,7 +89,7 @@ public class PlacementBlogFragment extends BaseFragment { ...@@ -86,7 +89,7 @@ public class PlacementBlogFragment extends BaseFragment {
private void updatePlacementFeed() { private void updatePlacementFeed() {
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class); RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
retrofitInterface.getPlacementBlogFeed("sessionid=" + getArguments().getString(Constants.SESSION_ID), 0, 20).enqueue(new Callback<List<PlacementBlogPost>>() { retrofitInterface.getPlacementBlogFeed("sessionid=" + getArguments().getString(Constants.SESSION_ID), 0, 20, searchQuery).enqueue(new Callback<List<PlacementBlogPost>>() {
@Override @Override
public void onResponse(Call<List<PlacementBlogPost>> call, Response<List<PlacementBlogPost>> response) { public void onResponse(Call<List<PlacementBlogPost>> call, Response<List<PlacementBlogPost>> response) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
...@@ -137,7 +140,7 @@ public class PlacementBlogFragment extends BaseFragment { ...@@ -137,7 +140,7 @@ public class PlacementBlogFragment extends BaseFragment {
loading = true; loading = true;
View v = getActivity().findViewById(R.id.placement_feed_swipe_refresh_layout); View v = getActivity().findViewById(R.id.placement_feed_swipe_refresh_layout);
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class); RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
retrofitInterface.getPlacementBlogFeed("sessionid=" + getArguments().getString(Constants.SESSION_ID), layoutManager.getItemCount(), 10).enqueue(new Callback<List<PlacementBlogPost>>() { retrofitInterface.getPlacementBlogFeed("sessionid=" + getArguments().getString(Constants.SESSION_ID), layoutManager.getItemCount(), 10, searchQuery).enqueue(new Callback<List<PlacementBlogPost>>() {
@Override @Override
public void onResponse(Call<List<PlacementBlogPost>> call, Response<List<PlacementBlogPost>> response) { public void onResponse(Call<List<PlacementBlogPost>> call, Response<List<PlacementBlogPost>> response) {
...@@ -197,17 +200,6 @@ public class PlacementBlogFragment extends BaseFragment { ...@@ -197,17 +200,6 @@ public class PlacementBlogFragment extends BaseFragment {
} }
} }
private class performSearch extends AsyncTask<String, Void, List<PlacementBlogPost>> {
@Override
protected List<PlacementBlogPost> doInBackground(String... args) {
return appDatabase.dbDao().searchPlacementBlogPosts(args[0]);
}
protected void onPostExecute(List<PlacementBlogPost> result) {
displayPlacementFeed(result);
}
}
@Override @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.search_view_menu, menu); inflater.inflate(R.menu.search_view_menu, menu);
...@@ -224,14 +216,24 @@ public class PlacementBlogFragment extends BaseFragment { ...@@ -224,14 +216,24 @@ public class PlacementBlogFragment extends BaseFragment {
@Override @Override
public boolean onQueryTextChange(String newText) { public boolean onQueryTextChange(String newText) {
System.out.println("tap"); if (TextUtils.isEmpty(newText)){
//Text is cleared, do your thing
searchQuery = null;
updatePlacementFeed();
showLoader = true;
return true;
} else if (newText.length() >= 3) {
performSearch(newText);
return true;
}
return false; return false;
} }
}); });
} }
private void performSearch(String query) { private void performSearch(String query) {
new performSearch().execute("%" + query + "%"); searchQuery = query;
updatePlacementFeed();
showLoader = false; showLoader = false;
} }
} }
...@@ -10,8 +10,13 @@ import android.support.v4.app.Fragment; ...@@ -10,8 +10,13 @@ import android.support.v4.app.Fragment;
import android.support.v4.widget.SwipeRefreshLayout; import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.text.TextUtils;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
...@@ -21,6 +26,7 @@ import java.util.List; ...@@ -21,6 +26,7 @@ import java.util.List;
import app.insti.ActivityBuffer; import app.insti.ActivityBuffer;
import app.insti.Constants; import app.insti.Constants;
import app.insti.ItemClickListener; import app.insti.ItemClickListener;
import app.insti.MainActivity;
import app.insti.R; import app.insti.R;
import app.insti.adapter.TrainingBlogAdapter; import app.insti.adapter.TrainingBlogAdapter;
import app.insti.api.RetrofitInterface; import app.insti.api.RetrofitInterface;
...@@ -41,6 +47,7 @@ public class TrainingBlogFragment extends BaseFragment { ...@@ -41,6 +47,7 @@ public class TrainingBlogFragment extends BaseFragment {
private AppDatabase appDatabase; private AppDatabase appDatabase;
private boolean freshBlogDisplayed = false; private boolean freshBlogDisplayed = false;
public static boolean showLoader = true; public static boolean showLoader = true;
private String searchQuery;
public TrainingBlogFragment() { public TrainingBlogFragment() {
...@@ -62,6 +69,8 @@ public class TrainingBlogFragment extends BaseFragment { ...@@ -62,6 +69,8 @@ public class TrainingBlogFragment extends BaseFragment {
Toolbar toolbar = getActivity().findViewById(R.id.toolbar); Toolbar toolbar = getActivity().findViewById(R.id.toolbar);
toolbar.setTitle("Training Blog"); toolbar.setTitle("Training Blog");
setHasOptionsMenu(true);
appDatabase = AppDatabase.getAppDatabase(getContext()); appDatabase = AppDatabase.getAppDatabase(getContext());
new TrainingBlogFragment.showTrainingBlogFromDB().execute(); new TrainingBlogFragment.showTrainingBlogFromDB().execute();
...@@ -78,7 +87,7 @@ public class TrainingBlogFragment extends BaseFragment { ...@@ -78,7 +87,7 @@ public class TrainingBlogFragment extends BaseFragment {
private void updateTrainingFeed() { private void updateTrainingFeed() {
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class); RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
retrofitInterface.getTrainingBlogFeed("sessionid=" + getArguments().getString(Constants.SESSION_ID), 0, 20).enqueue(new Callback<List<TrainingBlogPost>>() { retrofitInterface.getTrainingBlogFeed("sessionid=" + getArguments().getString(Constants.SESSION_ID), 0, 20, searchQuery).enqueue(new Callback<List<TrainingBlogPost>>() {
@Override @Override
public void onResponse(Call<List<TrainingBlogPost>> call, Response<List<TrainingBlogPost>> response) { public void onResponse(Call<List<TrainingBlogPost>> call, Response<List<TrainingBlogPost>> response) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
...@@ -129,7 +138,7 @@ public class TrainingBlogFragment extends BaseFragment { ...@@ -129,7 +138,7 @@ public class TrainingBlogFragment extends BaseFragment {
loading = true; loading = true;
View v = getActivity().findViewById(R.id.training_feed_swipe_refresh_layout); View v = getActivity().findViewById(R.id.training_feed_swipe_refresh_layout);
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class); RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
retrofitInterface.getTrainingBlogFeed("sessionid=" + getArguments().getString(Constants.SESSION_ID), layoutManager.getItemCount(), 10).enqueue(new Callback<List<TrainingBlogPost>>() { retrofitInterface.getTrainingBlogFeed("sessionid=" + getArguments().getString(Constants.SESSION_ID), layoutManager.getItemCount(), 10, searchQuery).enqueue(new Callback<List<TrainingBlogPost>>() {
@Override @Override
public void onResponse(Call<List<TrainingBlogPost>> call, Response<List<TrainingBlogPost>> response) { public void onResponse(Call<List<TrainingBlogPost>> call, Response<List<TrainingBlogPost>> response) {
...@@ -188,4 +197,41 @@ public class TrainingBlogFragment extends BaseFragment { ...@@ -188,4 +197,41 @@ public class TrainingBlogFragment extends BaseFragment {
} }
} }
} }
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.search_view_menu, menu);
MenuItem item = menu.findItem(R.id.action_search);
SearchView sv = new SearchView(((MainActivity) getActivity()).getSupportActionBar().getThemedContext());
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW | MenuItem.SHOW_AS_ACTION_IF_ROOM);
item.setActionView(sv);
sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
performSearch(query);
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
if (TextUtils.isEmpty(newText)){
//Text is cleared, do your thing
searchQuery = null;
updateTrainingFeed();
showLoader = true;
return true;
} else if (newText.length() >= 3) {
performSearch(newText);
return true;
}
return false;
}
});
}
private void performSearch(String query) {
searchQuery = query;
updateTrainingFeed();
showLoader = false;
}
} }
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z"/>
</vector>
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"> xmlns:app="http://schemas.android.com/apk/res-auto">
<item <item
android:id="@+id/action_search" android:id="@+id/action_search"
android:icon="@android:drawable/ic_menu_search" android:icon="@drawable/baseline_search_white_24"
android:title="Search" android:title="Search"
app:actionViewClass="android.support.v7.widget.SearchView" app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="always|collapseActionView" /> app:showAsAction="always|collapseActionView" />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment