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

View File

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

View File

@ -1,18 +1,67 @@
package fr.romanet.vj.apps.myrealestateagency.repository; package fr.romanet.vj.apps.myrealestateagency.repository;
import android.app.Application;
import android.content.Context; import android.content.Context;
import android.location.Address; import android.location.Address;
import android.location.Geocoder; 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.io.IOException;
import java.util.ArrayList;
import java.util.List; 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 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 { public static Address get_lat_long_from_address(String address, Context context) throws IOException {
Geocoder gc = new Geocoder(context); Geocoder gc = new Geocoder(context);
return gc.getFromLocationName(address, 1).get(0); 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,6 +8,7 @@ import java.util.List;
import fr.romanet.vj.apps.myrealestateagency.dao.PropertyDao; import fr.romanet.vj.apps.myrealestateagency.dao.PropertyDao;
import fr.romanet.vj.apps.myrealestateagency.database.RealEstateAgencyDatabase; import fr.romanet.vj.apps.myrealestateagency.database.RealEstateAgencyDatabase;
import fr.romanet.vj.apps.myrealestateagency.entities.Agency;
import fr.romanet.vj.apps.myrealestateagency.entities.Property; import fr.romanet.vj.apps.myrealestateagency.entities.Property;
public class PropertyRepository { public class PropertyRepository {
@ -21,6 +22,8 @@ public class PropertyRepository {
allProperties = propertyDao.getPropertyList(); allProperties = propertyDao.getPropertyList();
} }
public List<Property> getPropertyFromAgencyList(Agency agency){return propertyDao.getPropertyFromAgencyList(agency.agencyId); }
public LiveData<List<Property>> getAllProperties() { public LiveData<List<Property>> getAllProperties() {
return allProperties; return allProperties;
} }

View File

@ -103,9 +103,6 @@ public class MapsActivity extends FragmentActivity implements OnMapReadyCallback
mMap.animateCamera(cu); 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); 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.Config;
import fr.romanet.vj.apps.myrealestateagency.MyApp; 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.Agency;
import fr.romanet.vj.apps.myrealestateagency.entities.Agent; import fr.romanet.vj.apps.myrealestateagency.entities.Agent;
import fr.romanet.vj.apps.myrealestateagency.repository.AgentRepository; 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 MutableLiveData<Integer> selected_agency = new MutableLiveData<>();
public AgentRepository agentRepository; public AgentRepository agentRepository;
SharedPreferences sharedPreferences; public SharedPrefs sharedPrefs;
public AgentsActivityViewModel(@NonNull Application application) public AgentsActivityViewModel(@NonNull Application application)
{ {
super(application); super(application);
agentRepository = new AgentRepository(application); agentRepository = new AgentRepository(application);
sharedPrefs = new SharedPrefs();
agents = agentRepository.getAllAgents(); agents = agentRepository.getAllAgents();
} }
public void setAgents() public void setAgents()
@ -54,8 +57,7 @@ public class AgentsActivityViewModel extends AndroidViewModel implements Lifecyc
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME) @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
private void restore_shared_prefs(){ private void restore_shared_prefs(){
sharedPreferences = MyApp.getContext().getSharedPreferences(Config.getSharedPreferences(), MODE_PRIVATE); int stored_agent_id = sharedPrefs.get_logged_agent_id();
int stored_agent_id = sharedPreferences.getInt(Config.get_selected_agency_index(), -1);
// selected_agency.postValue(stored_agent_id); // selected_agency.postValue(stored_agent_id);
if (stored_agent_id >= 0){ if (stored_agent_id >= 0){

View File

@ -7,6 +7,7 @@ import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel; import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.Lifecycle; import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.OnLifecycleEvent; 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.MapMarker;
import fr.romanet.vj.apps.myrealestateagency.MyApp; 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.MapsActivityRepository;
import fr.romanet.vj.apps.myrealestateagency.repository.PropertyRepository;
import fr.romanet.vj.apps.myrealestateagency.view.MapsActivity; import fr.romanet.vj.apps.myrealestateagency.view.MapsActivity;
public class MapsActivityViewModel extends AndroidViewModel implements LifecycleObserver { 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<>(); public MutableLiveData<List<MapMarker>> markers_to_display = new MutableLiveData<>();
private PropertyRepository propertyRepository;
private MapsActivityRepository mapsActivityRepository;
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME) @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
private void init_map() throws IOException { private void init_map(Application application) throws IOException {
List<MapMarker> mapMarkers = new ArrayList<MapMarker>(); 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; // 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("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("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("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("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("Ivry, France", MyApp.getContext()), "Ivry", BitmapDescriptorFactory.HUE_RED));
// for (MapMarker mapMarker : mapMarkers){ // for (MapMarker mapMarker : mapMarkers){
// latLngs.add(new LatLng(addr.getLatitude(), addr.getLongitude())); // latLngs.add(new LatLng(addr.getLatitude(), addr.getLongitude()));

View File

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