package com.badoo.chateau.example.data.repos.session;
import android.support.annotation.NonNull;
import com.badoo.barf.data.repo.Query;
import com.badoo.chateau.core.model.User;
/**
* Query class for performing operations on the SessionRepository
*/
public abstract class SessionQuery {
/**
* Query for signing in to the app
*/
public static class SignIn<U extends User> implements Query<U> {
@NonNull
final String mUserName;
@NonNull
final String mPassword;
public SignIn(@NonNull String userName, @NonNull String password) {
mUserName = userName;
mPassword = password;
}
@NonNull
public String getUserName() {
return mUserName;
}
@NonNull
public String getPassword() {
return mPassword;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
SignIn signIn = (SignIn) o;
if (!mUserName.equals(signIn.mUserName)) return false;
return mPassword.equals(signIn.mPassword);
}
@Override
public int hashCode() {
int result = mUserName.hashCode();
result = 31 * result + mPassword.hashCode();
return result;
}
@Override
public String toString() {
return "SignIn{" +
"mUserName='" + mUserName + '\'' +
", mPassword='" + mPassword + '\'' +
'}';
}
}
/**
* Query for registering a new account
*/
public static class Register<U extends User> implements Query<U> {
@NonNull
final String mUserName;
@NonNull
final String mPassword;
@NonNull
final String mDisplayName;
public Register(@NonNull String userName, @NonNull String displayName, @NonNull String password) {
mUserName = userName;
mPassword = password;
mDisplayName = displayName;
}
@NonNull
public String getUserName() {
return mUserName;
}
@NonNull
public String getPassword() {
return mPassword;
}
@NonNull
public String getDisplayName() {
return mDisplayName;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Register register = (Register) o;
if (!mUserName.equals(register.mUserName)) return false;
if (!mPassword.equals(register.mPassword)) return false;
return mDisplayName.equals(register.mDisplayName);
}
@Override
public int hashCode() {
int result = mUserName.hashCode();
result = 31 * result + mPassword.hashCode();
result = 31 * result + mDisplayName.hashCode();
return result;
}
@Override
public String toString() {
return "Register{" +
"mUserName='" + mUserName + '\'' +
", mPassword='" + mPassword + '\'' +
", mDisplayName='" + mDisplayName + '\'' +
'}';
}
}
/**
* Query for signing out of the app
*/
public static class SignOut implements Query<Void> {
@Override
public boolean equals(Object o) {
return o instanceof SignOut;
}
@Override
public int hashCode() {
return 1;
}
}
}