Updated SharedPrefs, added class to call (easier operations).

Built MapsActivityRepository MapMarker builder (not finished)
Linked 'Map' BTN from PropertiesDetailActivity to Intent MapActivity
This commit is contained in:
valentin 2021-01-03 00:19:25 +01:00
parent ab89d29061
commit 0da3570ada
10 changed files with 123 additions and 20 deletions

View File

@ -0,0 +1,27 @@
package fr.romanet.vj.apps.myrealestateagency;
import android.content.SharedPreferences;
import fr.romanet.vj.apps.myrealestateagency.entities.Agency;
import fr.romanet.vj.apps.myrealestateagency.entities.Agent;
import static android.content.Context.MODE_PRIVATE;
public class SharedPrefs {
private SharedPreferences sharedPreferences;
public int get_logged_agent_id(){
sharedPreferences = MyApp.getContext().getSharedPreferences(Config.getSharedPreferences(), MODE_PRIVATE);
return sharedPreferences.getInt(Config.get_selected_agency_index(), -1);
}
public void set_logged_agent_id(Agent agent){
sharedPreferences = MyApp.getContext().getSharedPreferences(Config.getSharedPreferences(), MODE_PRIVATE);
sharedPreferences.edit()
.putInt(Config.get_selected_agency_index(), agent.agentId)
.apply();
}
}

View File

@ -15,6 +15,7 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import fr.romanet.vj.apps.myrealestateagency.Config;
import fr.romanet.vj.apps.myrealestateagency.MyApp;
import fr.romanet.vj.apps.myrealestateagency.SharedPrefs;
import fr.romanet.vj.apps.myrealestateagency.adapter.AgentsAdapter.AgentViewHolder;
import fr.romanet.vj.apps.myrealestateagency.entities.Agent;
import fr.romanet.vj.apps.myrealestateagency.R;
@ -33,7 +34,7 @@ public final class AgentsAdapter extends Adapter<AgentViewHolder>{
private final TextView agencyName;
SharedPreferences sharedPreferences;
SharedPrefs sharedPrefs;
public AgentViewHolder(@NonNull View itemView)
@ -59,11 +60,9 @@ public final class AgentsAdapter extends Adapter<AgentViewHolder>{
intent.putExtra(PropertiesActivity.AGENCY_EXTRA, agent.getAgency());
itemView.getContext().startActivity(intent);
sharedPreferences = MyApp.getContext().getSharedPreferences(Config.getSharedPreferences(), MODE_PRIVATE);
sharedPreferences.edit()
.putInt(Config.get_selected_agency_index(), agent.agentId)
.apply();
// - Store agent into shared prefs for next time (app reopen)
sharedPrefs = new SharedPrefs();
sharedPrefs.set_logged_agent_id(agent);
}
});

View File

@ -9,11 +9,16 @@ import androidx.room.Update;
import java.util.List;
import fr.romanet.vj.apps.myrealestateagency.entities.Agency;
import fr.romanet.vj.apps.myrealestateagency.entities.Agent;
import fr.romanet.vj.apps.myrealestateagency.entities.Property;
@Dao
public interface PropertyDao {
@Query("SELECT * FROM property WHERE belongs_agency_id = :agencyId")
List<Property> getPropertyFromAgencyList(int agencyId);
@Query("SELECT * FROM property")
LiveData<List<Property>> getPropertyList();

View File

@ -1,18 +1,67 @@
package fr.romanet.vj.apps.myrealestateagency.repository;
import android.app.Application;
import android.content.Context;
import android.location.Address;
import android.location.Geocoder;
import androidx.lifecycle.LiveData;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import fr.romanet.vj.apps.myrealestateagency.MapMarker;
import fr.romanet.vj.apps.myrealestateagency.MyApp;
import fr.romanet.vj.apps.myrealestateagency.SharedPrefs;
import fr.romanet.vj.apps.myrealestateagency.entities.Agency;
import fr.romanet.vj.apps.myrealestateagency.entities.Agent;
import fr.romanet.vj.apps.myrealestateagency.entities.Property;
import fr.romanet.vj.apps.myrealestateagency.view.MapsActivity;
public class MapsActivityRepository {
public SharedPrefs sharedPrefs;
public AgentRepository agentRepository;
public PropertyRepository propertyRepository;
public static Address get_lat_long_from_address(String address, Context context) throws IOException {
Geocoder gc = new Geocoder(context);
return gc.getFromLocationName(address, 1).get(0);
}
public List<MapMarker> get_all_map_markers_for_this_agency(Application application) throws IOException {
sharedPrefs = new SharedPrefs();
propertyRepository = new PropertyRepository(application);
int logged_agent_id;
Agency agency;
List<Property> propertiesFromAgency;
List<MapMarker> mapMarkers = new ArrayList<>();
logged_agent_id = sharedPrefs.get_logged_agent_id();
Agent agent = agentRepository.getAgentById(logged_agent_id);
agent.setAgency(agentRepository.getAgency(agent));
agency = agent.getAgency();
propertiesFromAgency = propertyRepository.getPropertyFromAgencyList(agency);
for (Property property: propertiesFromAgency){
if(property.propertyStatue.statueSale){
mapMarkers.add(new MapMarker(get_lat_long_from_address(property.address, MyApp.getContext()), property.description, BitmapDescriptorFactory.HUE_RED));
}else{
mapMarkers.add(new MapMarker(get_lat_long_from_address(property.address, MyApp.getContext()), property.description, BitmapDescriptorFactory.HUE_BLUE));
}
}
return mapMarkers;
}
}

View File

@ -8,9 +8,10 @@ import java.util.List;
import fr.romanet.vj.apps.myrealestateagency.dao.PropertyDao;
import fr.romanet.vj.apps.myrealestateagency.database.RealEstateAgencyDatabase;
import fr.romanet.vj.apps.myrealestateagency.entities.Agency;
import fr.romanet.vj.apps.myrealestateagency.entities.Property;
public class PropertyRepository {
public class PropertyRepository {
public PropertyDao propertyDao;
public LiveData<List<Property>> allProperties;
@ -21,6 +22,8 @@ public class PropertyRepository {
allProperties = propertyDao.getPropertyList();
}
public List<Property> getPropertyFromAgencyList(Agency agency){return propertyDao.getPropertyFromAgencyList(agency.agencyId); }
public LiveData<List<Property>> getAllProperties() {
return allProperties;
}

View File

@ -103,9 +103,6 @@ public class MapsActivity extends FragmentActivity implements OnMapReadyCallback
mMap.animateCamera(cu);
// mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(latlngbnd, 30));
}
});
}

View File

@ -124,4 +124,9 @@ public class PropertiesDetailActivity extends AppCompatActivity {
description.setText("Description : " + property.description);
}
}
public void goto_map(View view) {
Intent i = new Intent(PropertiesDetailActivity.this, MapsActivity.class);
PropertiesDetailActivity.this.startActivity(i);
}
}

View File

