Repository: incubator-taverna-mobile
Updated Branches:
  refs/heads/ian_taverna_server [created] 825c79b11


Use taverna server to start workflow run


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

Branch: refs/heads/ian_taverna_server
Commit: eab06c317e3ab149c8e593bb811dee3a3a74f58e
Parents: 3798002
Author: Ian Dunlop <[email protected]>
Authored: Fri Dec 9 16:35:05 2016 +0000
Committer: Ian Dunlop <[email protected]>
Committed: Fri Dec 9 16:35:05 2016 +0000

----------------------------------------------------------------------
 .../data/remote/TavernaPlayerService.java       |  10 +-
 .../ui/playerlogin/PlayerLoginFragment.java     |  31 +++--
 .../ui/playerlogin/PlayerLoginMvpView.java      |   3 +-
 .../ui/playerlogin/PlayerLoginPresenter.java    | 127 ++++++++++++++++---
 .../ui/workflowrun/WorkflowRunActivity.java     |   3 +-
 .../ui/workflowrun/WorkflowRunPresenter.java    |  10 +-
 .../main/res/layout/activity_workflow_run.xml   |   4 +-
 .../res/layout/fragment_player_login_layout.xml |   4 +-
 app/src/main/res/values/strings.xml             |   2 +
 9 files changed, 147 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/eab06c31/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 e71ea38..0a3c688 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
@@ -34,11 +34,13 @@ import rx.Observable;
 
 public interface TavernaPlayerService {
 
-    @POST("/workflows.json")
+    @POST("rest/runs")
     @Headers({
-            APIEndPoint.JSON_CONTENT_HEADER,
-            APIEndPoint.JSON_ACCEPT_HEADER,
-            APIEndPoint.UTF_CONTENT_ENCODING_HEADER})
+            "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")
             String authorization);
 

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/eab06c31/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 7123e6e..ebb57d7 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
@@ -38,10 +38,12 @@ import org.apache.taverna.mobile.R;
 import org.apache.taverna.mobile.data.DataManager;
 import org.apache.taverna.mobile.data.local.PreferencesHelper;
 import org.apache.taverna.mobile.utils.ConnectionInfo;
+import org.apache.taverna.mobile.utils.Constants;
 
 import butterknife.BindView;
 import butterknife.ButterKnife;
 import butterknife.OnClick;
+import rx.Subscription;
 
 
 public class PlayerLoginFragment extends Fragment implements 
PlayerLoginMvpView, View
@@ -64,6 +66,7 @@ public class PlayerLoginFragment extends Fragment implements 
PlayerLoginMvpView,
     OnSuccessful mCallback;
     private DataManager dataManager;
     private PlayerLoginPresenter mPlayerLoginPresenter;
