Refactor & don't show user information when tutor tab does not exist

This commit is contained in:
Mieszko Wrzeszczyński 2018-10-28 17:40:16 +01:00
parent 4701387d48
commit d4aa5b5261
5 changed files with 95 additions and 135 deletions

View File

@ -1,7 +1,6 @@
package com.uam.wmi.findmytutor.activity; package com.uam.wmi.findmytutor.activity;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.graphics.Color; import android.graphics.Color;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
@ -20,10 +19,8 @@ import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import com.facebook.shimmer.ShimmerFrameLayout;
import com.jakewharton.retrofit2.adapter.rxjava2.HttpException; import com.jakewharton.retrofit2.adapter.rxjava2.HttpException;
import com.uam.wmi.findmytutor.R; import com.uam.wmi.findmytutor.R;
import com.uam.wmi.findmytutor.model.DutyHour;
import com.uam.wmi.findmytutor.model.DutyHourViewModel; import com.uam.wmi.findmytutor.model.DutyHourViewModel;
import com.uam.wmi.findmytutor.model.TutorTabViewModel; import com.uam.wmi.findmytutor.model.TutorTabViewModel;
import com.uam.wmi.findmytutor.model.User; import com.uam.wmi.findmytutor.model.User;
@ -47,8 +44,6 @@ import io.reactivex.observers.DisposableSingleObserver;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import okhttp3.ResponseBody; import okhttp3.ResponseBody;
import static java.util.stream.Collectors.toList;
public class UsersListActivity extends BaseActivity { public class UsersListActivity extends BaseActivity {
private static final String TAG = UsersListActivity.class.getSimpleName(); private static final String TAG = UsersListActivity.class.getSimpleName();
@BindView(R.id.coordinator_layout) @BindView(R.id.coordinator_layout)
@ -67,7 +62,6 @@ public class UsersListActivity extends BaseActivity {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.users_list); setContentView(R.layout.users_list);
ButterKnife.bind(this); ButterKnife.bind(this);
@ -95,29 +89,10 @@ public class UsersListActivity extends BaseActivity {
@Override @Override
public void onLongClick(View view, int position) { public void onLongClick(View view, int position) {
//showActionsDialog(position);
//showNoteDialog(true, tutorsList.get(position), position);
} }
})); }));
} }
private void showActionsDialog(final int position) {
CharSequence colors[] = new CharSequence[]{"Edit", "Delete"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Choose option");
builder.setItems(colors, (dialog, which) -> {
if (which == 0) {
showNoteDialog(true, tutorsList.get(position), position);
} else {
//deleteNote(tutorsList.get(position).getId(), position);
}
});
builder.show();
}
private void showNoteDialog(final boolean shouldUpdate, final User user, final int position) { private void showNoteDialog(final boolean shouldUpdate, final User user, final int position) {
LayoutInflater layoutInflaterAndroid = LayoutInflater.from(getApplicationContext()); LayoutInflater layoutInflaterAndroid = LayoutInflater.from(getApplicationContext());
View view = layoutInflaterAndroid.inflate(R.layout.note_dialog, null); View view = layoutInflaterAndroid.inflate(R.layout.note_dialog, null);
@ -135,7 +110,7 @@ public class UsersListActivity extends BaseActivity {
TextView userRoom = view.findViewById(R.id.userRoom); TextView userRoom = view.findViewById(R.id.userRoom);
TextView userEmail = view.findViewById(R.id.userEmail); TextView userEmail = view.findViewById(R.id.userEmail);
userName.setText(user.getFirstName() + " " + user.getLastName()); userName.setText(String.format("%s %s", user.getFirstName(), user.getLastName()));
disposable.add( disposable.add(
tutorTabService.apiUsersTutorTabByTutorIdGet(user.getId()) tutorTabService.apiUsersTutorTabByTutorIdGet(user.getId())
@ -145,21 +120,19 @@ public class UsersListActivity extends BaseActivity {
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
@Override @Override
public void onSuccess(TutorTabViewModel tutorTabViewModel) { public void onSuccess(TutorTabViewModel tutorTabViewModel) {
Log.e("TUTOR_TAB",tutorTabViewModel.toString()); final AlertDialog alertDialog = alertDialogBuilderUserInput.create();
List<String> dutyHoursList = Stream.of(tutorTabViewModel.getDutyHours()) List<String> dutyHoursList = Stream.of(tutorTabViewModel.getDutyHours())
.map(DutyHourViewModel::getSummary).toList(); .map(DutyHourViewModel::getSummary).toList();
userRoom.setText(getString(R.string.userRoom) + ": " + tutorTabViewModel.getRoom()); userRoom.setText(String.format("%s: %s", getString(R.string.userRoom), tutorTabViewModel.getRoom()));
userEmail.setText(getString(R.string.userEmail) + ": " + tutorTabViewModel.getEmailTutorTab()); userEmail.setText(String.format("%s: %s", getString(R.string.userEmail), tutorTabViewModel.getEmailTutorTab()));
userNote.setText(getString(R.string.userNote) + ": " + tutorTabViewModel.getNote()); userNote.setText(String.format("%s: %s", getString(R.string.userNote), tutorTabViewModel.getNote()));
final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(UsersListActivity.this, final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(UsersListActivity.this,
android.R.layout.simple_list_item_activated_1,dutyHoursList); android.R.layout.simple_list_item_activated_1, dutyHoursList);
userDutyHours.setAdapter(arrayAdapter); userDutyHours.setAdapter(arrayAdapter);
alertDialog.show();
} }
@Override @Override
@ -167,11 +140,7 @@ public class UsersListActivity extends BaseActivity {
showError(e); showError(e);
} }
})); }));
}
final AlertDialog alertDialog = alertDialogBuilderUserInput.create();
alertDialog.show();
}
private void fetchAllTutors() { private void fetchAllTutors() {
@ -180,7 +149,7 @@ public class UsersListActivity extends BaseActivity {
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.map(tutors -> { .map(tutors -> {
List<User> tutorsList = new ArrayList<>(tutors.getTutors()); List<User> tutorsList = new ArrayList<>(tutors);
List<User> onlineTutors = Stream.of(tutorsList).filter(User::isIsOnline).toList(); List<User> onlineTutors = Stream.of(tutorsList).filter(User::isIsOnline).toList();
@ -190,9 +159,9 @@ public class UsersListActivity extends BaseActivity {
List<User> notActiveTutors = Stream.of(tutorsList) List<User> notActiveTutors = Stream.of(tutorsList)
.filterNot(User::isIsActive).toList(); .filterNot(User::isIsActive).toList();
Collections.sort(onlineTutors, (t1, t2) -> t1.getFirstName().compareTo(t2.getFirstName())); Collections.sort(onlineTutors, this::sortByUserName);
Collections.sort(activeNotOnlineTutors, (t1, t2) -> t1.getFirstName().compareTo(t2.getFirstName())); Collections.sort(activeNotOnlineTutors, this::sortByUserName);
Collections.sort(notActiveTutors, (t1, t2) -> t1.getFirstName().compareTo(t2.getFirstName())); Collections.sort(notActiveTutors, this::sortByUserName);
List<User> sortedUserList = new ArrayList<>(onlineTutors); List<User> sortedUserList = new ArrayList<>(onlineTutors);
sortedUserList.addAll(activeNotOnlineTutors); sortedUserList.addAll(activeNotOnlineTutors);
@ -216,6 +185,11 @@ public class UsersListActivity extends BaseActivity {
})); }));
} }
private int sortByUserName(User t1, User t2) {
return t1.getFirstName().compareTo(t2.getFirstName());
}
private void showError(Throwable e) { private void showError(Throwable e) {
String message = e.toString(); String message = e.toString();
@ -237,7 +211,6 @@ public class UsersListActivity extends BaseActivity {
} else { } else {
noNotesView.setVisibility(View.VISIBLE); noNotesView.setVisibility(View.VISIBLE);
} }
} }
@Override @Override

