Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.demo.poc.merkurvut.login;
- import javax.inject.Inject;
- import java.lang.ref.WeakReference;
- import android.content.Context;
- import android.support.annotation.NonNull;
- import android.support.annotation.Nullable;
- import com.demo.poc.merkurvut.base.NetworkAsyncTask;
- import com.demo.poc.merkurvut.connection.VutConnection;
- import com.demo.poc.merkurvut.dagger.annotations.ApplicationContext;
- import com.demo.poc.merkurvut.data.parser.VUTParser;
- import com.demo.poc.merkurvut.db.entities.StudentInformation;
- /**
- * Asynchronous task to log in.
- *
- * @author Jan Smyčka (jan.smycka@post.cz)
- */
- public class LoginAsyncTask extends NetworkAsyncTask {
- /**
- * Interface for class that wants to receive message about finishing this task.
- */
- public interface LoginResultsCallback extends NetworkTaskCallback {
- /**
- * Callback for successful log in.
- *
- * @param studentInformation information about a student
- */
- void onLoginSuccess(@NonNull StudentInformation studentInformation);
- /**
- * Callback for unsuccessful log in.
- */
- void onLoginFailed();
- }
- @NonNull
- private VUTParser mVutParser;
- @NonNull
- private VutConnection mVutConnection;
- private WeakReference<LoginResultsCallback> mLoginTaskCallbackWeakReference;
- private String mLogin;
- private String mPassword;
- @Inject
- LoginAsyncTask(@NonNull @ApplicationContext Context context, @NonNull VutConnection vutConnection, @NonNull VUTParser vutParser) {
- super(context);
- mVutConnection = vutConnection;
- mVutParser = vutParser;
- }
- /**
- * Starts AsyncTask that logs in.
- *
- * @param loginTaskCallback listener for results.
- * @param login input from user
- * @param password input from user
- */
- public void logIn(@NonNull LoginResultsCallback loginTaskCallback, @NonNull String login, @NonNull String password) {
- mNetworkTaskCallbackWeakReference = new WeakReference<>(loginTaskCallback);
- mLoginTaskCallbackWeakReference = new WeakReference<>(loginTaskCallback);
- mLogin = login;
- mPassword = password;
- execute();
- }
- @Nullable
- @Override
- protected StudentInformation doInBackground(Void... voids) {
- if (mLoginTaskCallbackWeakReference == null || mLogin == null || mPassword == null) {
- throw new IllegalArgumentException("You must call #logIn with non-null parameters in order to start this AsyncTask.");
- }
- // TODO "Command && Query separation
- if (mVutConnection.login(mLogin, mPassword)) {
- return mVutParser.getStudentInfo();
- } else {
- return null;
- }
- }
- @Override
- protected void onPostExecute(@Nullable Object studentInformation) {
- super.onPostExecute(studentInformation);
- final LoginResultsCallback loginTaskCallback = mLoginTaskCallbackWeakReference.get();
- if (studentInformation != null) {
- loginTaskCallback.onLoginSuccess((StudentInformation) studentInformation);
- } else {
- loginTaskCallback.onLoginFailed();
- }
- }
- @Override
- protected boolean resultObjectClassCheck(@NonNull Object resultObject) {
- return resultObject instanceof StudentInformation;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement