public void runWorkflow()

in app/src/main/java/org/apache/taverna/mobile/ui/workflowrun/WorkflowRunPresenter.java [70:143]


    public void runWorkflow(String contentURL) {
        checkViewAttached();
        compositeDisposable.add(mDataManager.downloadWorkflowContent(contentURL)
                .concatMap(new Function<ResponseBody, ObservableSource<PlayerWorkflow>>() {

                    @Override
                    public ObservableSource<PlayerWorkflow> apply(ResponseBody responseBody)
                            throws Exception {
                        StringBuffer sb = new StringBuffer();
                        String post = "";

                        String basicAuth = 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/json"), post);

                            return mDataManager.uploadWorkflowContent(body, basicAuth.trim());
                        } else {
                            return Observable.empty();
                        }
                    }
                })
                .concatMap(new Function<PlayerWorkflow, ObservableSource<PlayerWorkflowDetail>>() {

                    @Override
                    public ObservableSource<PlayerWorkflowDetail> apply(
                            PlayerWorkflow playerWorkflow) throws Exception {
                        return mDataManager.getWorkflowDetail(playerWorkflow.getId());
                    }
                })
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribeWith(new DisposableObserver<PlayerWorkflowDetail>() {
                    @Override
                    public void onNext(PlayerWorkflowDetail playerWorkflowDetail) {
                        getMvpView().setInputsAttribute(playerWorkflowDetail.getRun()
                                .getWorkflowId());
                    }

                    @Override
                    public void onError(Throwable e) {
                        getMvpView().showError();
                    }

                    @Override
                    public void onComplete() {

                    }
                }));
    }