From aa6810a633c108c6782362117d218694e89e5b9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mieszko=20Wrzeszczy=C5=84ski?= Date: Fri, 26 Oct 2018 13:57:50 +0200 Subject: [PATCH] Working user list --- app/src/main/AndroidManifest.xml | 5 + .../uam/wmi/findmytutor/ListViewAdapter.java | 11 +- .../findmytutor/activity/BaseActivity.java | 2 +- .../findmytutor/activity/ListViewAdapter.java | 111 ++++++++++++++++ .../findmytutor/activity/LoginActivity.java | 4 +- .../activity/UsersListActivity.java | 95 ++++++++++++++ .../uam/wmi/findmytutor/model/LdapUser.java | 2 +- .../com/uam/wmi/findmytutor/model/Model.java | 2 + .../wmi/findmytutor/model/PagedResult.java | 19 ++- .../model/PagedResultReturnedTutors.java | 89 +++++++++++++ .../model/PagedResultUserResponseModel.java | 8 ++ .../uam/wmi/findmytutor/model/Results.java | 33 +++++ .../wmi/findmytutor/model/ReturnedTutors.java | 121 ++++++++++++++++++ .../com/uam/wmi/findmytutor/model/Tutor.java | 109 ++++++++++++++++ .../wmi/findmytutor/network/ApiClient.java | 3 +- .../network/RetrofitClientInstance.java | 3 +- .../wmi/findmytutor/service/UserService.java | 17 ++- .../utils/MyDividerItemDecoration.java | 98 ++++++++++++++ .../wmi/findmytutor/view/TutorsAdapter.java | 79 ++++++++++++ app/src/main/res/layout/tutor_list_view.xml | 42 ++++++ app/src/main/res/layout/users_list.xml | 18 +++ app/src/main/res/layout/users_list_main.xml | 18 +++ 22 files changed, 873 insertions(+), 16 deletions(-) create mode 100644 app/src/main/java/com/uam/wmi/findmytutor/activity/ListViewAdapter.java create mode 100644 app/src/main/java/com/uam/wmi/findmytutor/activity/UsersListActivity.java create mode 100644 app/src/main/java/com/uam/wmi/findmytutor/model/PagedResultReturnedTutors.java create mode 100644 app/src/main/java/com/uam/wmi/findmytutor/model/Results.java create mode 100644 app/src/main/java/com/uam/wmi/findmytutor/model/ReturnedTutors.java create mode 100644 app/src/main/java/com/uam/wmi/findmytutor/model/Tutor.java create mode 100644 app/src/main/java/com/uam/wmi/findmytutor/utils/MyDividerItemDecoration.java create mode 100644 app/src/main/java/com/uam/wmi/findmytutor/view/TutorsAdapter.java create mode 100644 app/src/main/res/layout/tutor_list_view.xml create mode 100644 app/src/main/res/layout/users_list.xml create mode 100644 app/src/main/res/layout/users_list_main.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b5a061b..4fbfa6b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,6 +48,11 @@ android:label="@string/title_activity_sharing" android:launchMode="singleTop" /> + + { @@ -47,8 +49,9 @@ public class ListViewAdapter extends ArrayAdapter { return position; } + @NonNull @Override - public View getView(int position, View convertView, ViewGroup parent) { + public View getView(int position, View convertView, @NonNull ViewGroup parent) { ViewHolder holder; LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); // If holder not exist then locate all view from UI file. @@ -67,11 +70,11 @@ public class ListViewAdapter extends ArrayAdapter { holder.friendName.setText(getItem(position)); //get first letter of each String item - String firstLetter = String.valueOf(getItem(position).charAt(0)); + String firstLetter = String.valueOf(Objects.requireNonNull(getItem(position)).charAt(0)); ColorGenerator generator = ColorGenerator.MATERIAL; // or use DEFAULT // generate random color - int color = generator.getColor(getItem(position)); + int color = generator.getColor(Objects.requireNonNull(getItem(position))); TextDrawable drawable = TextDrawable.builder() .buildRound(firstLetter, color); // radius in px @@ -101,7 +104,7 @@ public class ListViewAdapter extends ArrayAdapter { private ImageView imageView; private TextView friendName; - public ViewHolder(View v) { + ViewHolder(View v) { imageView = (ImageView) v.findViewById(R.id.image_view); friendName = (TextView) v.findViewById(R.id.text); } diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/BaseActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/BaseActivity.java index 8c0b5ba..8ae2465 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/BaseActivity.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/BaseActivity.java @@ -191,7 +191,7 @@ public abstract class BaseActivity setFragment(sharingFragment); } else if (itemId == R.id.nav_notif) { - startActivity(new Intent(this, NotificationsActivity.class)); + startActivity(new Intent(this, UsersListActivity.class)); } //finish(); }, 300); diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/ListViewAdapter.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/ListViewAdapter.java new file mode 100644 index 0000000..51592d1 --- /dev/null +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/ListViewAdapter.java @@ -0,0 +1,111 @@ +package com.uam.wmi.findmytutor.activity; + +import android.app.Activity; +import android.support.annotation.NonNull; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import com.amulyakhare.textdrawable.TextDrawable; +import com.amulyakhare.textdrawable.util.ColorGenerator; + +import com.uam.wmi.findmytutor.R; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.Objects; + +public class ListViewAdapter extends ArrayAdapter { + + private UsersListActivity activity; + private List friendList; + private List searchList; + + public ListViewAdapter(UsersListActivity context, int resource, List objects) { + super(context, resource, objects); + this.activity = context; + this.friendList = objects; + this.searchList = new ArrayList<>(); + this.searchList.addAll(friendList); + } + + @Override + public int getCount() { + return friendList.size(); + } + + @Override + public String getItem(int position) { + return friendList.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @NonNull + @Override + public View getView(int position, View convertView, @NonNull ViewGroup parent) { + ViewHolder holder; + LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); + // If holder not exist then locate all view from UI file. + if (convertView == null) { + // inflate UI from XML file + convertView = inflater.inflate(R.layout.item_listview, parent, false); + // get all UI view + holder = new ViewHolder(convertView); + // set tag for holder + convertView.setTag(holder); + } else { + // if holder created, get tag from view + holder = (ViewHolder) convertView.getTag(); + } + + holder.friendName.setText(getItem(position)); + + //get first letter of each String item + String firstLetter = String.valueOf(Objects.requireNonNull(getItem(position)).charAt(0)); + + ColorGenerator generator = ColorGenerator.MATERIAL; // or use DEFAULT + // generate random color + int color = generator.getColor(Objects.requireNonNull(getItem(position))); + + TextDrawable drawable = TextDrawable.builder() + .buildRound(firstLetter, color); // radius in px + + holder.imageView.setImageDrawable(drawable); + + return convertView; + } + + // Filter method + public void filter(String charText) { + charText = charText.toLowerCase(Locale.getDefault()); + friendList.clear(); + if (charText.length() == 0) { + friendList.addAll(searchList); + } else { + for (String s : searchList) { + if (s.toLowerCase(Locale.getDefault()).contains(charText)) { + friendList.add(s); + } + } + } + notifyDataSetChanged(); + } + + private class ViewHolder { + private ImageView imageView; + private TextView friendName; + + public ViewHolder(View v) { + imageView = v.findViewById(R.id.image_view); + friendName = v.findViewById(R.id.text); + } + } +} \ No newline at end of file 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 9047291..3b1dc78 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 @@ -395,7 +395,9 @@ public class LoginActivity extends AppCompatActivity implements LoaderCallbacks< .subscribeWith(new DisposableSingleObserver() { @Override public void onSuccess(JwtToken jwtToken) { - String token = jwtToken.getToken(); + //String token = jwtToken.getToken(); + + String token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiIzY2QyMWFlYi00ZGRmLTQ0YTktOWM3OC1kNGE3MjVlN2MwNDkiLCJzdWIiOiJhc2RAYXNkc2FkYWEiLCJqdGkiOiIwMDMzYWZhMy0yNDZhLTQ1YTYtOWZmYi1lNzhiYjg3MDMzMmIiLCJleHAiOjE1NDMxMzUwNjAsImlzcyI6Imh0dHA6Ly9maW5kbXl0dXRvci5jb20iLCJhdWQiOiJodHRwOi8vZmluZG15dHV0b3IuY29tIn0.rzks6-yjvVuYoO0pdiBwAfqDnMg8C8XrM9eA4h692m0"; JWT jwt = new JWT(token); Claim role = jwt.getClaim("nameid"); diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/UsersListActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/UsersListActivity.java new file mode 100644 index 0000000..c801e28 --- /dev/null +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/UsersListActivity.java @@ -0,0 +1,95 @@ +package com.uam.wmi.findmytutor.activity; + +import android.os.Bundle; +import android.support.design.widget.CoordinatorLayout; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.DefaultItemAnimator; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.util.Log; +import android.view.View; + +import com.uam.wmi.findmytutor.R; +import com.uam.wmi.findmytutor.model.PagedResultReturnedTutors; + +import com.uam.wmi.findmytutor.model.Tutor; +import com.uam.wmi.findmytutor.network.ApiClient; +import com.uam.wmi.findmytutor.service.UserService; +import com.uam.wmi.findmytutor.utils.MyDividerItemDecoration; +import com.uam.wmi.findmytutor.view.TutorsAdapter; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.ButterKnife; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.CompositeDisposable; +import io.reactivex.observers.DisposableSingleObserver; +import io.reactivex.schedulers.Schedulers; + +public class UsersListActivity extends AppCompatActivity { + private static final String TAG = UsersListActivity.class.getSimpleName(); + private UserService apiService; + private CompositeDisposable disposable = new CompositeDisposable(); + private TutorsAdapter mAdapter; + private List tutorsList = new ArrayList<>(); + @BindView(R.id.coordinator_layout) + CoordinatorLayout coordinatorLayout; + + @BindView(R.id.recycler_view) + RecyclerView recyclerView; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + setContentView(R.layout.users_list); + ButterKnife.bind(this); + + apiService = ApiClient.getClient(getApplicationContext()) + .create(UserService.class); + fetchAllTutors(); + mAdapter = new TutorsAdapter(this, tutorsList); + RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); + recyclerView.setLayoutManager(mLayoutManager); + recyclerView.setItemAnimator(new DefaultItemAnimator()); + recyclerView.addItemDecoration(new MyDividerItemDecoration(this, LinearLayoutManager.VERTICAL, 16)); + recyclerView.setAdapter(mAdapter); + + + } + + private void fetchAllTutors() { + disposable.add( + apiService.getPagedTutors(1) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeWith(new DisposableSingleObserver () { + @Override + public void onSuccess(PagedResultReturnedTutors pagedResult) { + + tutorsList.clear(); + tutorsList.addAll(pagedResult.getResults().getTutors()); + mAdapter.notifyDataSetChanged(); + + Log.e("TUTORS", String.valueOf(pagedResult.getResults().getTutors())); + + + } + + @Override + public void onError(Throwable e) { + Log.e("TUTORS_Error",e.toString()); + } + })); + + + } + + @Override + protected void onDestroy() { + super.onDestroy(); + disposable.dispose(); + } +} \ No newline at end of file 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 b57c702..51f5cb9 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 extends BaseResponse{ +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 index 3b5ee47..bca9777 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/model/Model.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/model/Model.java @@ -1,3 +1,4 @@ +/* package com.uam.wmi.findmytutor.model; @@ -14,3 +15,4 @@ public class Model } } +*/ 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 db05386..a5dab31 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,3 +1,4 @@ + package com.uam.wmi.findmytutor.model; import com.google.gson.annotations.Expose; @@ -9,7 +10,7 @@ public class PagedResult { @SerializedName("results") @Expose - private List results = null; + private List results = null; @SerializedName("currentPage") @Expose private Integer currentPage; @@ -29,11 +30,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; } @@ -86,3 +87,15 @@ public class PagedResult { } } + + + + + + + + + + + + diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/PagedResultReturnedTutors.java b/app/src/main/java/com/uam/wmi/findmytutor/model/PagedResultReturnedTutors.java new file mode 100644 index 0000000..4e98f5f --- /dev/null +++ b/app/src/main/java/com/uam/wmi/findmytutor/model/PagedResultReturnedTutors.java @@ -0,0 +1,89 @@ +package com.uam.wmi.findmytutor.model; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import com.uam.wmi.findmytutor.model.Results; + +public class PagedResultReturnedTutors extends BaseResponse{ + + @SerializedName("results") + @Expose + private Results results; + @SerializedName("currentPage") + @Expose + private Integer currentPage; + @SerializedName("pageCount") + @Expose + private Integer pageCount; + @SerializedName("pageSize") + @Expose + private Integer pageSize; + @SerializedName("rowCount") + @Expose + private Integer rowCount; + @SerializedName("firstRowOnPage") + @Expose + private Integer firstRowOnPage; + @SerializedName("lastRowOnPage") + @Expose + private Integer lastRowOnPage; + + public Results getResults() { + return results; + } + + public void setResults(Results results) { + this.results = results; + } + + public Integer getCurrentPage() { + return currentPage; + } + + public void setCurrentPage(Integer currentPage) { + this.currentPage = currentPage; + } + + public Integer getPageCount() { + return pageCount; + } + + public void setPageCount(Integer pageCount) { + this.pageCount = pageCount; + } + + public Integer getPageSize() { + return pageSize; + } + + public void setPageSize(Integer pageSize) { + this.pageSize = pageSize; + } + + public Integer getRowCount() { + return rowCount; + } + + public void setRowCount(Integer rowCount) { + this.rowCount = rowCount; + } + + public Integer getFirstRowOnPage() { + return firstRowOnPage; + } + + public void setFirstRowOnPage(Integer firstRowOnPage) { + this.firstRowOnPage = firstRowOnPage; + } + + public Integer getLastRowOnPage() { + return lastRowOnPage; + } + + public void setLastRowOnPage(Integer lastRowOnPage) { + this.lastRowOnPage = lastRowOnPage; + } + +} + + 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 0e16bb2..2927d71 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 @@ -1,5 +1,6 @@ package com.uam.wmi.findmytutor.model; +import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; import java.util.ArrayList; @@ -14,24 +15,31 @@ import io.swagger.annotations.ApiModelProperty; public class PagedResultUserResponseModel extends BaseResponse { @SerializedName("results") + @Expose private List results = null; @SerializedName("currentPage") + @Expose private Integer currentPage = null; @SerializedName("pageCount") + @Expose private Integer pageCount = null; @SerializedName("pageSize") + @Expose private Integer pageSize = null; @SerializedName("rowCount") + @Expose private Integer rowCount = null; @SerializedName("firstRowOnPage") + @Expose private Integer firstRowOnPage = null; @SerializedName("lastRowOnPage") + @Expose private Integer lastRowOnPage = null; public PagedResultUserResponseModel results(List results) { diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/Results.java b/app/src/main/java/com/uam/wmi/findmytutor/model/Results.java new file mode 100644 index 0000000..c57f109 --- /dev/null +++ b/app/src/main/java/com/uam/wmi/findmytutor/model/Results.java @@ -0,0 +1,33 @@ +package com.uam.wmi.findmytutor.model; + + +import java.util.List; +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +public class Results extends BaseResponse { + + @SerializedName("tutors") + @Expose + private List tutors = null; + @SerializedName("blacklistersTutors") + @Expose + private List blacklistersTutors = null; + + public List getTutors() { + return tutors; + } + + public void setTutors(List tutors) { + this.tutors = tutors; + } + + public List getBlacklistersTutors() { + return blacklistersTutors; + } + + public void setBlacklistersTutors(List blacklistersTutors) { + this.blacklistersTutors = blacklistersTutors; + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/ReturnedTutors.java b/app/src/main/java/com/uam/wmi/findmytutor/model/ReturnedTutors.java new file mode 100644 index 0000000..f4a327f --- /dev/null +++ b/app/src/main/java/com/uam/wmi/findmytutor/model/ReturnedTutors.java @@ -0,0 +1,121 @@ +package com.uam.wmi.findmytutor.model; + +import java.util.Objects; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import io.swagger.annotations.ApiModelProperty; + +import java.util.ArrayList; +import java.util.List; + +/** + * ReturnedTutors + */ + +public class ReturnedTutors extends User { + @SerializedName("tutors") + @Expose + private List tutors = null; + + @SerializedName("blacklistersTutors") + @Expose + private List blacklistersTutors = null; + + public ReturnedTutors tutors(List tutors) { + this.tutors = tutors; + return this; + } + + public List getTutors() { + return tutors; + } + + public ReturnedTutors addTutorsItem(User tutorsItem) { + if (this.tutors == null) { + this.tutors = new ArrayList(); + } + this.tutors.add(tutorsItem); + return this; + } + + /** + * Get tutors + * @return tutors + **/ + + + public void setTutors(List tutors) { + this.tutors = tutors; + } + + public ReturnedTutors blacklistersTutors(List blacklistersTutors) { + this.blacklistersTutors = blacklistersTutors; + return this; + } + + public ReturnedTutors addBlacklistersTutorsItem(User blacklistersTutorsItem) { + if (this.blacklistersTutors == null) { + this.blacklistersTutors = new ArrayList(); + } + this.blacklistersTutors.add(blacklistersTutorsItem); + return this; + } + + /** + * Get blacklistersTutors + * @return blacklistersTutors + **/ + @ApiModelProperty(value = "") + public List getBlacklistersTutors() { + return blacklistersTutors; + } + + public void setBlacklistersTutors(List blacklistersTutors) { + this.blacklistersTutors = blacklistersTutors; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ReturnedTutors returnedTutors = (ReturnedTutors) o; + return Objects.equals(this.tutors, returnedTutors.tutors) && + Objects.equals(this.blacklistersTutors, returnedTutors.blacklistersTutors); + } + + @Override + public int hashCode() { + return Objects.hash(tutors, blacklistersTutors); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ReturnedTutors {\n"); + + sb.append(" tutors: ").append(toIndentedString(tutors)).append("\n"); + sb.append(" blacklistersTutors: ").append(toIndentedString(blacklistersTutors)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/Tutor.java b/app/src/main/java/com/uam/wmi/findmytutor/model/Tutor.java new file mode 100644 index 0000000..623c366 --- /dev/null +++ b/app/src/main/java/com/uam/wmi/findmytutor/model/Tutor.java @@ -0,0 +1,109 @@ +package com.uam.wmi.findmytutor.model; + + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +public class Tutor { + + @SerializedName("id") + @Expose + private String id; + @SerializedName("isOnline") + @Expose + private Boolean isOnline; + @SerializedName("title") + @Expose + private String title; + @SerializedName("firstName") + @Expose + private String firstName; + @SerializedName("lastName") + @Expose + private String lastName; + @SerializedName("department") + @Expose + private String department; + @SerializedName("userName") + @Expose + private String userName; + @SerializedName("email") + @Expose + private String email; + @SerializedName("isActive") + @Expose + private Boolean isActive; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public Boolean getIsOnline() { + return isOnline; + } + + public void setIsOnline(Boolean isOnline) { + this.isOnline = isOnline; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getDepartment() { + return department; + } + + public void setDepartment(String department) { + this.department = department; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public Boolean getIsActive() { + return isActive; + } + + public void setIsActive(Boolean isActive) { + this.isActive = isActive; + } + +} 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 index 70e3a9e..e95a240 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/network/ApiClient.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/network/ApiClient.java @@ -33,8 +33,8 @@ public class ApiClient { retrofit = new Retrofit.Builder() .baseUrl(BASE_URL) .client(okHttpClient) - .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) + .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .build(); } return retrofit; @@ -59,6 +59,7 @@ public class ApiClient { .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))) { 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 index a3e3ee3..c59609b 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/network/RetrofitClientInstance.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/network/RetrofitClientInstance.java @@ -51,4 +51,5 @@ public class RetrofitClientInstance { } return retrofit.create(serviceClass); } -} \ No newline at end of file +} + 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 a0dbea3..883dcfd 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,14 +1,16 @@ package com.uam.wmi.findmytutor.service; import com.uam.wmi.findmytutor.model.IsUsingListBool; -import com.uam.wmi.findmytutor.model.PagedResult; +import com.uam.wmi.findmytutor.model.PagedResultReturnedTutors; import com.uam.wmi.findmytutor.model.StudentIdModel; import com.uam.wmi.findmytutor.model.User; import java.util.List; import io.reactivex.Completable; +import io.reactivex.Observable; import io.reactivex.Single; +import retrofit2.Response; import retrofit2.http.Body; import retrofit2.http.DELETE; import retrofit2.http.GET; @@ -25,13 +27,20 @@ public interface UserService { Completable createUser(@Body User user); @GET("api/users/page/{pageNum}") - Single getPagedUsers(@Path("pageNum") String pageNum ); + Single getPagedUsers(@Path("pageNum") String pageNum ); + + /* @GET("api/users/tutors/page/{pageNum}") + //Observable getPagedTutors(@Path("pageNum") String pageNum); + Single getPagedTutors(@Path("pageNum") String pageNum);*/ @GET("api/users/tutors/page/{pageNum}") - Single getPagedTutors(@Path("pageNum") String pageNum); + Single getPagedTutors( + @retrofit2.http.Path("pageNum") Integer pageNum + ); + @GET("api/users/students/page/{pageNum}") - Single getPagedStudents(@Path("pageNum") String pageNum); + Single getPagedStudents(@Path("pageNum") String pageNum); @GET("api/users/{id}") Single getUserByID(@Path("id") String userID); 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/view/TutorsAdapter.java b/app/src/main/java/com/uam/wmi/findmytutor/view/TutorsAdapter.java new file mode 100644 index 0000000..73264b6 --- /dev/null +++ b/app/src/main/java/com/uam/wmi/findmytutor/view/TutorsAdapter.java @@ -0,0 +1,79 @@ +package com.uam.wmi.findmytutor.view; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.text.Html; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.uam.wmi.findmytutor.R; +import com.uam.wmi.findmytutor.model.ReturnedTutors; +import com.uam.wmi.findmytutor.model.Tutor; +import com.uam.wmi.findmytutor.model.User; + +import java.util.List; + +import butterknife.BindView; +import butterknife.ButterKnife; + + +public class TutorsAdapter extends RecyclerView.Adapter { + + private Context context; + private List tutorsList; + + public TutorsAdapter(Context context, List tutors) { + this.context = context; + this.tutorsList = tutors; + + Log.e("USERS", String.valueOf(tutors)); + } + + + + public class MyViewHolder extends RecyclerView.ViewHolder { + + @BindView(R.id.firstName) + TextView firstName; + + @BindView(R.id.lastName) + TextView lastName; + + @BindView(R.id.isOnline) + TextView isOnline; + + public MyViewHolder(View view) { + super(view); + ButterKnife.bind(this, view); + } + } + + + + @Override + public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.tutor_list_row, parent, false); + + return new MyViewHolder(itemView); + } + + @Override + public void onBindViewHolder(MyViewHolder holder, int position) { + Tutor tutor = tutorsList.get(position); + Log.e("tutor", tutor.toString()); + + holder.firstName.setText(tutor.getFirstName()); + holder.isOnline.setText(Html.fromHtml("•")); + holder.lastName.setText(tutor.getLastName()); + } + + @Override + public int getItemCount() { + return tutorsList.size(); + } + +} \ No newline at end of file diff --git a/app/src/main/res/layout/tutor_list_view.xml b/app/src/main/res/layout/tutor_list_view.xml new file mode 100644 index 0000000..8ec9c3d --- /dev/null +++ b/app/src/main/res/layout/tutor_list_view.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/users_list.xml b/app/src/main/res/layout/users_list.xml new file mode 100644 index 0000000..0ab367c --- /dev/null +++ b/app/src/main/res/layout/users_list.xml @@ -0,0 +1,18 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/users_list_main.xml b/app/src/main/res/layout/users_list_main.xml new file mode 100644 index 0000000..f160738 --- /dev/null +++ b/app/src/main/res/layout/users_list_main.xml @@ -0,0 +1,18 @@ + + + + + + + + \ No newline at end of file