You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by ia...@apache.org on 2017/01/11 15:20:00 UTC

[2/7] incubator-taverna-mobile git commit: Use ResponseBody to get the run location from the server. Then ask for the inputs

Use ResponseBody to get the run location from the server. Then ask for the inputs


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/8c5ca23e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/8c5ca23e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/8c5ca23e

Branch: refs/heads/ian_taverna_server
Commit: 8c5ca23efb303e26d2646c921f957cdd18847209
Parents: eab06c3
Author: Ian Dunlop <ia...@manchester.ac.uk>
Authored: Thu Dec 15 16:57:38 2016 +0000
Committer: Ian Dunlop <ia...@manchester.ac.uk>
Committed: Thu Dec 15 16:57:38 2016 +0000

----------------------------------------------------------------------
 .../apache/taverna/mobile/data/DataManager.java |  9 +++-
 .../data/remote/TavernaPlayerService.java       | 18 ++++++--
 .../mobile/data/remote/TavernaService.java      |  2 +
 .../ui/playerlogin/PlayerLoginFragment.java     |  6 +--
 .../ui/playerlogin/PlayerLoginMvpView.java      |  2 +-
 .../ui/playerlogin/PlayerLoginPresenter.java    | 43 +++++++++++-------
 .../ui/workflowrun/WorkflowRunActivity.java     | 22 ++++++---
 .../ui/workflowrun/WorkflowRunMvpView.java      | 10 +++--
 .../ui/workflowrun/WorkflowRunPresenter.java    | 47 ++++++++++++++------
 9 files changed, 113 insertions(+), 46 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/8c5ca23e/app/src/main/java/org/apache/taverna/mobile/data/DataManager.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/data/DataManager.java b/app/src/main/java/org/apache/taverna/mobile/data/DataManager.java
index 56dc3d2..f95f17b 100644
--- a/app/src/main/java/org/apache/taverna/mobile/data/DataManager.java
+++ b/app/src/main/java/org/apache/taverna/mobile/data/DataManager.java
@@ -35,7 +35,9 @@ import java.util.Map;
 
 import okhttp3.RequestBody;
 import okhttp3.ResponseBody;
+import retrofit2.Response;
 import rx.Observable;
+import rx.Subscription;
 import rx.functions.Func1;
 
 
