diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/LoginActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/LoginActivity.java index 912598a..9499f31 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/LoginActivity.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/LoginActivity.java @@ -154,8 +154,11 @@ public class LoginActivity extends AppCompatActivity { private void loginProcess(String email, String password) { ValidateUser user = new ValidateUser(email, password); + LdapUser fuser = new LdapUser(email,password,"wmi","tutor","henryk","zdzblo",email); - disposable.add(ldapService.validate(user) +// disposable.add(ldapService.validate(user) + + disposable.add(ldapService.fakeValidate(fuser) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(this::handleResponse, this::handleError)); diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java index 0b6f8b6..72e6d71 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java @@ -95,7 +95,6 @@ public class MapActivity extends BaseActivity @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - myID = PrefUtils.getUserId(getApplicationContext()); // fetching coords service coordinateService = ApiClient.getClient(getApplicationContext()) @@ -140,8 +139,10 @@ public class MapActivity extends BaseActivity removeLocationButton.setOnClickListener(view -> { Log.e(tag + "Manual", "manual coords sending stopped"); + stopBackgroundLocalizationTask(); + // TODO to remove after BGserv - manualLocHandler.removeCallbacks(manualLocStatusChecker); +// manualLocHandler.removeCallbacks(manualLocStatusChecker); removeLocationButton.setVisibility(View.GONE); Toast.makeText(MapActivity.this, "Your marker will disappear in next couple minutes", Toast.LENGTH_SHORT).show(); @@ -156,7 +157,9 @@ public class MapActivity extends BaseActivity setToggleMapBoundsArea(); - setOnMapLongClickListener(); + if (PrefUtils.getIsTutor(this)) { + setOnMapLongClickListener(); + } // addStaticLayer(); } @@ -264,44 +267,8 @@ public class MapActivity extends BaseActivity PrefUtils.getUserId(getApplicationContext()), PrefUtils.getLocationLevel(getApplicationContext()) ); - - // TODO remove after BG sending - manualLocStatusChecker = () -> { - try { - Log.e(tag + "Manual", "sending manual coords"); - // TODO ^^^ wrapper to removve - disposable.add( - coordinateService - .postCoordinate(droppedMarkercoordinate) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribeWith(new DisposableSingleObserver() { - @SuppressLint("LongLogTag") - @Override - public void onSuccess(Coordinate coord) { - Log.e(tag + "POST", String.valueOf(coord)); - } - - @SuppressLint("LongLogTag") - @Override - public void onError(Throwable e) { - - Log.e(tag + "onError", e.getMessage()); - - if (e instanceof HttpException) { - ResponseBody responseBody = ((HttpException) e).response().errorBody(); - Log.e(tag + "onError", RestApiHelper.getErrorMessage(responseBody)); - - } - } - })); - // TODO \/\/\/\/\/ wrapper to removve - } finally { - manualLocHandler.postDelayed(manualLocStatusChecker, mInterval); - } - }; - manualLocStatusChecker.run(); - + PrefUtils.putManualLocation(this, latLng); + handleBackgroundTaskLifeCycle(); } catch (IllegalArgumentException e) { Timber.e(String.valueOf(e)); @@ -334,7 +301,7 @@ public class MapActivity extends BaseActivity public void onSuccess(List coordsList) { - if (coordsList.isEmpty() && tmpLocalMarker != null) { + if (tmpLocalMarker != null && coordsList.isEmpty()) { Timber.e("200 empty []"); mapboxMap.clear(); return; @@ -350,16 +317,13 @@ public class MapActivity extends BaseActivity previousCoordsIds.addAll(currentCoordsIds); } else { // here we clear + it returns bool if sth was removed - if (previousCoordsIds.removeAll(currentCoordsIds)) { - for (String toRemoveId : previousCoordsIds) { - Log.e(tag + "delete: ", "removing: " + toRemoveId + ": " + markerHash.get(toRemoveId)); - mapboxMap.removeMarker(markerHash.get(toRemoveId)); - markerHash.remove(toRemoveId); - coordsMap.remove(toRemoveId); - } - } else { - // TODO double check when some markers api will change - Log.e(tag + "delete: ", "nothing to remove"); + previousCoordsIds.removeAll(currentCoordsIds); + for (String toRemoveId : previousCoordsIds) { + Log.e(tag + "delete: ", "removing: " + toRemoveId + ": " + markerHash.get(toRemoveId)); + mapboxMap.removeMarker(markerHash.get(toRemoveId)); + markerHash.remove(toRemoveId); + coordsMap.remove(toRemoveId); + } } @@ -396,8 +360,8 @@ public class MapActivity extends BaseActivity coordsMap.put(id, element); marker.setPosition(toDestination); - } + } else { Log.e(tag, "Marker Added: " + id); diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/SharingFragment.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/SharingFragment.java index e08ad48..d5beb1f 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/SharingFragment.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/SharingFragment.java @@ -63,14 +63,17 @@ public class SharingFragment extends PreferenceFragment { protected Preference manualStatus; protected ListPreference statusList; - void getStatuses(CompositeDisposable disposable){ + void getStatuses(CompositeDisposable disposable) { disposable.add(statusesService.getUserPredefinedStatuses(PrefUtils.getUserId(getApplicationContext())) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribeWith(new DisposableSingleObserver>() { @Override public void onSuccess(List strings) { - setListPreferenceData(statusList.getKey(),strings.toArray(new String[strings.size()])); + String[] statusesArray = strings.toArray(new String[strings.size()]); + setListPreferenceData(statusList.getKey(), statusesArray); + Log.d("GETSTATUSES", Arrays.toString(statusesArray)); + } @Override @@ -78,6 +81,7 @@ public class SharingFragment extends PreferenceFragment { Toast.makeText(getApplicationContext(), "Error handling status fetch", Toast.LENGTH_SHORT).show(); } + })); } @@ -93,7 +97,7 @@ public class SharingFragment extends PreferenceFragment { manualLocationList = findPreference("key_manual_location_value"); manualLocationButton = (RightButtonPreference) findPreference("manual_location_button"); manualStatus = findPreference("key_manual_status"); - statusList =(ListPreference) findPreference("key_status_value"); + statusList = (ListPreference) findPreference("key_status_value"); statusesService = ApiClient.getClient(getApplicationContext()).create(PredefinedStatusesService.class); disposable = new CompositeDisposable(); @@ -105,27 +109,27 @@ public class SharingFragment extends PreferenceFragment { locationLevelMapping.put(2, SharingLevel.EXACT.toString()); locationLevelMapping.put(3, SharingLevel.MANUAL.toString()); - statusMapping = new HashMap(); - statusMapping.put(0,"available"); - statusMapping.put(1,"consultation"); - statusMapping.put(2,"busy"); + statusMapping.put(0, "available"); + statusMapping.put(1, "consultation"); + statusMapping.put(2, "busy"); /** Main sharing switch**/ locationSharing.setOnPreferenceChangeListener((buttonView, newValue) -> { PrefUtils.storeEnableSharingLocalization(getApplicationContext(), (Boolean) newValue); - ((MapActivity)getActivity()).handleBackgroundTaskLifeCycle(); + ((MapActivity) getActivity()).handleBackgroundTaskLifeCycle(); return true; }); /** Sharing level list **/ +// locationMode.setSummary(PrefUtils.getLocationLevel(getApplicationContext())); locationMode.setOnPreferenceChangeListener((preference, newValue) -> { - PrefUtils.storeLocationMode(getApplicationContext(),locationLevelMapping.get(Integer.parseInt((String) newValue))); - if(PrefUtils.getLocationLevel(getApplicationContext()) == "manual"){ + PrefUtils.storeLocationMode(getApplicationContext(), locationLevelMapping.get(Integer.parseInt((String) newValue))); + if (PrefUtils.getLocationLevel(getApplicationContext()).equals("manual") ) { preferenceCategory.addPreference(manualLocationList); preferenceCategory.addPreference(manualLocationButton); - }else{ + } else { preferenceCategory.removePreference(manualLocationList); preferenceCategory.removePreference(manualLocationButton); } @@ -133,7 +137,7 @@ public class SharingFragment extends PreferenceFragment { }); /** Manual location category hiding when location level is != manual **/ - if(!PrefUtils.getLocationLevel(getApplicationContext()).equals("manual")){ + if (!PrefUtils.getLocationLevel(getApplicationContext()).equals("manual")) { preferenceCategory.removePreference(manualLocationList); preferenceCategory.removePreference(manualLocationButton); } @@ -160,7 +164,7 @@ public class SharingFragment extends PreferenceFragment { statusList.setOnPreferenceChangeListener((preference, newValue) -> { ListPreference lp = (ListPreference) preference; CharSequence [] entries = lp.getEntries(); - PrefUtils.storeStatus(getApplicationContext(),(String) entries[Integer.parseInt((String) newValue)]); + PrefUtils.storeStatus(getApplicationContext(), (String) entries[Integer.parseInt((String) newValue)]); // PrefUtils.storeStatus(getApplicationContext(),statusMapping.get(Integer.parseInt((String) newValue))); return true; @@ -171,10 +175,16 @@ public class SharingFragment extends PreferenceFragment { // updateListPreference(lp, newValue, "manual_statuses"); // PrefUtils.storeStatus(getApplicationContext(),(String) newValue); // statusList.setValue((String) newValue); - disposable.add(statusesService.postUserPredefinedStatus(PrefUtils.getUserId(getApplicationContext()),(String) newValue) + disposable.add(statusesService.postUserPredefinedStatus(PrefUtils.getUserId(getApplicationContext()), (String) newValue) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(this::handleResponse, this::handleError)); +// Log.d("GETSTATUSES", "statusy po dodaniu nowego"); +// getStatuses(disposable); +// CharSequence[] entriesIndexes = statusList.getEntries(); +//// Log.d("GETENTRIES", Arrays.toString(entriesIndexes)); +// Log.d("GETENTRIES ostatni w handle response", (String) entriesIndexes[entriesIndexes.length - 1]); + return true; }); @@ -194,25 +204,26 @@ public class SharingFragment extends PreferenceFragment { return view; } - public String getListPreferenceValue(String key){ + public String getListPreferenceValue(String key) { ListPreference lp = (ListPreference) findPreference(key); - return (String)lp.getEntry(); + return (String) lp.getEntry(); } - protected void updateListPreference(ListPreference lp,Object newValue,String storageKey){ - CharSequence [] entries = lp.getEntries(); + + protected void updateListPreference(ListPreference lp, Object newValue, String storageKey) { + CharSequence[] entries = lp.getEntries(); Set defaultEntries = new HashSet(Arrays.asList(entries)); SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); - Set manualStatusSet = sharedPref.getStringSet(storageKey,defaultEntries); + Set manualStatusSet = sharedPref.getStringSet(storageKey, defaultEntries); manualStatusSet.add((String) newValue); - String [] manualStatusArr = manualStatusSet.toArray(new String[0]); + String[] manualStatusArr = manualStatusSet.toArray(new String[0]); //Arrays.sort(manualStatusArr); - setListPreferenceData(lp.getKey(),manualStatusArr); + setListPreferenceData(lp.getKey(), manualStatusArr); // lp.setValue((String) newValue); SharedPreferences.Editor editor = sharedPref.edit(); - editor.putStringSet(storageKey,manualStatusSet); + editor.putStringSet(storageKey, manualStatusSet); editor.apply(); } @@ -220,36 +231,38 @@ public class SharingFragment extends PreferenceFragment { //todo bug z pustym statusem ListPreference lp = (ListPreference) findPreference(lp_name); lp.setEntries(entries); - CharSequence[] entryValues = new CharSequence [entries.length]; + CharSequence[] entryValues = new CharSequence[entries.length]; - for (int i = 0; i < entries.length; i++){ + for (int i = 0; i < entries.length; i++) { entryValues[i] = Integer.toString(i); } lp.setDefaultValue("1"); lp.setEntryValues(entryValues); } + private void handleResponse(List resp) { - getStatuses(disposable); - String newStatus = resp.toArray(new String[resp.size()])[resp.size()-1]; -// Toast.makeText(getApplicationContext(), newStatus, Toast.LENGTH_SHORT).show(); - - statusList.setValue(Integer.toString(resp.size()-1)); - statusList.setSummary(newStatus); + String newStatus = resp.toArray(new String[resp.size()])[resp.size() - 1]; + Log.d("GETSTATUSES new status", newStatus); + String[] statusesArray = resp.toArray(new String[resp.size()]); + setListPreferenceData(statusList.getKey(), statusesArray); +// Log.d("GETSTATUSES nowe lokalne", Arrays.toString(statusList.getEntries())); +// statusList.setValue(newStatus); + statusList.setValueIndex(resp.size() - 1); } - private void handleError(Throwable error) { - if (error instanceof HttpException) { + private void handleError (Throwable error){ + if (error instanceof HttpException) { - ResponseBody responseBody = ((HttpException) error).response().errorBody(); - Toast.makeText(getApplicationContext(), - RestApiHelper.getErrorMessage(responseBody), Toast.LENGTH_SHORT).show(); + ResponseBody responseBody = ((HttpException) error).response().errorBody(); + Toast.makeText(getApplicationContext(), + RestApiHelper.getErrorMessage(responseBody), Toast.LENGTH_SHORT).show(); - } else { - Toast.makeText(getApplicationContext(), - "Network error " + error.getMessage(), Toast.LENGTH_SHORT).show(); - Log.d("FEEDBACK",error.getMessage()); + } else { + Toast.makeText(getApplicationContext(), + "Network error " + error.getMessage(), Toast.LENGTH_SHORT).show(); + Log.d("FEEDBACK", error.getMessage()); + } } - } } diff --git a/app/src/main/java/com/uam/wmi/findmytutor/service/BackgroundLocalizationService.java b/app/src/main/java/com/uam/wmi/findmytutor/service/BackgroundLocalizationService.java index b257bfd..d901db4 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/service/BackgroundLocalizationService.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/service/BackgroundLocalizationService.java @@ -28,6 +28,7 @@ import com.google.android.gms.location.LocationServices; import com.google.android.gms.tasks.OnSuccessListener; import com.jakewharton.retrofit2.adapter.rxjava2.HttpException; import com.mapbox.geojson.Point; +import com.mapbox.mapboxsdk.geometry.LatLng; import com.uam.wmi.findmytutor.model.Coordinate; import com.uam.wmi.findmytutor.network.ApiClient; import com.uam.wmi.findmytutor.utils.ApproximatedLocalization; @@ -304,15 +305,20 @@ public class BackgroundLocalizationService extends Service { @Override protected Object doInBackground(Object[] objects) { - if (PrefUtils.getLocationLevel(getApplicationContext()).equals(SharingLevel.PRESENCE.toString())) { + String locationLevel = PrefUtils.getLocationLevel(getApplicationContext()); + + if (locationLevel.equals(SharingLevel.PRESENCE.toString())) { latitude = presenceLatitude; longitude = presencelongitude; approximatedBuildingPart = presenceApproximatedName; - } else if (PrefUtils.getLocationLevel(getApplicationContext()).equals(SharingLevel.APPROXIMATED.toString())) { + } else if (locationLevel.equals(SharingLevel.APPROXIMATED.toString())) { List points = approximatedLocalization.getMiddlePointOfBuildingPart(approximatedBuildingPart); - latitude = points.get(0); longitude = points.get(1); + } else if (locationLevel.equals(SharingLevel.MANUAL.toString())) { + LatLng latLng = PrefUtils.getManualLocation(getApplicationContext()); + latitude = latLng.getLatitude(); + longitude = latLng.getLongitude(); } try { @@ -323,7 +329,7 @@ public class BackgroundLocalizationService extends Service { approximatedBuildingPart, (PrefUtils.isStatusEnabled(getApplicationContext())) ? PrefUtils.getUserStatus(getApplicationContext()) : "", PrefUtils.getUserId(getApplicationContext()), - PrefUtils.getLocationLevel(getApplicationContext()) + locationLevel ); disposable.add( diff --git a/app/src/main/java/com/uam/wmi/findmytutor/utils/PrefUtils.java b/app/src/main/java/com/uam/wmi/findmytutor/utils/PrefUtils.java index 6a8793b..5fb12a2 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/utils/PrefUtils.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/utils/PrefUtils.java @@ -5,6 +5,8 @@ import android.content.SharedPreferences; import android.preference.ListPreference; import android.preference.PreferenceFragment; import android.util.Log; + +import com.mapbox.mapboxsdk.geometry.LatLng; import com.uam.wmi.findmytutor.activity.SharingFragment; import com.auth0.android.jwt.Claim; import com.auth0.android.jwt.JWT; @@ -20,11 +22,11 @@ public class PrefUtils { return context.getSharedPreferences("com.uam.wmi.findmytutor_preferences", Context.MODE_PRIVATE); } - public static void getAllKeys(Context context){ - Map keys = getSharedPreferences(context).getAll(); + public static void getAllKeys(Context context) { + Map keys = getSharedPreferences(context).getAll(); - for(Map.Entry entry : keys.entrySet()){ - Log.d("map values",entry.getKey() + ": " + entry.getValue().toString()); + for (Map.Entry entry : keys.entrySet()) { + Log.d("map values", entry.getKey() + ": " + entry.getValue().toString()); } } @@ -54,14 +56,16 @@ public class PrefUtils { return getSharedPreferences(context).getString("USER_ID", null); } - public static boolean isStatusEnabled(Context context){ - return getSharedPreferences(context).getBoolean("key_status_enabled",false); + public static boolean isStatusEnabled(Context context) { + return getSharedPreferences(context).getBoolean("key_status_enabled", false); } + public static String getUserStatus(Context context) { return getSharedPreferences(context).getString("status_entry", "Available"); } - public static void storeStatus(Context context, String status){ + + public static void storeStatus(Context context, String status) { SharedPreferences.Editor editor = getSharedPreferences(context).edit(); editor.putString("status_entry", status); editor.apply(); @@ -91,15 +95,17 @@ public class PrefUtils { return getSharedPreferences(context).getBoolean("key_sharing_enabled", false); } - public static void storeEnableSharingLocalization(Context context,Boolean isChecked) { + public static void storeEnableSharingLocalization(Context context, Boolean isChecked) { SharedPreferences.Editor editor = getSharedPreferences(context).edit(); editor.putBoolean("key_sharing_enabled", isChecked); editor.apply(); } - public static String getLocationLevel(Context context){ + + public static String getLocationLevel(Context context) { return getSharedPreferences(context).getString("location_mode", "exact"); } - public static void storeLocationMode(Context context, String mode){ + + public static void storeLocationMode(Context context, String mode) { SharedPreferences.Editor editor = getSharedPreferences(context).edit(); editor.putString("location_mode", mode); editor.apply(); @@ -150,4 +156,22 @@ public class PrefUtils { editor.putBoolean("BACKGROUND_SERVICE_STATUS", status); editor.apply(); } + + public static void putManualLocation(Context context, LatLng latLng) { + SharedPreferences.Editor editor = getSharedPreferences(context).edit(); + editor.putString("key_location_level","3"); + editor.putString("location_mode", "manual"); + editor.putBoolean("key_sharing_enabled", true); + editor.putLong("longitude_manual_location", Double.doubleToRawLongBits(latLng.getLongitude())); + editor.putLong("latitude_manual_location", Double.doubleToRawLongBits(latLng.getLatitude())); + editor.apply(); + } + + public static LatLng getManualLocation(Context context) { + return new LatLng( + Double.longBitsToDouble(getSharedPreferences(context).getLong("latitude_manual_location", 0)), + Double.longBitsToDouble(getSharedPreferences(context).getLong("longitude_manual_location", 0)) + ); + } + } \ No newline at end of file