View File

@ -1,121 +1,108 @@
package com.uam.wmi.findmytutor.model; package com.uam.wmi.findmytutor.model;
import java.util.Objects;
import com.google.gson.annotations.Expose; import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import io.swagger.annotations.ApiModelProperty;
import java.util.ArrayList; public class ReturnedTutors {
import java.util.List;
/** @SerializedName("id")
* ReturnedTutors
*/
public class ReturnedTutors extends User{
@SerializedName("tutors")
@Expose @Expose
private List<User> tutors = null; private String id;
@SerializedName("isOnline")
@SerializedName("blacklistersTutors")
@Expose @Expose
private List<User> blacklistersTutors = null; 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 ReturnedTutors tutors(List<User> tutors) { public String getId() {
this.tutors = tutors; return id;
return this;
} }
public List<User> getTutors() { public void setId(String id) {
return tutors; this.id = id;
} }
public ReturnedTutors addTutorsItem(User tutorsItem) { public Boolean getIsOnline() {
if (this.tutors == null) { return isOnline;
this.tutors = new ArrayList<User>();
}
this.tutors.add(tutorsItem);
return this;
} }
/** public void setIsOnline(Boolean isOnline) {
* Get tutors this.isOnline = isOnline;
* @return tutors
**/
public void setTutors(List<User> tutors) {
this.tutors = tutors;
} }
public ReturnedTutors blacklistersTutors(List<User> blacklistersTutors) { public String getTitle() {
this.blacklistersTutors = blacklistersTutors; return title;
return this;
} }
public ReturnedTutors addBlacklistersTutorsItem(User blacklistersTutorsItem) { public void setTitle(String title) {
if (this.blacklistersTutors == null) { this.title = title;
this.blacklistersTutors = new ArrayList<User>();
}
this.blacklistersTutors.add(blacklistersTutorsItem);
return this;
} }
/** public String getFirstName() {
* Get blacklistersTutors return firstName;
* @return blacklistersTutors
**/
@ApiModelProperty(value = "")
public List<User> getBlacklistersTutors() {
return blacklistersTutors;
} }
public void setBlacklistersTutors(List<User> blacklistersTutors) { public void setFirstName(String firstName) {
this.blacklistersTutors = blacklistersTutors; this.firstName = firstName;
} }
public String getLastName() {
@Override return lastName;
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 void setLastName(String lastName) {
public int hashCode() { this.lastName = lastName;
return Objects.hash(tutors, blacklistersTutors);
} }
public String getDepartment() {
@Override return department;
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();
} }
/** public void setDepartment(String department) {
* Convert the given object to string with each line indented by 4 spaces this.department = department;
* (except the first line). }
*/
private String toIndentedString(java.lang.Object o) { public String getUserName() {
if (o == null) { return userName;
return "null"; }
}
return o.toString().replace("\n", "\n "); 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;
} }
} }