@@ -183,7 +185,7 @@ public class DataManager {
      * @param baseAuth is base64 encoded credential
      * @return Workflow's ID
      */
-    public Observable<PlayerWorkflow> uploadWorkflowContent(RequestBody body, String baseAuth) {
+    public Observable<Response<ResponseBody>> uploadWorkflowContent(RequestBody body, String baseAuth) {
         return mBaseApiManager.getTavernaPlayerApi().uploadWorkflow(body, baseAuth);
     }
 
@@ -206,4 +208,9 @@ public class DataManager {
     public Observable<User> getMyWorkflows(String userID, Map<String, String> options) {
         return mBaseApiManager.getTavernaApi().getUserDetail(userID , options);
     }
+
+    public Observable<Response<ResponseBody>> getWorkflowInputs(String auth, String runLocationID) {
+        return mBaseApiManager.getTavernaPlayerApi().getInputs(auth, runLocationID);
+
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/8c5ca23e/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaPlayerService.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaPlayerService.java b/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaPlayerService.java
index 0a3c688..d2558c8 100644
--- a/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaPlayerService.java
+++ b/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaPlayerService.java
@@ -24,26 +24,35 @@ import org.apache.taverna.mobile.data.model.PlayerWorkflowDetail;
 
 import okhttp3.RequestBody;
 import okhttp3.ResponseBody;
+import retrofit2.Response;
 import retrofit2.http.Body;
 import retrofit2.http.GET;
 import retrofit2.http.Header;
 import retrofit2.http.Headers;
 import retrofit2.http.POST;
+import retrofit2.http.PUT;
+import retrofit2.http.Path;
 import retrofit2.http.Query;
 import rx.Observable;
+import rx.Subscription;
 
 public interface TavernaPlayerService {
 
     @POST("rest/runs")
     @Headers({
             "Content-type: application/vnd.taverna.t2flow+xml"
- //           APIEndPoint.JSON_CONTENT_HEADER,
-   //         APIEndPoint.JSON_ACCEPT_HEADER,
-     //       APIEndPoint.UTF_CONTENT_ENCODING_HEADER
             })
-    Observable<PlayerWorkflow> uploadWorkflow(@Body RequestBody body, @Header("Authorization")
+    Observable<Response<ResponseBody>> uploadWorkflow(@Body RequestBody body, @Header("Authorization")
             String authorization);
 
+    @PUT("rest/runs/{uuid}")
+    Observable<Response<ResponseBody>> startWorkflowRun(@Body RequestBody body, @Header("Authorization")
+            String authorization);
+
+    @GET("rest/runs/{uuid}/input/baclava")
+    Observable<Response<ResponseBody>> getInputs(@Header("Authorization")
+            String authorization, @Path("uuid") String runLocationID);
+
     @POST("/users/sign_in")
     @Headers({APIEndPoint.XML_ACCEPT_HEADER})
     Observable<ResponseBody> playerlogin(@Header("Authorization") String
@@ -55,4 +64,5 @@ public interface TavernaPlayerService {
             APIEndPoint.JSON_CONTENT_HEADER,
             APIEndPoint.JSON_ACCEPT_HEADER})
     Observable<PlayerWorkflowDetail> getWorkflowDetail(@Query("workflow_id") int id);
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/8c5ca23e/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaService.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaService.java b/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaService.java
index c1aed26..5285572 100644
--- a/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaService.java
+++ b/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaService.java
@@ -35,6 +35,7 @@ import retrofit2.http.Query;
 import retrofit2.http.QueryMap;
 import retrofit2.http.Url;
 import rx.Observable;
+import rx.Subscription;
 
 
 public interface TavernaService {
@@ -73,4 +74,5 @@ public interface TavernaService {
     Observable<Workflows> getMyWorkflows(@Query("id") String id,
                                          @QueryMap Map<String, String> options);
 
+    Subscription getWorkflowInputs(String runLocationID);
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/8c5ca23e/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginFragment.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginFragment.java b/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginFragment.java
index ebb57d7..1dcf279 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginFragment.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginFragment.java
@@ -166,8 +166,8 @@ public class PlayerLoginFragment extends Fragment implements PlayerLoginMvpView,
     }
 
     @Override
-    public void validCredential(String runID) {
-        mCallback.onSuccessfulLogin(runID);
+    public void runLocation(String runID) {
+        mCallback.onRunStart(runID);
     }
 
     private void validateEmail() {
@@ -228,7 +228,7 @@ public class PlayerLoginFragment extends Fragment implements PlayerLoginMvpView,
 
 
     public interface OnSuccessful {
-        void onSuccessfulLogin(String runID);
+        void onRunStart(String runID);
     }
 
     private class CustomTextWatcher implements TextWatcher {

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/8c5ca23e/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginMvpView.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginMvpView.java b/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginMvpView.java
index e34ba47..8ad3cb3 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginMvpView.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginMvpView.java
@@ -27,6 +27,6 @@ public interface PlayerLoginMvpView extends MvpView {
 
     void showCredentialError();
 
-    void validCredential(String runID);
+    void runLocation(String runID);
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/8c5ca23e/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginPresenter.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginPresenter.java b/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginPresenter.java
index 66bcb93..7d6c174 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginPresenter.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginPresenter.java
@@ -32,9 +32,11 @@ import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
 
+import okhttp3.Headers;
 import okhttp3.MediaType;
 import okhttp3.RequestBody;
 import okhttp3.ResponseBody;
+import retrofit2.Response;
 import retrofit2.adapter.rxjava.HttpException;
 import rx.Observable;
 import rx.Observer;
@@ -73,9 +75,9 @@ public class PlayerLoginPresenter extends BasePresenter<PlayerLoginMvpView> {
         if (mSubscriptions != null) mSubscriptions.unsubscribe();
 
         mSubscriptions = mDataManager.downloadWorkflowContent(workflowURL)
-                .concatMap(new Func1<ResponseBody, Observable<PlayerWorkflow>>() {
+                .concatMap(new Func1<ResponseBody, Observable<Response<ResponseBody>>>() {
                     @Override
-                    public Observable<PlayerWorkflow> call(ResponseBody responseBody) {
+                    public Observable<Response<ResponseBody>> call(ResponseBody responseBody) {
 
                         StringBuffer sb = new StringBuffer();
                         String post = "";
@@ -117,32 +119,43 @@ public class PlayerLoginPresenter extends BasePresenter<PlayerLoginMvpView> {
 
 
                     }
-                })
-                .concatMap(new Func1<PlayerWorkflow, Observable<PlayerWorkflowDetail>>() {
-                    @Override
-                    public Observable<PlayerWorkflowDetail> call(PlayerWorkflow playerWorkflow) {
+                }).observeOn(AndroidSchedulers.mainThread())
+                   .subscribeOn(Schedulers.io())
+                   .subscribe(new Observer<Response<ResponseBody>>() {
 
-                        return mDataManager.getWorkflowDetail(playerWorkflow.getId());
-                    }
-                })
-                .observeOn(AndroidSchedulers.mainThread())
-                .subscribeOn(Schedulers.io())
-                .subscribe(new Observer<PlayerWorkflowDetail>() {
                     @Override
                     public void onCompleted() {
+
                     }
 
                     @Override
                     public void onError(Throwable e) {
 
-                        getMvpView().showError(R.string.general_run_err);
                     }
 
                     @Override
-                    public void onNext(PlayerWorkflowDetail playerWorkflowDetail) {
-                        getMvpView().validCredential(playerWorkflowDetail.getRun().getName());
+                    public void onNext(Response response) {
+                        getMvpView().runLocation(response.headers().get("Location"));
                     }
                 });
+//                .observeOn(AndroidSchedulers.mainThread())
+//                .subscribeOn(Schedulers.io())
+//                .subscribe(new Observer<PlayerWorkflowDetail>() {
+//                    @Override
+//                    public void onCompleted() {
+//                    }
+//
+//                    @Override
+//                    public void onError(Throwable e) {
+//
+//                        getMvpView().showError(R.string.general_run_err);
+//                    }
+//
+//                    @Override
+//                    public void onNext(PlayerWorkflowDetail playerWorkflowDetail) {
+//                        getMvpView().validCredential(playerWorkflowDetail.getRun().getName());
+//                    }
+//                });
 
 //        mSubscriptions = mDataManager.authPlayerUserLoginDetail(getEncodedCredential(username,
 //                password), loginFlag)

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/8c5ca23e/app/src/main/java/org/apache/taverna/mobile/ui/workflowrun/WorkflowRunActivity.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/workflowrun/WorkflowRunActivity.java b/app/src/main/java/org/apache/taverna/mobile/ui/workflowrun/WorkflowRunActivity.java
index 42bb06b..ad44e37 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/workflowrun/WorkflowRunActivity.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/workflowrun/WorkflowRunActivity.java
@@ -39,6 +39,8 @@ import org.apache.taverna.mobile.utils.Constants;
 import org.apache.taverna.mobile.utils.NonSwipeableViewPager;
 import org.apache.taverna.mobile.utils.WebViewGenerator;
 
+import java.util.List;
+
 import butterknife.BindView;
 import butterknife.ButterKnife;
 
@@ -110,14 +112,18 @@ public class WorkflowRunActivity extends FragmentActivity implements WorkflowRun
         mWorkflowRunPresenter.detachView();
     }
 
-
+    /**
+     * Get the URL location of the run and start monitoring it
+     * @param runLocation The URL on the server of the run
+     */
     @Override
-    public void onSuccessfulLogin(String runID) {
+    public void onRunStart(String runLocation) {
         position = 1;
         mPager.setCurrentItem(position);
         mStepsView.setCompletedPosition(position % labels.length).drawView();
-        mWorkflowRunPresenter.runWorkflow(getIntent().getStringExtra(Constants.WORKFLOW_URL));
-        mWorkflowRunPresenter.runWorkflow(runID);
+        mWorkflowRunPresenter.showWorkflowInputs(runLocation);
+        //mWorkflowRunPresenter.runWorkflow(getIntent().getStringExtra(Constants.WORKFLOW_URL));
+        //mWorkflowRunPresenter.runWorkflow(runID);
     }
 
     @Override
@@ -128,7 +134,7 @@ public class WorkflowRunActivity extends FragmentActivity implements WorkflowRun
     }
 
     @Override
-    public void movetoInputs() {
+    public void moveToInputs() {
         position = 3;
         mStepsView.setCompletedPosition(position % labels.length).drawView();
         mPager.setCurrentItem(position);
@@ -136,6 +142,11 @@ public class WorkflowRunActivity extends FragmentActivity implements WorkflowRun
     }
 
     @Override
+    public void setInputs(List<String> inputs) {
+        //Update the view or something?
+    }
+
+    @Override
     public void setInputsAttribute(int id) {
         String playerURL = dataManager.getPreferencesHelper().getPlayerURL();
 
@@ -154,7 +165,6 @@ public class WorkflowRunActivity extends FragmentActivity implements WorkflowRun
         finish();
     }
 
-
     private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
         public ScreenSlidePagerAdapter(FragmentManager fm) {
             super(fm);

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/8c5ca23e/app/src/main/java/org/apache/taverna/mobile/ui/workflowrun/WorkflowRunMvpView.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/workflowrun/WorkflowRunMvpView.java b/app/src/main/java/org/apache/taverna/mobile/ui/workflowrun/WorkflowRunMvpView.java
index c5dcff5..dbaa282 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/workflowrun/WorkflowRunMvpView.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/workflowrun/WorkflowRunMvpView.java
@@ -21,13 +21,17 @@ package org.apache.taverna.mobile.ui.workflowrun;
 
 import org.apache.taverna.mobile.ui.base.MvpView;
 
+import java.util.List;
+
 public interface WorkflowRunMvpView extends MvpView {
 
     void movetoUploadWorkflow();
 
-    void movetoInputs();
-
     void setInputsAttribute(int id);
 
     void showError();
-}
+
+    void moveToInputs();
+
+    void setInputs(List<String> inputs);
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/8c5ca23e/app/src/main/java/org/apache/taverna/mobile/ui/workflowrun/WorkflowRunPresenter.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/workflowrun/WorkflowRunPresenter.java b/app/src/main/java/org/apache/taverna/mobile/ui/workflowrun/WorkflowRunPresenter.java
index 105966e..395b4cd 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/workflowrun/WorkflowRunPresenter.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/workflowrun/WorkflowRunPresenter.java
@@ -30,10 +30,12 @@ import org.apache.taverna.mobile.ui.base.BasePresenter;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
+import java.util.List;
 
 import okhttp3.MediaType;
 import okhttp3.RequestBody;
 import okhttp3.ResponseBody;
+import retrofit2.Response;
 import rx.Observable;
 import rx.Observer;
 import rx.Subscription;
@@ -43,6 +45,7 @@ import rx.schedulers.Schedulers;
 
 public class WorkflowRunPresenter extends BasePresenter<WorkflowRunMvpView> {
 
+    private List<String> inputs;
     private static final String TAG = WorkflowRunPresenter.class.getSimpleName();
     private final DataManager mDataManager;
     private Subscription mSubscriptions;
@@ -71,9 +74,9 @@ public class WorkflowRunPresenter extends BasePresenter<WorkflowRunMvpView> {
         if (mSubscriptions != null) mSubscriptions.unsubscribe();
 
         mSubscriptions = mDataManager.downloadWorkflowContent(contentURL)
-                .concatMap(new Func1<ResponseBody, Observable<PlayerWorkflow>>() {
+                .concatMap(new Func1<ResponseBody, Observable<Response<ResponseBody>>>() {
                     @Override
-                    public Observable<PlayerWorkflow> call(ResponseBody responseBody) {
+                    public Observable<Response<ResponseBody>> call(ResponseBody responseBody) {
 
                         StringBuffer sb = new StringBuffer();
                         String post = "";
@@ -115,19 +118,39 @@ public class WorkflowRunPresenter extends BasePresenter<WorkflowRunMvpView> {
 
                     }
                 })
-                .concatMap(new Func1<PlayerWorkflow, Observable<PlayerWorkflowDetail>>() {
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribeOn(Schedulers.io())
+                .subscribe(new Observer<Response<ResponseBody>>() {
                     @Override
-                    public Observable<PlayerWorkflowDetail> call(PlayerWorkflow playerWorkflow) {
+                    public void onCompleted() {
+                        getMvpView().moveToInputs();
+                    }
 
-                        return mDataManager.getWorkflowDetail(playerWorkflow.getId());
+                    @Override
+                    public void onError(Throwable e) {
+
+                        getMvpView().showError();
                     }
-                })
+
+                    @Override
+                    public void onNext(Response playerWorkflowDetail) {
+                       // getMvpView().setInputsAttribute(playerWorkflowDetail.getRun()
+                        //        .getWorkflowId());
+                    }
+                });
+    }
+
+    public void showWorkflowInputs(String runLocation) {
+        if (mSubscriptions != null) mSubscriptions.unsubscribe();
+        String basicAuth = mDataManager.getPreferencesHelper()
+                .getUserPlayerCredential();
+        mSubscriptions = mDataManager.getWorkflowInputs(basicAuth.trim(), runLocation)
                 .observeOn(AndroidSchedulers.mainThread())
                 .subscribeOn(Schedulers.io())
-                .subscribe(new Observer<PlayerWorkflowDetail>() {
+                .subscribe(new Observer<Response<ResponseBody>>() {
                     @Override
                     public void onCompleted() {
-                        getMvpView().movetoInputs();
+                        getMvpView().setInputs(inputs);
                     }
 
                     @Override
@@ -137,12 +160,10 @@ public class WorkflowRunPresenter extends BasePresenter<WorkflowRunMvpView> {
                     }
 
                     @Override
-                    public void onNext(PlayerWorkflowDetail playerWorkflowDetail) {
-                        getMvpView().setInputsAttribute(playerWorkflowDetail.getRun()
-                                .getWorkflowId());
+                    public void onNext(Response inputsResponse) {
+                        //Set the inputs
                     }
                 });
     }
 
-
-}
+    }