LocalUserDataSource.java 2.0 KB
Newer Older
M
mxdl 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
package com.mxdl.mvvm.application.e_simple_data_source.common.repository.local;

import android.os.AsyncTask;

import com.mxdl.mvvm.application.e_simple_data_source.common.bean.User;
import com.mxdl.mvvm.application.e_simple_data_source.common.repository.UserDataSource;
import com.mxdl.mvvm.application.e_simple_data_source.common.repository.local.service.UserService;
import com.mxdl.mvvm.application.e_simple_data_source.common.repository.local.service.UserServiceImpl;

/**
 * Created by mxdl on 2017/10/6.
 */

public class LocalUserDataSource implements UserDataSource {
    private static final LocalUserDataSource instance = new LocalUserDataSource();

    private LocalUserDataSource() {
    }

    public static LocalUserDataSource getInstance() {
        return instance;
    }


    private UserService userService = UserServiceImpl.getInstance();

    public void addUser(final User user) {
        new AsyncTask<Void, Void, Void>() {
            @Override
            protected Void doInBackground(Void... voids) {
                userService.add(user);
                return null;
            }
        }.execute();
    }

    @Override
    public void queryUserByUsername(final String username, final Result<User> result) {
        new AsyncTask<Void, Void, Object>() {

            @Override
            protected Object doInBackground(Void... voids) {
                try {
                    User user = userService.queryByUsername(username);
                    return user;
                } catch (Exception e) {
                    e.printStackTrace();
                    return e;
                }
            }

            @Override
            protected void onPostExecute(Object obj) {
                if (obj instanceof User)
                    result.onSuccess((User) obj);
                else if (obj instanceof Exception)
                    result.onFailed((Throwable) obj);
                else
                    result.onFailed(null);
            }
        }.execute();

    }
}