@ -17,6 +17,7 @@ import java.util.List;
import fr.romanet.vj.apps.myrealestateagency.Config;
import fr.romanet.vj.apps.myrealestateagency.MyApp;
import fr.romanet.vj.apps.myrealestateagency.SharedPrefs;
import fr.romanet.vj.apps.myrealestateagency.entities.Agency;
import fr.romanet.vj.apps.myrealestateagency.entities.Agent;
import fr.romanet.vj.apps.myrealestateagency.repository.AgentRepository;
@ -30,14 +31,16 @@ public class AgentsActivityViewModel extends AndroidViewModel implements Lifecyc
public MutableLiveData<Integer> selected_agency = new MutableLiveData<>();
public AgentRepository agentRepository;
SharedPreferences sharedPreferences;
public SharedPrefs sharedPrefs;
public AgentsActivityViewModel(@NonNull Application application)
{
super(application);
agentRepository = new AgentRepository(application);
sharedPrefs = new SharedPrefs();
agents = agentRepository.getAllAgents();
}
public void setAgents()
@ -54,8 +57,7 @@ public class AgentsActivityViewModel extends AndroidViewModel implements Lifecyc
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
private void restore_shared_prefs(){
sharedPreferences = MyApp.getContext().getSharedPreferences(Config.getSharedPreferences(), MODE_PRIVATE);
int stored_agent_id = sharedPreferences.getInt(Config.get_selected_agency_index(), -1);
int stored_agent_id = sharedPrefs.get_logged_agent_id();
// selected_agency.postValue(stored_agent_id);
if (stored_agent_id >= 0){

View File

@ -7,6 +7,7 @@ import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.OnLifecycleEvent;
@ -20,7 +21,10 @@ import java.util.Map;
import fr.romanet.vj.apps.myrealestateagency.MapMarker;
import fr.romanet.vj.apps.myrealestateagency.MyApp;
import fr.romanet.vj.apps.myrealestateagency.entities.Agency;
import fr.romanet.vj.apps.myrealestateagency.entities.Property;
import fr.romanet.vj.apps.myrealestateagency.repository.MapsActivityRepository;
import fr.romanet.vj.apps.myrealestateagency.repository.PropertyRepository;
import fr.romanet.vj.apps.myrealestateagency.view.MapsActivity;
public class MapsActivityViewModel extends AndroidViewModel implements LifecycleObserver {
@ -31,16 +35,27 @@ public class MapsActivityViewModel extends AndroidViewModel implements Lifecycle
public MutableLiveData<List<MapMarker>> markers_to_display = new MutableLiveData<>();
private PropertyRepository propertyRepository;
private MapsActivityRepository mapsActivityRepository;
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
private void init_map() throws IOException {
List<MapMarker> mapMarkers = new ArrayList<MapMarker>();
private void init_map(Application application) throws IOException {
mapsActivityRepository = new MapsActivityRepository();
// LiveData<List<Property>> properties = propertyRepository.getAllProperties();
// List<MapMarker> mapMarkers = new ArrayList<MapMarker>();
List<MapMarker> mapMarkers = mapsActivityRepository.get_all_map_markers_for_this_agency(application);
// List<LatLng> latLngs = null;
mapMarkers.add(new MapMarker(MapsActivityRepository.get_lat_long_from_address("Paris, France", MyApp.getContext()), "Paris", BitmapDescriptorFactory.HUE_BLUE));
mapMarkers.add(new MapMarker(MapsActivityRepository.get_lat_long_from_address("Villejuif, France", MyApp.getContext()), "Villejuif", BitmapDescriptorFactory.HUE_BLUE));
mapMarkers.add(new MapMarker(MapsActivityRepository.get_lat_long_from_address("Cachan, France", MyApp.getContext()), "Cachan", BitmapDescriptorFactory.HUE_BLUE));
mapMarkers.add(new MapMarker(MapsActivityRepository.get_lat_long_from_address("Massy, France", MyApp.getContext()), "Massy", BitmapDescriptorFactory.HUE_GREEN));
mapMarkers.add(new MapMarker(MapsActivityRepository.get_lat_long_from_address("Ivry, France", MyApp.getContext()), "Ivry", BitmapDescriptorFactory.HUE_RED));
// mapMarkers.add(new MapMarker(MapsActivityRepository.get_lat_long_from_address("Paris, France", MyApp.getContext()), "Paris", BitmapDescriptorFactory.HUE_BLUE));
// mapMarkers.add(new MapMarker(MapsActivityRepository.get_lat_long_from_address("Villejuif, France", MyApp.getContext()), "Villejuif", BitmapDescriptorFactory.HUE_BLUE));
// mapMarkers.add(new MapMarker(MapsActivityRepository.get_lat_long_from_address("Cachan, France", MyApp.getContext()), "Cachan", BitmapDescriptorFactory.HUE_BLUE));
// mapMarkers.add(new MapMarker(MapsActivityRepository.get_lat_long_from_address("Massy, France", MyApp.getContext()), "Massy", BitmapDescriptorFactory.HUE_GREEN));
// mapMarkers.add(new MapMarker(MapsActivityRepository.get_lat_long_from_address("Ivry, France", MyApp.getContext()), "Ivry", BitmapDescriptorFactory.HUE_RED));
// for (MapMarker mapMarker : mapMarkers){
// latLngs.add(new LatLng(addr.getLatitude(), addr.getLongitude()));

View File

@ -180,6 +180,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Map"
android:onClick="goto_map"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.783"