Commit b129cbde authored by Varun Patil's avatar Varun Patil

Store venues in database

parent 8b06beed
...@@ -15,6 +15,7 @@ import android.location.LocationListener; ...@@ -15,6 +15,7 @@ import android.location.LocationListener;
import android.location.LocationManager; import android.location.LocationManager;
import android.media.AudioManager; import android.media.AudioManager;
import android.media.SoundPool; import android.media.SoundPool;
import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Message; import android.os.Message;
...@@ -91,6 +92,7 @@ import app.insti.MainActivity; ...@@ -91,6 +92,7 @@ import app.insti.MainActivity;
import app.insti.R; import app.insti.R;
import app.insti.api.RetrofitInterface; import app.insti.api.RetrofitInterface;
import app.insti.api.ServiceGenerator; import app.insti.api.ServiceGenerator;
import app.insti.data.AppDatabase;
import app.insti.data.Venue; import app.insti.data.Venue;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Callback; import retrofit2.Callback;
...@@ -102,6 +104,7 @@ public class MapFragment extends Fragment implements TextWatcher, ...@@ -102,6 +104,7 @@ public class MapFragment extends Fragment implements TextWatcher,
TextView.OnEditorActionListener, AdapterView.OnItemClickListener, View.OnFocusChangeListener, TextView.OnEditorActionListener, AdapterView.OnItemClickListener, View.OnFocusChangeListener,
View.OnTouchListener, ExpandableListView.OnChildClickListener { View.OnTouchListener, ExpandableListView.OnChildClickListener {
private static MapFragment mainactivity; private static MapFragment mainactivity;
private AppDatabase appDatabase;
private SettingsManager settingsManager; private SettingsManager settingsManager;
private FuzzySearchAdapter adapter; private FuzzySearchAdapter adapter;
private ExpandableListAdapter expAdapter; private ExpandableListAdapter expAdapter;
...@@ -148,6 +151,7 @@ public class MapFragment extends Fragment implements TextWatcher, ...@@ -148,6 +151,7 @@ public class MapFragment extends Fragment implements TextWatcher,
public SoundPool soundPool; public SoundPool soundPool;
public int[] soundPoolIds; public int[] soundPoolIds;
private boolean locationsShown = false;
private boolean GPSIsSetup = false; private boolean GPSIsSetup = false;
private boolean followingUser = false; private boolean followingUser = false;
private Marker user = new Marker("You", "", 0, 0, -10, ""); private Marker user = new Marker("You", "", 0, 0, -10, "");
...@@ -194,22 +198,57 @@ public class MapFragment extends Fragment implements TextWatcher, ...@@ -194,22 +198,57 @@ public class MapFragment extends Fragment implements TextWatcher,
Toolbar toolbar = getActivity().findViewById(R.id.toolbar); Toolbar toolbar = getActivity().findViewById(R.id.toolbar);
toolbar.setTitle("InstiMap"); toolbar.setTitle("InstiMap");
/* Initialize */
appDatabase = AppDatabase.getAppDatabase(getContext());
getAPILocations();
new showLocationsFromDB().execute();
}
private void getAPILocations() {
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class); RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
retrofitInterface.getAllVenues().enqueue(new Callback<List<Venue>>() { retrofitInterface.getAllVenues().enqueue(new Callback<List<Venue>>() {
@Override @Override
public void onResponse(Call<List<Venue>> call, Response<List<Venue>> response) { public void onResponse(Call<List<Venue>> call, Response<List<Venue>> response) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
new updateDatabase().execute(response.body());
if (!locationsShown) {
setupWithData(response.body()); setupWithData(response.body());
locationsShown = true;
}
} }
} }
@Override @Override
public void onFailure(Call<List<Venue>> call, Throwable t) { public void onFailure(Call<List<Venue>> call, Throwable t) {
setupWithData(new ArrayList<Venue>()); // Do nothing
} }
}); });
} }
private class updateDatabase extends AsyncTask<List<Venue>, Void, Integer> {
@Override
protected Integer doInBackground(List<Venue>... venues) {
appDatabase.dbDao().deleteVenues();
appDatabase.dbDao().insertVenues(venues[0]);
return 1;
}
}
private class showLocationsFromDB extends AsyncTask<String, Void, List<Venue>> {
@Override
protected List<Venue> doInBackground(String... events) {
return appDatabase.dbDao().getAllVenues();
}
protected void onPostExecute(List<Venue> result) {
if (!locationsShown && result.size() > 0) {
setupWithData(result);
locationsShown = true;
}
}
}
void setupWithData(List<Venue> venues) { void setupWithData(List<Venue> venues) {
if (getView() == null || getActivity() == null) return; if (getView() == null || getActivity() == null) return;
Locations mLocations = new Locations(venues); Locations mLocations = new Locations(venues);
......
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