View File

@ -25,7 +25,7 @@ public interface UserService {
Single <List<User>> getAllUsers(); Single <List<User>> getAllUsers();
@GET("api/users") @GET("api/users")
Single<ReturnedTutors> apiUsersGet(); Single <List<User>> apiUsersGet();
@POST("api/users") @POST("api/users")
Completable createUser(@Body User user); Completable createUser(@Body User user);

View File

@ -8,7 +8,6 @@
android:paddingRight="@dimen/activity_margin" android:paddingRight="@dimen/activity_margin"
android:paddingTop="@dimen/activity_margin"> android:paddingTop="@dimen/activity_margin">
<TextView android:id="@+id/userName" <TextView android:id="@+id/userName"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -39,7 +38,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/userDutyHoursHeader" android:text="@string/userDutyHoursHeader"
android:textColor="@color/note_list_text" android:textColor="@color/note_list_text"
tools:text="Dyżury:" /> tools:text="@string/dutyHours" />
<ListView <ListView
android:id="@+id/userDutyHours" android:id="@+id/userDutyHours"

View File

@ -203,4 +203,5 @@ functionality.</string>
<string name="userEmail">Email</string> <string name="userEmail">Email</string>
<string name="userNote">Notatka</string> <string name="userNote">Notatka</string>
<string name="userDutyHoursHeader">Dyżury:</string> <string name="userDutyHoursHeader">Dyżury:</string>
<string name="dutyHours">Dyżury:</string>
</resources> </resources>