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() {
}
}));
}