diff --git a/app/build.gradle b/app/build.gradle
index f739be0..a333d4f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -30,11 +30,19 @@ dependencies {
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
- implementation 'com.google.code.gson:gson:2.8.2'
- implementation 'com.squareup.retrofit2:retrofit:2.3.0'
- implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
+ implementation 'com.google.code.gson:gson:2.8.5'
+ implementation 'com.squareup.retrofit2:retrofit:2.4.0'
+ implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
implementation "io.swagger:swagger-annotations:1.5.15"
implementation "org.threeten:threetenbp:1.3.5"
- implementation "com.squareup.okhttp3:logging-interceptor:3.10.0"
implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:6.4.0'
+ implementation 'io.reactivex.rxjava2:rxjava:2.2.0'
+ implementation 'com.android.support:recyclerview-v7:27.1.1'
+ implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
+ implementation "com.jakewharton:butterknife:8.8.1"
+ annotationProcessor "com.jakewharton:butterknife-compiler:8.8.1"
+ implementation "com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0"
+ implementation "com.squareup.okhttp3:okhttp:3.11.0"
+ implementation "com.squareup.okhttp3:okhttp-urlconnection:3.10.0"
+ implementation "com.squareup.okhttp3:logging-interceptor:3.11.0"
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0192f05..55a5adf 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,7 +8,8 @@
-
+
+
() {
+ @Override
+ public void onSuccess(JwtToken jwtToken) {
+ PrefUtils.storeApiKey(getApplicationContext(), jwtToken.getToken());
+ onPostExecute(true);
+ }
- Log.e("Login", "jwt token: " + user);
+ @Override
+ public void onError(Throwable e) {
+ Log.e("LoginError", "onError: " + e.getMessage());
+ }
+ }));
+ return true;
- try {
- Response loginResponse = service.fakeValidate(user).execute();
- Log.e("Login", "jwt token: " + loginResponse.body());
- if (loginResponse.isSuccessful()) {
- String authToken = loginResponse.body().getToken();
- Log.e("Login", "jwt token: " + authToken);
-
- SharedPreferences sharedPref = getSharedPreferences("fmtPrefs", Context.MODE_PRIVATE);
- sharedPref.edit().putString("authToken", authToken).putBoolean("loggedIn", true).apply();
-
- return true;
- }
-
- } catch (Exception e) {
- Log.e("Login error", "Something went wrong while logging in...");
- return false;
- }
-
- return false;
}
@Override
@@ -361,6 +365,7 @@ public class LoginActivity extends AppCompatActivity implements LoaderCallbacks<
mPasswordView.setError(getString(R.string.error_incorrect_password));
mPasswordView.requestFocus();
}
+
}
@Override
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/MainActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/MainActivity.java
index b379007..e2c9158 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/activity/MainActivity.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/MainActivity.java
@@ -6,24 +6,17 @@ import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
-import android.util.Log;
import android.view.View;
-import android.widget.Button;
-import android.widget.Toast;
import com.mapbox.mapboxsdk.Mapbox;
import com.mapbox.mapboxsdk.maps.MapView;
import com.uam.wmi.findmytutor.R;
import com.uam.wmi.findmytutor.model.Coordinate;
-import com.uam.wmi.findmytutor.network.RetrofitClientInstance;
-import com.uam.wmi.findmytutor.service.Coordinates;
+import com.uam.wmi.findmytutor.network.ApiClient;
+import com.uam.wmi.findmytutor.service.CoordinateService;
import java.util.List;
-import retrofit2.Call;
-import retrofit2.Callback;
-import retrofit2.Response;
-
public class MainActivity extends AppCompatActivity {
private MapView mapView;
@@ -62,46 +55,10 @@ public class MainActivity extends AppCompatActivity {
mapView = (MapView) findViewById(R.id.mapView);
mapView.onCreate(savedInstanceState);
- final SharedPreferences sharedPref = getSharedPreferences("fmtPrefs", Context.MODE_PRIVATE);
- final String authToken = sharedPref.getString("authToken",null);
-
- Coordinates service = RetrofitClientInstance.createService(Coordinates.class,authToken);
-
- Call> call = service.getOnlineCoordinates();
+ CoordinateService service = ApiClient.getClient(getApplicationContext())
+ .create(CoordinateService.class);
- call.enqueue(new Callback>() {
- @Override
- public void onResponse(Call> call, Response> response) {
- Log.e("MainActivity", "rsp: " + response.body());
-
- setCoordinates(response.body());
-
-
- /* mapView.getMapAsync(new OnMapReadyCallback() {
- @Override
- public void onMapReady(MapboxMap mapboxMap,List response) {
-
- // Add the custom icon marker to the map
- for(Coordinate coord: response.body()){
- mapboxMap.addMarker(new MarkerOptions()
- .position(new LatLng(coord.getLatitude(), coord.getLongitude()))
-
- }
-
- }
- });*/
- }
-
- @Override
- public void onFailure(Call> call, Throwable t) {
- Toast.makeText(MainActivity.this, "Something went wrong...Error message: " + t.getMessage(), Toast.LENGTH_SHORT).show();
- }
-
-
-
-
- });
}
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/BaseResponse.java b/app/src/main/java/com/uam/wmi/findmytutor/model/BaseResponse.java
new file mode 100644
index 0000000..21b73c1
--- /dev/null
+++ b/app/src/main/java/com/uam/wmi/findmytutor/model/BaseResponse.java
@@ -0,0 +1,9 @@
+package com.uam.wmi.findmytutor.model;
+
+public class BaseResponse {
+ String error;
+
+ public String getError() {
+ return error;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/Coordinate.java b/app/src/main/java/com/uam/wmi/findmytutor/model/Coordinate.java
index 017b640..95e9b59 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/model/Coordinate.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/model/Coordinate.java
@@ -11,7 +11,7 @@ import io.swagger.annotations.ApiModelProperty;
* Coordinate
*/
-public class Coordinate {
+public class Coordinate extends BaseResponse{
@SerializedName("coordinateId")
private UUID coordinateId = null;
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/DutyHour.java b/app/src/main/java/com/uam/wmi/findmytutor/model/DutyHour.java
index a2d0fe3..46cbdb3 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/model/DutyHour.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/model/DutyHour.java
@@ -11,7 +11,7 @@ import io.swagger.annotations.ApiModelProperty;
* DutyHour
*/
-public class DutyHour {
+public class DutyHour extends BaseResponse {
@SerializedName("dutyHourId")
private UUID dutyHourId = null;
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/IsUsingListBool.java b/app/src/main/java/com/uam/wmi/findmytutor/model/IsUsingListBool.java
index e11d6ac..36e0345 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/model/IsUsingListBool.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/model/IsUsingListBool.java
@@ -3,7 +3,7 @@ package com.uam.wmi.findmytutor.model;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
-public class IsUsingListBool {
+public class IsUsingListBool extends BaseResponse{
@SerializedName("isUsing")
@Expose
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/IsUsingListBoolModel.java b/app/src/main/java/com/uam/wmi/findmytutor/model/IsUsingListBoolModel.java
index 511e578..fd29619 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/model/IsUsingListBoolModel.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/model/IsUsingListBoolModel.java
@@ -10,7 +10,7 @@ import io.swagger.annotations.ApiModelProperty;
* IsUsingListBoolModel
*/
-public class IsUsingListBoolModel {
+public class IsUsingListBoolModel extends BaseResponse {
@SerializedName("isUsing")
private Boolean isUsing = null;
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/LdapUser.java b/app/src/main/java/com/uam/wmi/findmytutor/model/LdapUser.java
index 22a640b..b57c702 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/model/LdapUser.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/model/LdapUser.java
@@ -11,7 +11,7 @@ import io.swagger.annotations.ApiModelProperty;
* LdapUser
*/
-public class LdapUser {
+public class LdapUser extends BaseResponse{
@SerializedName("login")
private String login = null;
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/Model.java b/app/src/main/java/com/uam/wmi/findmytutor/model/Model.java
new file mode 100644
index 0000000..3b5ee47
--- /dev/null
+++ b/app/src/main/java/com/uam/wmi/findmytutor/model/Model.java
@@ -0,0 +1,16 @@
+package com.uam.wmi.findmytutor.model;
+
+
+import com.google.gson.annotations.SerializedName;
+
+public class Model
+{
+ @SerializedName("data")
+ private PagedResult data;
+
+ public PagedResult getData ()
+ {
+ return data;
+ }
+
+}
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/PagedResult.java b/app/src/main/java/com/uam/wmi/findmytutor/model/PagedResult.java
index 9e7ad33..db05386 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/model/PagedResult.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/model/PagedResult.java
@@ -1,14 +1,15 @@
package com.uam.wmi.findmytutor.model;
-import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
-public class PagedResult {
+import java.util.List;
+
+public class PagedResult {
@SerializedName("results")
@Expose
- private List results = null;
+ private List results = null;
@SerializedName("currentPage")
@Expose
private Integer currentPage;
@@ -28,11 +29,11 @@ public class PagedResult {
@Expose
private Integer lastRowOnPage;
- public List getResults() {
+ public List getResults() {
return results;
}
- public void setResults(List results) {
+ public void setResults(List results) {
this.results = results;
}
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/PagedResultUserResponseModel.java b/app/src/main/java/com/uam/wmi/findmytutor/model/PagedResultUserResponseModel.java
index 1898ce7..0e16bb2 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/model/PagedResultUserResponseModel.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/model/PagedResultUserResponseModel.java
@@ -12,7 +12,7 @@ import io.swagger.annotations.ApiModelProperty;
* PagedResultUserResponseModel
*/
-public class PagedResultUserResponseModel {
+public class PagedResultUserResponseModel extends BaseResponse {
@SerializedName("results")
private List results = null;
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/Result.java b/app/src/main/java/com/uam/wmi/findmytutor/model/Result.java
index 6fc4336..1e4f111 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/model/Result.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/model/Result.java
@@ -1,9 +1,10 @@
package com.uam.wmi.findmytutor.model;
-import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
-public class Result {
+import java.util.List;
+
+public class Result extends BaseResponse {
@SerializedName("id")
@Expose
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/StudentIdModel.java b/app/src/main/java/com/uam/wmi/findmytutor/model/StudentIdModel.java
index 33c8880..3eea407 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/model/StudentIdModel.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/model/StudentIdModel.java
@@ -11,7 +11,7 @@ import io.swagger.annotations.ApiModelProperty;
* StudentIdModel
*/
-public class StudentIdModel {
+public class StudentIdModel extends BaseResponse{
@SerializedName("studentId")
private String studentId = null;
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/TutorTab.java b/app/src/main/java/com/uam/wmi/findmytutor/model/TutorTab.java
index 96d1332..62916f1 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/model/TutorTab.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/model/TutorTab.java
@@ -15,7 +15,7 @@ import io.swagger.annotations.ApiModelProperty;
* TutorTab
*/
-public class TutorTab {
+public class TutorTab extends BaseResponse{
@SerializedName("tutorTabId")
private UUID tutorTabId = null;
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/User.java b/app/src/main/java/com/uam/wmi/findmytutor/model/User.java
index 3e7f9cc..f16add4 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/model/User.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/model/User.java
@@ -15,7 +15,7 @@ import io.swagger.annotations.ApiModelProperty;
* User
*/
-public class User {
+public class User extends BaseResponse{
@SerializedName("isOnline")
private Boolean isOnline = null;
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/UserResponseModel.java b/app/src/main/java/com/uam/wmi/findmytutor/model/UserResponseModel.java
index cef0da8..c927500 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/model/UserResponseModel.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/model/UserResponseModel.java
@@ -12,7 +12,7 @@ import io.swagger.annotations.ApiModelProperty;
* UserResponseModel
*/
-public class UserResponseModel {
+public class UserResponseModel extends BaseResponse{
@SerializedName("id")
private String id = null;
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/network/ApiClient.java b/app/src/main/java/com/uam/wmi/findmytutor/network/ApiClient.java
new file mode 100644
index 0000000..008a6cc
--- /dev/null
+++ b/app/src/main/java/com/uam/wmi/findmytutor/network/ApiClient.java
@@ -0,0 +1,75 @@
+package com.uam.wmi.findmytutor.network;
+
+import android.content.Context;
+import android.text.TextUtils;
+
+import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
+import com.uam.wmi.findmytutor.utils.PrefUtils;
+
+import java.io.IOException;
+import java.util.concurrent.TimeUnit;
+
+import okhttp3.Interceptor;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.Response;
+import okhttp3.logging.HttpLoggingInterceptor;
+import retrofit2.Retrofit;
+import retrofit2.converter.gson.GsonConverterFactory;
+
+
+public class ApiClient {
+ private static Retrofit retrofit = null;
+ private static int REQUEST_TIMEOUT = 60;
+ private static OkHttpClient okHttpClient;
+ private static final String BASE_URL = "https://s416084.projektstudencki.pl/develop/";
+
+ public static Retrofit getClient(Context context) {
+
+ if (okHttpClient == null)
+ initOkHttp(context);
+
+ if (retrofit == null) {
+ retrofit = new Retrofit.Builder()
+ .baseUrl(BASE_URL)
+ .client(okHttpClient)
+ .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+ .addConverterFactory(GsonConverterFactory.create())
+ .build();
+ }
+ return retrofit;
+ }
+
+ private static void initOkHttp(final Context context) {
+ OkHttpClient.Builder httpClient = new OkHttpClient().newBuilder()
+ .connectTimeout(REQUEST_TIMEOUT, TimeUnit.SECONDS)
+ .readTimeout(REQUEST_TIMEOUT, TimeUnit.SECONDS)
+ .writeTimeout(REQUEST_TIMEOUT, TimeUnit.SECONDS);
+
+ HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
+ interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
+
+ httpClient.addInterceptor(interceptor);
+
+ httpClient.addInterceptor(new Interceptor() {
+ @Override
+ public Response intercept(Chain chain) throws IOException {
+ Request original = chain.request();
+ Request.Builder requestBuilder = original.newBuilder()
+ .addHeader("Accept", "application/json")
+ .addHeader("Content-Type", "application/json");
+
+ // Adding Authorization token (API Key)
+ // Requests will be denied without API key
+ if (!TextUtils.isEmpty(PrefUtils.getApiKey(context))) {
+ requestBuilder.addHeader("Authorization", PrefUtils.getApiKey(context));
+ }
+
+ Request request = requestBuilder.build();
+ return chain.proceed(request);
+ }
+ });
+
+ okHttpClient = httpClient.build();
+ }
+ };
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/network/RetrofitClientInstance.java b/app/src/main/java/com/uam/wmi/findmytutor/network/RetrofitClientInstance.java
deleted file mode 100644
index 77db473..0000000
--- a/app/src/main/java/com/uam/wmi/findmytutor/network/RetrofitClientInstance.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.uam.wmi.findmytutor.network;
-
-import okhttp3.OkHttpClient;
-import okhttp3.Request;
-import okhttp3.logging.HttpLoggingInterceptor;
-import retrofit2.Retrofit;
-import retrofit2.converter.gson.GsonConverterFactory;
-
-public class RetrofitClientInstance {
-
- private static final String BASE_URL = "https://s416084.projektstudencki.pl/develop/";
-
- private static Retrofit.Builder builder
- = new Retrofit.Builder()
- .baseUrl(BASE_URL)
- .addConverterFactory(GsonConverterFactory.create());
-
- private static Retrofit retrofit = builder.build();
-
- private static OkHttpClient.Builder httpClient
- = new OkHttpClient.Builder();
-
- private static HttpLoggingInterceptor logging
- = new HttpLoggingInterceptor()
- .setLevel(HttpLoggingInterceptor.Level.BASIC);
-
- public static S createService(Class serviceClass) {
- if (!httpClient.interceptors().contains(logging)) {
- httpClient.addInterceptor(logging);
- builder.client(httpClient.build());
- retrofit = builder.build();
- }
- return retrofit.create(serviceClass);
- }
-
- public static S createService(Class serviceClass, final String token) {
- if (token != null) {
- httpClient.interceptors().clear();
- httpClient.addInterceptor(chain -> {
- Request original = chain.request();
- Request.Builder builder1 = original.newBuilder()
- .header("Authorization", "Bearer " + token);
- Request request = builder1.build();
- return chain.proceed(request);
- });
- builder.client(httpClient.build());
- retrofit = builder.build();
- }
- return retrofit.create(serviceClass);
- }
-}
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/service/Coordinates.java b/app/src/main/java/com/uam/wmi/findmytutor/service/CoordinateService.java
similarity index 97%
rename from app/src/main/java/com/uam/wmi/findmytutor/service/Coordinates.java
rename to app/src/main/java/com/uam/wmi/findmytutor/service/CoordinateService.java
index 088cd3c..877bec2 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/service/Coordinates.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/service/CoordinateService.java
@@ -13,7 +13,7 @@ import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;
-public interface Coordinates {
+public interface CoordinateService {
@GET("api/coordinates")
Call> getAllCoordinates();
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/service/LdapService.java b/app/src/main/java/com/uam/wmi/findmytutor/service/LdapService.java
index 3583d2a..bb262f5 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/service/LdapService.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/service/LdapService.java
@@ -3,7 +3,7 @@ package com.uam.wmi.findmytutor.service;
import com.uam.wmi.findmytutor.model.JwtToken;
import com.uam.wmi.findmytutor.model.LdapUser;
-import retrofit2.Call;
+import io.reactivex.Single;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
@@ -12,15 +12,15 @@ import retrofit2.http.Path;
public interface LdapService {
@POST("api/ldap/fakeValidate")
- Call fakeValidate(@Body LdapUser user);
+ Single fakeValidate(@Body LdapUser user);
@POST("api/ldap/validate")
- Call validate(@Body LdapUser user);
+ Single validate(@Body LdapUser user);
@GET("api/ldap/getUserData/{login}")
- Call getUserDataByLogin(@Path("login") String userLogin);
+ Single getUserDataByLogin(@Path("login") String userLogin);
@GET("api/ldap/getUserData/email/{email}")
- Call getUserDataByMail(@Path("email") String userMail);
+ Single getUserDataByMail(@Path("email") String userMail);
}
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/service/UserService.java b/app/src/main/java/com/uam/wmi/findmytutor/service/UserService.java
index 0df22c1..a0dbea3 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/service/UserService.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/service/UserService.java
@@ -1,77 +1,77 @@
package com.uam.wmi.findmytutor.service;
-import com.uam.wmi.findmytutor.model.JwtToken;
-import com.uam.wmi.findmytutor.model.PagedResult;
-import com.uam.wmi.findmytutor.model.User;
+
import com.uam.wmi.findmytutor.model.IsUsingListBool;
+import com.uam.wmi.findmytutor.model.PagedResult;
import com.uam.wmi.findmytutor.model.StudentIdModel;
+import com.uam.wmi.findmytutor.model.User;
+
import java.util.List;
-import okhttp3.ResponseBody;
-import retrofit2.Call;
+import io.reactivex.Completable;
+import io.reactivex.Single;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.GET;
-import retrofit2.http.PUT;
import retrofit2.http.POST;
+import retrofit2.http.PUT;
import retrofit2.http.Path;
-import retrofit2.http.Header;
public interface UserService {
@GET("api/users")
- Call> getAllUsers();
+ Single > getAllUsers();
@POST("api/users")
- Call createUser(@Body User user);
+ Completable createUser(@Body User user);
@GET("api/users/page/{pageNum}")
- Call getPagedUsers(@Path("pageNum") String pageNum );
+ Single getPagedUsers(@Path("pageNum") String pageNum );
- @GET("/api/users/tutors/page/{pageNum}")
- Call getPagedTutors(@Path("pageNum") String pageNum);
+ @GET("api/users/tutors/page/{pageNum}")
+ Single getPagedTutors(@Path("pageNum") String pageNum);
- @GET("/api/users/students/page/{pageNum}")
- Call getPagedStudents(@Path("pageNum") String pageNum);
+ @GET("api/users/students/page/{pageNum}")
+ Single getPagedStudents(@Path("pageNum") String pageNum);
@GET("api/users/{id}")
- Call getUserByID(@Path("id") String userID);
+ Single getUserByID(@Path("id") String userID);
@PUT("api/users/{id}")
- Call updateUserByID(@Path("id") String userID, @Body User user);
+ Completable updateUserByID(@Path("id") String userID, @Body User user);
@DELETE("api/users/{id}")
- Call deleteUserByID(@Path("id") String userID);
+ Completable deleteUserByID(@Path("id") String userID);
@GET("api/users/userLogin/{ldapLogin}")
- Call getUserLdapLogin(@Path("ldapLogin") String ldapLogin);
+ Single getUserLdapLogin(@Path("ldapLogin") String ldapLogin);
@PUT("api/users/setActive/{userID}")
- Call setUserActive(@Path("userID") String userID);
+ Completable setUserActive(@Path("userID") String userID);
@PUT("api/users/setInActive/{userID}")
- Call setUserInActive(@Path("userID") String userID);
+ Completable setUserInActive(@Path("userID") String userID);
@GET("api/users/blacklist/{tutorID}")
- Call> getTutorBlacklistedByID(@Path("tutorID") String tutorID);
+ Single> getTutorBlacklistedByID(@Path("tutorID") String tutorID);
@PUT("api/users/blacklist/{tutorID}")
- Call setTutorBlacklist(@Path("tutorID") String tutorID, @Body IsUsingListBool isUsing);
+ Completable setTutorBlacklist(@Path("tutorID") String tutorID, @Body IsUsingListBool isUsing);
@POST("api/users/blacklist/{tutorID}")
- Call addStudentToBlacklist(@Path("tutorID") String tutorID, @Body StudentIdModel student);
+ Completable addStudentToBlacklist(@Path("tutorID") String tutorID, @Body StudentIdModel student);
@DELETE("api/users/blacklist/{tutorID}")
- Call> removeStudentFromBlacklist(@Path("tutorID") String tutorID, @Body StudentIdModel student);
+ Completable removeStudentFromBlacklist(@Path("tutorID") String tutorID, @Body StudentIdModel student);
@GET("api/users/whitelist/{tutorID}")
- Call> getTutorwhitelistedByID(@Path("tutorID") String tutorID);
+ Single> getTutorwhitelistedByID(@Path("tutorID") String tutorID);
@PUT("api/users/whitelist/{tutorID}")
- Call setTutorWhitelist(@Path("tutorID") String tutorID, @Body IsUsingListBool isUsing);
+ Completable setTutorWhitelist(@Path("tutorID") String tutorID, @Body IsUsingListBool isUsing);
@POST("api/users/whitelist/{tutorID}")
- Call addStudentTowhitelist(@Path("tutorID") String tutorID, @Body StudentIdModel student);
+ Completable addStudentTowhitelist(@Path("tutorID") String tutorID, @Body StudentIdModel student);
@DELETE("api/users/whitelist/{tutorID}")
- Call> removeStudentFromWhitelist(@Path("tutorID") String tutorID, @Body StudentIdModel student);
+ Completable removeStudentFromWhitelist(@Path("tutorID") String tutorID, @Body StudentIdModel student);
}
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/utils/MyDividerItemDecoration.java b/app/src/main/java/com/uam/wmi/findmytutor/utils/MyDividerItemDecoration.java
new file mode 100644
index 0000000..96a4d62
--- /dev/null
+++ b/app/src/main/java/com/uam/wmi/findmytutor/utils/MyDividerItemDecoration.java
@@ -0,0 +1,98 @@
+package com.uam.wmi.findmytutor.utils;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.util.TypedValue;
+import android.view.View;
+
+public class MyDividerItemDecoration extends RecyclerView.ItemDecoration {
+
+ private static final int[] ATTRS = new int[]{
+ android.R.attr.listDivider
+ };
+
+ public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL;
+ public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL;
+
+ private Drawable mDivider;
+ private int mOrientation;
+ private Context context;
+ private int margin;
+
+ public MyDividerItemDecoration(Context context, int orientation, int margin) {
+ this.context = context;
+ this.margin = margin;
+ final TypedArray a = context.obtainStyledAttributes(ATTRS);
+ mDivider = a.getDrawable(0);
+ a.recycle();
+ setOrientation(orientation);
+ }
+
+ public void setOrientation(int orientation) {
+ if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST) {
+ throw new IllegalArgumentException("invalid orientation");
+ }
+ mOrientation = orientation;
+ }
+
+ @Override
+ public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
+ if (mOrientation == VERTICAL_LIST) {
+ drawVertical(c, parent);
+ } else {
+ drawHorizontal(c, parent);
+ }
+ }
+
+ public void drawVertical(Canvas c, RecyclerView parent) {
+ final int left = parent.getPaddingLeft();
+ final int right = parent.getWidth() - parent.getPaddingRight();
+
+ final int childCount = parent.getChildCount();
+ for (int i = 0; i < childCount; i++) {
+ final View child = parent.getChildAt(i);
+ final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
+ .getLayoutParams();
+ final int top = child.getBottom() + params.bottomMargin;
+ final int bottom = top + mDivider.getIntrinsicHeight();
+ mDivider.setBounds(left + dpToPx(margin), top, right - dpToPx(margin), bottom);
+ mDivider.draw(c);
+ }
+ }
+
+ public void drawHorizontal(Canvas c, RecyclerView parent) {
+ final int top = parent.getPaddingTop();
+ final int bottom = parent.getHeight() - parent.getPaddingBottom();
+
+ final int childCount = parent.getChildCount();
+ for (int i = 0; i < childCount; i++) {
+ final View child = parent.getChildAt(i);
+ final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
+ .getLayoutParams();
+ final int left = child.getRight() + params.rightMargin;
+ final int right = left + mDivider.getIntrinsicHeight();
+ mDivider.setBounds(left, top + dpToPx(margin), right, bottom - dpToPx(margin));
+ mDivider.draw(c);
+ }
+ }
+
+ @Override
+ public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
+ if (mOrientation == VERTICAL_LIST) {
+ outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());
+ } else {
+ outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);
+ }
+ }
+
+ private int dpToPx(int dp) {
+ Resources r = context.getResources();
+ return Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, r.getDisplayMetrics()));
+ }
+}
\ No newline at end of file
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
new file mode 100644
index 0000000..8613c34
--- /dev/null
+++ b/app/src/main/java/com/uam/wmi/findmytutor/utils/PrefUtils.java
@@ -0,0 +1,27 @@
+package com.uam.wmi.findmytutor.utils;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+
+public class PrefUtils {
+ /**
+ * Storing API Key in shared preferences to
+ * add it in header part of every retrofit request
+ */
+ public PrefUtils() {
+ }
+
+ private static SharedPreferences getSharedPreferences(Context context) {
+ return context.getSharedPreferences("APP_PREF", Context.MODE_PRIVATE);
+ }
+
+ public static void storeApiKey(Context context, String apiKey) {
+ SharedPreferences.Editor editor = getSharedPreferences(context).edit();
+ editor.putString("API_KEY", apiKey);
+ editor.commit();
+ }
+
+ public static String getApiKey(Context context) {
+ return getSharedPreferences(context).getString("API_KEY", null);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/utils/RecyclerTouchListener.java b/app/src/main/java/com/uam/wmi/findmytutor/utils/RecyclerTouchListener.java
new file mode 100644
index 0000000..28aef5d
--- /dev/null
+++ b/app/src/main/java/com/uam/wmi/findmytutor/utils/RecyclerTouchListener.java
@@ -0,0 +1,54 @@
+package com.uam.wmi.findmytutor.utils;
+
+import android.content.Context;
+import android.support.v7.widget.RecyclerView;
+import android.view.GestureDetector;
+import android.view.MotionEvent;
+import android.view.View;
+
+public class RecyclerTouchListener implements RecyclerView.OnItemTouchListener {
+
+ private ClickListener clicklistener;
+ private GestureDetector gestureDetector;
+
+ public RecyclerTouchListener(Context context, final RecyclerView recycleView, final ClickListener clicklistener) {
+
+ this.clicklistener = clicklistener;
+ gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
+ @Override
+ public boolean onSingleTapUp(MotionEvent e) {
+ return true;
+ }
+
+ @Override
+ public void onLongPress(MotionEvent e) {
+ View child = recycleView.findChildViewUnder(e.getX(), e.getY());
+ if (child != null && clicklistener != null) {
+ clicklistener.onLongClick(child, recycleView.getChildAdapterPosition(child));
+ }
+ }
+ });
+ }
+
+ @Override
+ public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
+ View child = rv.findChildViewUnder(e.getX(), e.getY());
+ if (child != null && clicklistener != null && gestureDetector.onTouchEvent(e)) {
+ clicklistener.onClick(child, rv.getChildAdapterPosition(child));
+ }
+ return false;
+ }
+
+ @Override
+ public void onTouchEvent(RecyclerView rv, MotionEvent e) {
+ }
+
+ @Override
+ public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
+ }
+
+ public interface ClickListener {
+ void onClick(View view, int position);
+ void onLongClick(View view, int position);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/tutor_list_row.xml b/app/src/main/res/layout/tutor_list_row.xml
new file mode 100644
index 0000000..8ec9c3d
--- /dev/null
+++ b/app/src/main/res/layout/tutor_list_row.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/array.xml b/app/src/main/res/values/array.xml
new file mode 100644
index 0000000..aadfc8e
--- /dev/null
+++ b/app/src/main/res/values/array.xml
@@ -0,0 +1,43 @@
+
+
+
+ - #e84e40
+ - #ec407a
+ - #ab47bc
+ - #7e57c2
+ - #5c6bc0
+ - #738ffe
+ - #29b6f6
+ - #26c6da
+ - #26a69a
+ - #2baf2b
+ - #9ccc65
+ - #d4e157
+ - #ffee58
+ - #ffa726
+ - #ff7043
+ - #8d6e63
+ - #bdbdbd
+ - #78909c
+
+
+ - #e51c23
+ - #e91e63
+ - #9c27b0
+ - #673ab7
+ - #3f51b5
+ - #5677fc
+ - #03a9f4
+ - #00bcd4
+ - #009688
+ - #259b24
+ - #8bc34a
+ - #cddc39
+ - #ffeb3b
+ - #ff9800
+ - #ff5722
+ - #795548
+ - #9e9e9e
+ - #607d8b
+
+
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 3ab3e9c..4e15c2e 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -3,4 +3,8 @@
#3F51B5
#303F9F
#FF4081
+ #999
+ #89c3c3c3
+ #858585
+ #232323
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 812cb7b..93fc64f 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -3,4 +3,18 @@
16dp
16dp
16dp
+
+
+
+ 16dp
+ 10dp
+ 26sp
+ 120dp
+ 20sp
+ 10dp
+ 20sp
+ 10dp
+ 40sp
+ 14sp
+ 13sp
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b10a931..52d1d21 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -3,6 +3,13 @@
Sign in
StartUp Activity
+
+ Settings
+ Notes
+ No notes found!
+ New Note
+ Enter your note!
+
Email