+    private Subscription mSubscriptions;
 
     public static PlayerLoginFragment newInstance() {
 
@@ -119,17 +122,22 @@ public class PlayerLoginFragment extends Fragment 
implements PlayerLoginMvpView,
     @OnClick(R.id.bLogin)
     public void login(View v) {
         if (ConnectionInfo.isConnectingToInternet(getContext())) {
-            if (!mEditTextEmail.getText().toString().trim().isEmpty() && 
!mEditTextPassword
-                    .getText().toString().trim().isEmpty()) {
-
-                
mPlayerLoginPresenter.playerLogin(mEditTextEmail.getText().toString().trim(),
+            String workflowURL = 
getActivity().getIntent().getStringExtra(Constants.WORKFLOW_URL);
+            mPlayerLoginPresenter.playerLogin(workflowURL, 
mEditTextEmail.getText().toString().trim(),
                         mEditTextPassword.getText().toString().trim(), 
mCheckBoxRemember
                                 .isChecked());
 
-            } else {
-
-                showError(R.string.error_vaild_credential);
-            }
+//            if (!mEditTextEmail.getText().toString().trim().isEmpty() && 
!mEditTextPassword
+//                    .getText().toString().trim().isEmpty()) {
+//
+//                
mPlayerLoginPresenter.playerLogin(mEditTextEmail.getText().toString().trim(),
+//                        mEditTextPassword.getText().toString().trim(), 
mCheckBoxRemember
+//                                .isChecked());
+//
+//            } else {
+//
+//                showError(R.string.error_vaild_credential);
+//            }
         } else {
 
             showError(R.string.no_internet_connection);
@@ -158,11 +166,10 @@ public class PlayerLoginFragment extends Fragment 
implements PlayerLoginMvpView,
     }
 
     @Override
-    public void validCredential() {
-        mCallback.onSuccessfulLogin();
+    public void validCredential(String runID) {
+        mCallback.onSuccessfulLogin(runID);
     }
 
-
     private void validateEmail() {
 
         if (mEditTextEmail.getText().toString().trim().isEmpty()) {
@@ -221,7 +228,7 @@ public class PlayerLoginFragment extends Fragment 
implements PlayerLoginMvpView,
 
 
     public interface OnSuccessful {
-        void onSuccessfulLogin();
+        void onSuccessfulLogin(String runID);
     }
 
     private class CustomTextWatcher implements TextWatcher {

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/eab06c31/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 4b4d84d..e34ba47 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,5 +27,6 @@ public interface PlayerLoginMvpView extends MvpView {
 
     void showCredentialError();
 
-    void validCredential();
+    void validCredential(String runID);
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/eab06c31/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 8113cbd..66bcb93 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
@@ -23,13 +23,24 @@ import android.util.Log;
 
 import org.apache.taverna.mobile.R;
 import org.apache.taverna.mobile.data.DataManager;
+import org.apache.taverna.mobile.data.model.PlayerWorkflow;
+import org.apache.taverna.mobile.data.model.PlayerWorkflowDetail;
 import org.apache.taverna.mobile.ui.base.BasePresenter;
+import org.apache.taverna.mobile.utils.Constants;
 
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import okhttp3.MediaType;
+import okhttp3.RequestBody;
 import okhttp3.ResponseBody;
 import retrofit2.adapter.rxjava.HttpException;
+import rx.Observable;
 import rx.Observer;
 import rx.Subscription;
 import rx.android.schedulers.AndroidSchedulers;
+import rx.functions.Func1;
 import rx.schedulers.Schedulers;
 
 
@@ -56,43 +67,117 @@ public class PlayerLoginPresenter extends 
BasePresenter<PlayerLoginMvpView> {
         if (mSubscriptions != null) mSubscriptions.unsubscribe();
     }
 
-    public void playerLogin(final String username, final String password, 
final boolean loginFlag) {
+    public void playerLogin(final String workflowURL, final String username, 
final String password, final boolean loginFlag) {
+        if (mSubscriptions != null) mSubscriptions.unsubscribe();
+
         if (mSubscriptions != null) mSubscriptions.unsubscribe();
 
-        mSubscriptions = 
mDataManager.authPlayerUserLoginDetail(getEncodedCredential(username,
-                password), loginFlag)
+        mSubscriptions = mDataManager.downloadWorkflowContent(workflowURL)
+                .concatMap(new Func1<ResponseBody, 
Observable<PlayerWorkflow>>() {
+                    @Override
+                    public Observable<PlayerWorkflow> call(ResponseBody 
responseBody) {
+
+                        StringBuffer sb = new StringBuffer();
+                        String post = "";
+
+                        String basicAuth = getEncodedCredential(username, 
password);
+                         //       mDataManager.getPreferencesHelper()
+                         //       .getUserPlayerCredential();
+                        boolean flag = false;
+                        try {
+
+                            BufferedReader bufferedReader = new BufferedReader(
+                                    new 
InputStreamReader(responseBody.byteStream()));
+
+                            String str = "";
+
+                            while ((str = bufferedReader.readLine()) != null) {
+                                sb.append(str);
+                            }
+
+                            bufferedReader.close();
+
+                            //String data = 
"{\"document\":\"data:application/octet-stream;base64," +
+                            //        
Base64.encodeToString(sb.toString().getBytes("UTF-8"), Base64
+                            //                .URL_SAFE | 
Base64.NO_WRAP).replace('-', '+') + "\"}";
+
+                            /// post = "{\"workflow\":" + data + "}";
+                            flag = true;
+                        } catch (IOException e) {
+                            Log.e(TAG, "call: ", e);
+                        }
+                        if (flag) {
+                            RequestBody body =
+                                    
RequestBody.create(MediaType.parse("application/vnd.taverna.t2flow+xml"), 
sb.toString());
+
+                            return mDataManager.uploadWorkflowContent(body, 
basicAuth.trim());
+                        } else {
+                            return Observable.empty();
+                        }
+
+
+                    }
+                })
+                .concatMap(new Func1<PlayerWorkflow, 
Observable<PlayerWorkflowDetail>>() {
+                    @Override
+                    public Observable<PlayerWorkflowDetail> 
call(PlayerWorkflow playerWorkflow) {
+
+                        return 
mDataManager.getWorkflowDetail(playerWorkflow.getId());
+                    }
+                })
                 .observeOn(AndroidSchedulers.mainThread())
                 .subscribeOn(Schedulers.io())
-                .subscribe(new Observer<ResponseBody>() {
+                .subscribe(new Observer<PlayerWorkflowDetail>() {
                     @Override
                     public void onCompleted() {
-
                     }
 
                     @Override
                     public void onError(Throwable e) {
-                        Log.e(TAG, "onError: ", e);
-                        if (e instanceof HttpException) {
-                            if (((HttpException) e).code() == 401) {
-                                getMvpView().showCredentialError();
-                            } else if (((HttpException) e).code() == 406) {
-                                getMvpView().validCredential();
-                                mDataManager.getPreferencesHelper()
-                                        
.setUserPlayerLoggedInFlagAndCredential(loginFlag,
-                                                getEncodedCredential(username, 
password));
-
-                            } else {
-                                getMvpView().showError(R.string.servererr);
-                            }
-                        }
+
+                        getMvpView().showError(R.string.general_run_err);
                     }
 
                     @Override
-                    public void onNext(ResponseBody responseBody) {
-                        Log.d(TAG, "onCompleted: " + 
responseBody.byteStream());
+                    public void onNext(PlayerWorkflowDetail 
playerWorkflowDetail) {
+                        
getMvpView().validCredential(playerWorkflowDetail.getRun().getName());
                     }
                 });
 
+//        mSubscriptions = 
mDataManager.authPlayerUserLoginDetail(getEncodedCredential(username,
+//                password), loginFlag)
+//                .observeOn(AndroidSchedulers.mainThread())
+//                .subscribeOn(Schedulers.io())
+//                .subscribe(new Observer<ResponseBody>() {
+//                    @Override
+//                    public void onCompleted() {
+//
+//                    }
+//
+//                    @Override
+//                    public void onError(Throwable e) {
+//                        Log.e(TAG, "onError: ", e);
+//                        if (e instanceof HttpException) {
+//                            if (((HttpException) e).code() == 401) {
+//                                getMvpView().showCredentialError();
+//                            } else if (((HttpException) e).code() == 406) {
+//                                getMvpView().validCredential();
+//                                mDataManager.getPreferencesHelper()
+//                                        
.setUserPlayerLoggedInFlagAndCredential(loginFlag,
+//                                                
getEncodedCredential(username, password));
+//
+//                            } else {
+//                                getMvpView().showError(R.string.servererr);
+//                            }
+//                        }
+//                    }
+//
+//                    @Override
+//                    public void onNext(ResponseBody responseBody) {
+//                        Log.d(TAG, "onCompleted: " + 
responseBody.byteStream());
+//                    }
+//                });
+
     }
 
     private String getEncodedCredential(String username, String password) {

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/eab06c31/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 50febae..42bb06b 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
@@ -112,11 +112,12 @@ public class WorkflowRunActivity extends FragmentActivity 
implements WorkflowRun
 
 
     @Override
-    public void onSuccessfulLogin() {
+    public void onSuccessfulLogin(String runID) {
         position = 1;
         mPager.setCurrentItem(position);
         mStepsView.setCompletedPosition(position % labels.length).drawView();
         
mWorkflowRunPresenter.runWorkflow(getIntent().getStringExtra(Constants.WORKFLOW_URL));
+        mWorkflowRunPresenter.runWorkflow(runID);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/eab06c31/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 afb8761..105966e 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
@@ -94,18 +94,18 @@ public class WorkflowRunPresenter extends 
BasePresenter<WorkflowRunMvpView> {
 
                             bufferedReader.close();
 
-                            String data = 
"{\"document\":\"data:application/octet-stream;base64," +
-                                    
Base64.encodeToString(sb.toString().getBytes("UTF-8"), Base64
-                                            .URL_SAFE | 
Base64.NO_WRAP).replace('-', '+') + "\"}";
+                            //String data = 
"{\"document\":\"data:application/octet-stream;base64," +
+                            //        
Base64.encodeToString(sb.toString().getBytes("UTF-8"), Base64
+                            //                .URL_SAFE | 
Base64.NO_WRAP).replace('-', '+') + "\"}";
 
-                            post = "{\"workflow\":" + data + "}";
+                           /// post = "{\"workflow\":" + data + "}";
                             flag = true;
                         } catch (IOException e) {
                             Log.e(TAG, "call: ", e);
                         }
                         if (flag) {
                             RequestBody body =
-                                    
RequestBody.create(MediaType.parse("application/json"), post);
+                                    
RequestBody.create(MediaType.parse("application/vnd.taverna.t2flow+xml"), 
sb.toString());
 
                             return mDataManager.uploadWorkflowContent(body, 
basicAuth.trim());
                         } else {

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/eab06c31/app/src/main/res/layout/activity_workflow_run.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/layout/activity_workflow_run.xml 
b/app/src/main/res/layout/activity_workflow_run.xml
index cf4fea9..38d9fb0 100644
--- a/app/src/main/res/layout/activity_workflow_run.xml
+++ b/app/src/main/res/layout/activity_workflow_run.xml
@@ -27,7 +27,9 @@ limitations under the License.
         android:id="@+id/stepsView"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        />
+        >
+
+    </com.anton46.stepsview.StepsView>
 
     <org.apache.taverna.mobile.utils.NonSwipeableViewPager
         android:id="@+id/viewpager"

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/eab06c31/app/src/main/res/layout/fragment_player_login_layout.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/layout/fragment_player_login_layout.xml 
b/app/src/main/res/layout/fragment_player_login_layout.xml
index 594fb6f..5d27b38 100644
--- a/app/src/main/res/layout/fragment_player_login_layout.xml
+++ b/app/src/main/res/layout/fragment_player_login_layout.xml
@@ -31,7 +31,7 @@ limitations under the License.
         android:layout_height="wrap_content"
         android:gravity="center"
         android:textSize="24sp"
-        android:text="@string/headline_taverna_player_portal_login"/>
+        android:text="@string/headline_taverna_server_login"/>
 
     <android.support.design.widget.TextInputLayout
         android:layout_below="@id/header"
@@ -79,7 +79,7 @@ limitations under the License.
         android:id="@+id/bLogin"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:text="@string/button_text_login"
+        android:text="@string/play_workflow"
         android:layout_marginTop="20dp"
         android:layout_below="@id/cbRemember"/>
 

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/eab06c31/app/src/main/res/values/strings.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/values/strings.xml 
b/app/src/main/res/values/strings.xml
index d063b3f..9b21a05 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -113,6 +113,7 @@ limitations under the License.
     <string name="playeruser">Username/email</string>
     <string name="playerpass">Password</string>
     <string name="servererr">Server error. Please try again later</string>
+    <string name="general_run_err">There was an error while creating the run. 
Please try again.</string>
     <string name="auth_err">Invalid login credentials</string>
     <string name="myexperimenttitle">Configure MyExperiment Account</string>
     <string name="myexperimentsummary">Username used to login to 
MyExperiment</string>
@@ -180,6 +181,7 @@ limitations under the License.
     <string name="uploading_workflow_lable">Uploading Workflow</string>
     <string name="please_wait">Please Wait ...</string>
     <string name="headline_taverna_player_portal_login">Taverna Player Portal 
Login</string>
+    <string name="headline_taverna_server_login">Taverna Server Login</string>
     <string name="button_text_login">Login</string>
 
 

Reply via email to