diff --git a/app/src/main/java/com/example/sprout/refactor/model/BaseModel.java b/app/src/main/java/com/example/sprout/refactor/model/BaseModel.java new file mode 100644 index 0000000..435c1ce --- /dev/null +++ b/app/src/main/java/com/example/sprout/refactor/model/BaseModel.java @@ -0,0 +1,42 @@ +package com.example.sprout.refactor.model; + +import io.reactivex.Observable; +import io.reactivex.subjects.BehaviorSubject; +import io.reactivex.subjects.Subject; + +/** + * Entityを管理するクラスの基底クラス + * :Entity + * :CRUDに必要なParams + * Created by matsumoto_k on 2017/12/19. + */ +public abstract class BaseModel { + protected final Subject entitySubject = BehaviorSubject.create().toSerialized(); + protected final Subject errorSubject = BehaviorSubject.create().toSerialized(); + + public abstract void create(Params params); + + public abstract void read(Params params); + + public abstract void update(Params params); + + public abstract void delete(Params params); + + /** + * Entityを保持するSubjectをObservableに変換して返す + * + * @return Observable + */ + public Observable getEntityObservable() { + return entitySubject.hide(); + } + + /** + * Errorを保持するSubjectをObservbaleに変換して返す + * + * @return + */ + public Observable getErrorObservable() { + return errorSubject.hide(); + } +} diff --git a/app/src/main/java/com/example/sprout/refactor/model/RegistrationModel.java b/app/src/main/java/com/example/sprout/refactor/model/RegistrationModel.java index 79ce8a7..5ecc0e9 100644 --- a/app/src/main/java/com/example/sprout/refactor/model/RegistrationModel.java +++ b/app/src/main/java/com/example/sprout/refactor/model/RegistrationModel.java @@ -3,49 +3,47 @@ import com.example.sprout.refactor.model.entity.Account; import com.example.sprout.refactor.repository.RegistrationRepository; -import io.reactivex.Observable; import io.reactivex.schedulers.Schedulers; -import io.reactivex.subjects.BehaviorSubject; -import io.reactivex.subjects.Subject; /** * Accountを管理するクラス * Created by matsumoto_k on 2017/12/14. */ -public class RegistrationModel { +public class RegistrationModel extends BaseModel { - private final Subject accountSubject = BehaviorSubject.create().toSerialized(); - private final Subject errorSubject = BehaviorSubject.create().toSerialized(); private RegistrationRepository registrationRepository = null; public RegistrationModel(RegistrationRepository registrationRepository) { this.registrationRepository = registrationRepository; } - public void registration(String userName) { - registrationRepository.registration(userName) + @Override + public void create(Account account) { + registrationRepository.registration(account.getUserName()) .subscribeOn(Schedulers.computation()) .subscribe( - account -> accountSubject.onNext(account), + response -> entitySubject.onNext(response), error -> errorSubject.onNext(error) ); } - public void get(int userId) { - registrationRepository.getAccount(userId) + @Override + public void read(Account account) { + registrationRepository.getAccount(account.getUserID()) .subscribeOn(Schedulers.computation()) .subscribe( - account -> accountSubject.onNext(account), + response -> entitySubject.onNext(account), error -> errorSubject.onNext(error) ); } - public Observable getAccountObservable() { - return accountSubject.hide(); + @Override + public void update(Account account) { } - public Observable getErrorSubject() { - return errorSubject.hide(); + @Override + public void delete(Account account) { + } } diff --git a/app/src/main/java/com/example/sprout/refactor/viewmodel/RegistrationViewModel.java b/app/src/main/java/com/example/sprout/refactor/viewmodel/RegistrationViewModel.java index 156a2e5..1a367c0 100644 --- a/app/src/main/java/com/example/sprout/refactor/viewmodel/RegistrationViewModel.java +++ b/app/src/main/java/com/example/sprout/refactor/viewmodel/RegistrationViewModel.java @@ -44,7 +44,7 @@ public void onResume() { super.onResume(); subscriptions.add( - registrationModel.getAccountObservable() + registrationModel.getEntityObservable() .observeOn(AndroidSchedulers.mainThread()) .subscribe(account -> { preferenceUtil.saveInt(PreferenceUtil.Key.USER_ID, account.getUserID()); @@ -56,7 +56,7 @@ ) ); subscriptions.add( - registrationModel.getErrorSubject() + registrationModel.getErrorObservable() .observeOn(AndroidSchedulers.mainThread()) .subscribe(error -> { toastMessanger.showToast(new ToastMessage(Sprout.get().getResources().getString(R.string.fail_registration), ToastMessage.Length.LONG)); @@ -80,7 +80,9 @@ toastMessanger.showToast(new ToastMessage(Sprout.get().getResources().getString(R.string.empty_name), ToastMessage.Length.SHORT)); return; } - registrationModel.registration(userName); + Account params = new Account(); + params.setUserName(userName); + registrationModel.create(params); }