Add Favourite workflow detail MvpView & Presenter
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/commit/2b02be87 Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/2b02be87 Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/2b02be87 Branch: refs/heads/master Commit: 2b02be8735aaca7b7c9de2102771b556637c5176 Parents: 05540b1 Author: Sagar <kumarsagar15...@gmail.com> Authored: Tue Jul 19 00:37:16 2016 +0530 Committer: Sagar <kumarsagar15...@gmail.com> Committed: Tue Jul 19 00:37:16 2016 +0530 ---------------------------------------------------------------------- .../FavouriteWorkflowDetailMvpView.java | 44 ++++ .../FavouriteWorkflowDetailPresenter.java | 211 +++++++++++++++++++ 2 files changed, 255 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/2b02be87/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailMvpView.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailMvpView.java b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailMvpView.java new file mode 100644 index 0000000..a3ec3b5 --- /dev/null +++ b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailMvpView.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.taverna.mobile.ui.favouriteworkflowdetail; + + +import org.apache.taverna.mobile.data.model.License; +import org.apache.taverna.mobile.data.model.User; +import org.apache.taverna.mobile.data.model.Workflow; +import org.apache.taverna.mobile.ui.base.MvpView; + +public interface FavouriteWorkflowDetailMvpView extends MvpView { + + void showProgressbar(boolean b); + + void showWorkflowDetail(Workflow workflow); + + void setImage(User user); + + void showErrorSnackBar(String error); + + void showLicense(License license); + + void showLicenseProgress(boolean b); + + void setFavouriteIcon(); + + void getFavouriteIcon(boolean b); +} http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/2b02be87/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailPresenter.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailPresenter.java b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailPresenter.java new file mode 100644 index 0000000..023c911 --- /dev/null +++ b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailPresenter.java @@ -0,0 +1,211 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.taverna.mobile.ui.favouriteworkflowdetail; + +import org.apache.taverna.mobile.data.DataManager; +import org.apache.taverna.mobile.data.model.License; +import org.apache.taverna.mobile.data.model.User; +import org.apache.taverna.mobile.data.model.Workflow; +import org.apache.taverna.mobile.ui.base.BasePresenter; + +import java.util.HashMap; +import java.util.Map; + +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class FavouriteWorkflowDetailPresenter extends BasePresenter<FavouriteWorkflowDetailMvpView> { + + public final String LOG_TAG = getClass().getSimpleName(); + private DataManager mDataManager; + private Subscription mSubscriptions; + + + public FavouriteWorkflowDetailPresenter(DataManager dataManager) { + mDataManager = dataManager; + } + + @Override + public void attachView(FavouriteWorkflowDetailMvpView mvpView) { + super.attachView(mvpView); + } + + @Override + public void detachView() { + super.detachView(); + if (mSubscriptions != null) mSubscriptions.unsubscribe(); + } + + public void loadWorkflowDetail(String id) { + getMvpView().showProgressbar(true); + + mSubscriptions = mDataManager.getFavoriteDetailWorkflow(id) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeOn(Schedulers.io()) + .subscribe(new Observer<Workflow>() { + @Override + public void onCompleted() { + getMvpView().showProgressbar(false); + } + + @Override + public void onError(Throwable e) { + getMvpView().showProgressbar(false); + } + + @Override + public void onNext(Workflow workflow) { + getMvpView().showWorkflowDetail(workflow); + loadUserDetail(workflow.getUploader().getId()); + getFavourite(workflow.getId()); + } + }); + + } + + private void loadUserDetail(String id) { + + getMvpView().showProgressbar(true); + + mSubscriptions = mDataManager.getUserDetail(id, getUserQueryOptions()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeOn(Schedulers.io()) + .subscribe(new Observer<User>() { + @Override + public void onCompleted() { + getMvpView().showProgressbar(false); + } + + @Override + public void onError(Throwable e) { + getMvpView().showProgressbar(false); + getMvpView().showErrorSnackBar("Something went wrong please try after " + + "sometime"); + } + + @Override + public void onNext(User user) { + getMvpView().setImage(user); + } + }); + } + + public void loadLicenseDetail(String id) { + + getMvpView().showLicenseProgress(true); + + mSubscriptions = mDataManager.getLicenseDetail(id, getLicenceQueryOptions()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeOn(Schedulers.io()) + .subscribe(new Observer<License>() { + @Override + public void onCompleted() { + getMvpView().showLicenseProgress(false); + } + + @Override + public void onError(Throwable e) { + getMvpView().showLicenseProgress(false); + getMvpView().showErrorSnackBar("Something went wrong please try after " + + "sometime"); + } + + @Override + public void onNext(License license) { + getMvpView().showLicense(license); + } + }); + } + + public void setFavourite(String id) { + + + mSubscriptions = mDataManager.setFavoriteWorkflow(id) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeOn(Schedulers.io()) + .subscribe(new Observer<Boolean>() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + getMvpView().showErrorSnackBar("Something went wrong please try after " + + "sometime"); + } + + @Override + public void onNext(Boolean b) { + if (b) { + getMvpView().setFavouriteIcon(); + } else { + getMvpView().showErrorSnackBar("Something went wrong please try after" + + "sometime"); + } + + } + }); + } + + public void getFavourite(String id) { + + + mSubscriptions = mDataManager.getFavoriteWorkflow(id) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeOn(Schedulers.io()) + .subscribe(new Observer<Boolean>() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + getMvpView().showErrorSnackBar("Something went wrong please try after " + + "sometime"); + } + + @Override + public void onNext(Boolean b) { + getMvpView().getFavouriteIcon(b); + } + }); + } + + + + private Map<String, String> getUserQueryOptions() { + + Map<String, String> option = new HashMap<>(); + option.put("elements", "avatar"); + return option; + } + + private Map<String, String> getLicenceQueryOptions() { + + Map<String, String> option = new HashMap<>(); + option.put("elements", "title,description,url,created-at"); + return option; + } + + +}