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/23 16:26:50 UTC
incubator-taverna-mobile git commit: Fetch inputs for a run.
Repository: incubator-taverna-mobile
Updated Branches:
refs/heads/ian_taverna_server cffcc3da6 -> de38c55c9
Fetch inputs for a 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/de38c55c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/de38c55c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/de38c55c
Branch: refs/heads/ian_taverna_server
Commit: de38c55c902325130a4d0d02a48474c6e6ce7ece
Parents: cffcc3d
Author: Ian Dunlop <ia...@manchester.ac.uk>
Authored: Mon Jan 23 16:26:25 2017 +0000
Committer: Ian Dunlop <ia...@manchester.ac.uk>
Committed: Mon Jan 23 16:26:25 2017 +0000
----------------------------------------------------------------------
.../apache/taverna/mobile/data/DataManager.java | 7 +-
.../apache/taverna/mobile/data/model/Input.java | 49 ++++++++++++
.../taverna/mobile/data/model/Inputs.java | 60 +++++++++++++++
.../mobile/data/remote/BaseApiManager.java | 5 ++
.../data/remote/TavernaPlayerService.java | 3 +-
.../data/remote/TavernaServerService.java | 34 +++++++++
.../TavernaServerCreateRunFragment.java | 3 +-
.../TavernaServerCreateRunPresenter.java | 57 +-------------
.../inputs/TavernaServerInputsFragment.java | 73 +++++++++++++++---
.../inputs/TavernaServerInputsMvpView.java | 10 +++
.../inputs/TavernaServerInputsPresenter.java | 78 ++++++++++++++++++++
.../ui/workflowrun/WorkflowRunActivity.java | 65 +++++++++++++---
.../ui/workflowrun/WorkflowRunMvpView.java | 3 +-
.../ui/workflowrun/WorkflowRunPresenter.java | 30 +-------
.../apache/taverna/mobile/utils/Constants.java | 7 ++
.../layout/fragment_taverna_server_inputs.xml | 35 +++++----
app/src/main/res/layout/input_port.xml | 33 +++++++++
17 files changed, 431 insertions(+), 121 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/de38c55c/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 f95f17b..ea7d08a 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
@@ -22,6 +22,7 @@ import org.apache.taverna.mobile.data.local.DBHelper;
import org.apache.taverna.mobile.data.local.PreferencesHelper;
import org.apache.taverna.mobile.data.model.Announcements;
import org.apache.taverna.mobile.data.model.DetailAnnouncement;
+import org.apache.taverna.mobile.data.model.Inputs;
import org.apache.taverna.mobile.data.model.License;
import org.apache.taverna.mobile.data.model.PlayerWorkflow;
import org.apache.taverna.mobile.data.model.PlayerWorkflowDetail;
@@ -186,7 +187,7 @@ public class DataManager {
* @return Workflow's ID
*/
public Observable<Response<ResponseBody>> uploadWorkflowContent(RequestBody body, String baseAuth) {
- return mBaseApiManager.getTavernaPlayerApi().uploadWorkflow(body, baseAuth);
+ return mBaseApiManager.getTavernaServerApi().uploadWorkflow(body, baseAuth);
}
/**
@@ -209,8 +210,8 @@ public class DataManager {
return mBaseApiManager.getTavernaApi().getUserDetail(userID , options);
}
- public Observable<Response<ResponseBody>> getWorkflowInputs(String auth, String runLocationID) {
- return mBaseApiManager.getTavernaPlayerApi().getInputs(auth, runLocationID);
+ public Observable<Inputs> getWorkflowInputs(String auth, String runLocationID) {
+ return mBaseApiManager.getTavernaServerApi().getInputs(auth, runLocationID);
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/de38c55c/app/src/main/java/org/apache/taverna/mobile/data/model/Input.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/data/model/Input.java b/app/src/main/java/org/apache/taverna/mobile/data/model/Input.java
new file mode 100644
index 0000000..d8ba998
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/data/model/Input.java
@@ -0,0 +1,49 @@
+package org.apache.taverna.mobile.data.model;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import org.simpleframework.xml.Attribute;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+import org.simpleframework.xml.Text;
+
+/**
+ * Created by ian on 16/01/17.
+ */
+
+@Root(name="input")
+public class Input {
+ @Attribute(name = "name")
+ private String name;
+
+ @Attribute(name = "depth")
+ private String depth;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDepth() {
+ return depth;
+ }
+
+ public void setDepth(String depth) {
+ this.depth = depth;
+ }
+
+ public String getHref() {
+ return href;
+ }
+
+ public void setHref(String href) {
+ this.href = href;
+ }
+
+ @Attribute(name = "href", required = false)
+ private String href;
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/de38c55c/app/src/main/java/org/apache/taverna/mobile/data/model/Inputs.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/data/model/Inputs.java b/app/src/main/java/org/apache/taverna/mobile/data/model/Inputs.java
new file mode 100644
index 0000000..53a307e
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/data/model/Inputs.java
@@ -0,0 +1,60 @@
+package org.apache.taverna.mobile.data.model;
+
+import org.simpleframework.xml.Attribute;
+import org.simpleframework.xml.ElementList;
+import org.simpleframework.xml.Root;
+
+import java.util.List;
+/**
+ * Created by ian on 16/01/17.
+ */
+
+@Root(name="inputDescription")
+public class Inputs {
+
+ @Attribute(name = "workflowId", required = false)
+ private String workflowId;
+
+ @Attribute(name = "workflowRun", required = false)
+ private String workflowRun;
+
+ public void setWorkflowId(String workflowId) {
+ this.workflowId = workflowId;
+ }
+
+ public void setWorkflowRun(String workflowRun) {
+ this.workflowRun = workflowRun;
+ }
+
+ public void setWorkflowRunId(String workflowRunId) {
+ this.workflowRunId = workflowRunId;
+ }
+
+ public void setInputs(List<Input> inputs) {
+ this.inputs = inputs;
+ }
+
+ @Attribute(name = "workflowRunId", required = false)
+ private String workflowRunId;
+
+ public List<Input> getInputs() {
+ return inputs;
+ }
+
+ public String getWorkflowId() {
+ return workflowId;
+ }
+
+ public String getWorkflowRun() {
+ return workflowRun;
+ }
+
+ public String getWorkflowRunId() {
+ return workflowRunId;
+ }
+
+ @ElementList(inline = true, required = false)
+ private List<Input> inputs;
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/de38c55c/app/src/main/java/org/apache/taverna/mobile/data/remote/BaseApiManager.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/data/remote/BaseApiManager.java b/app/src/main/java/org/apache/taverna/mobile/data/remote/BaseApiManager.java
index c3747e8..9766f9b 100644
--- a/app/src/main/java/org/apache/taverna/mobile/data/remote/BaseApiManager.java
+++ b/app/src/main/java/org/apache/taverna/mobile/data/remote/BaseApiManager.java
@@ -73,4 +73,9 @@ public class BaseApiManager {
return createJsonApi(TavernaPlayerService.class,
new PreferencesHelper(TavernaApplication.getContext()).getPlayerURL());
}
+
+ public TavernaServerService getTavernaServerApi() {
+ return createSimpleXMLApi(TavernaServerService.class,
+ new PreferencesHelper(TavernaApplication.getContext()).getPlayerURL());
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/de38c55c/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 d2558c8..0908cc4 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
@@ -49,7 +49,8 @@ public interface TavernaPlayerService {
Observable<Response<ResponseBody>> startWorkflowRun(@Body RequestBody body, @Header("Authorization")
String authorization);
- @GET("rest/runs/{uuid}/input/baclava")
+ @GET("rest/runs/{uuid}/input/expected")
+ @Headers({APIEndPoint.XML_ACCEPT_HEADER})
Observable<Response<ResponseBody>> getInputs(@Header("Authorization")
String authorization, @Path("uuid") String runLocationID);
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/de38c55c/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaServerService.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaServerService.java b/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaServerService.java
new file mode 100644
index 0000000..c40b312
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaServerService.java
@@ -0,0 +1,34 @@
+package org.apache.taverna.mobile.data.remote;
+
+import org.apache.taverna.mobile.data.model.Inputs;
+
+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.Path;
+import rx.Observable;
+
+/**
+ * Created by ian on 16/01/17.
+ */
+
+public interface TavernaServerService {
+
+ @POST("rest/runs")
+ @Headers({
+ "Content-type: application/vnd.taverna.t2flow+xml"
+ })
+ Observable<Response<ResponseBody>> uploadWorkflow(@Body RequestBody body, @Header("Authorization")
+ String authorization);
+
+ @GET("rest/runs/{uuid}/input/expected")
+ @Headers({APIEndPoint.XML_ACCEPT_HEADER})
+ Observable<Inputs> getInputs(@Header("Authorization")
+ String authorization, @Path("uuid") String runLocationID);
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/de38c55c/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/createrun/TavernaServerCreateRunFragment.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/createrun/TavernaServerCreateRunFragment.java b/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/createrun/TavernaServerCreateRunFragment.java
index 2c1f2ab..27c9834 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/createrun/TavernaServerCreateRunFragment.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/createrun/TavernaServerCreateRunFragment.java
@@ -126,7 +126,8 @@ public class TavernaServerCreateRunFragment extends Fragment implements TavernaS
if (!mEditTextEmail.getText().toString().trim().isEmpty() && !mEditTextPassword
.getText().toString().trim().isEmpty()) {
-
+ getActivity().getIntent().putExtra(Constants.SERVER_USER, mEditTextEmail.getText().toString().trim());
+ getActivity().getIntent().putExtra(Constants.SERVER_PASS, mEditTextPassword.getText().toString().trim());
tavernaPlayerCreateRunPresenter.playerLogin(workflowURL, mEditTextEmail.getText().toString().trim(),
mEditTextPassword.getText().toString().trim(), mCheckBoxRemember
.isChecked());
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/de38c55c/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/createrun/TavernaServerCreateRunPresenter.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/createrun/TavernaServerCreateRunPresenter.java b/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/createrun/TavernaServerCreateRunPresenter.java
index f250e33..e3a3c7e 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/createrun/TavernaServerCreateRunPresenter.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/createrun/TavernaServerCreateRunPresenter.java
@@ -18,6 +18,7 @@
*/
package org.apache.taverna.mobile.ui.tavernaserver.createrun;
+import android.net.Uri;
import android.util.Base64;
import android.util.Log;
@@ -129,61 +130,11 @@ public class TavernaServerCreateRunPresenter extends BasePresenter<TavernaServer
@Override
public void onNext(Response response) {
- getMvpView().runLocation(response.headers().get("Location"));
+ Uri uri = Uri.parse(response.headers().get("Location"));
+ String uuid = uri.getLastPathSegment();
+ getMvpView().runLocation(uuid);
}
});
-// .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)
-// .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());
-// }
-// });
}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/de38c55c/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/inputs/TavernaServerInputsFragment.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/inputs/TavernaServerInputsFragment.java b/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/inputs/TavernaServerInputsFragment.java
index cba2a90..8fa2b16 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/inputs/TavernaServerInputsFragment.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/inputs/TavernaServerInputsFragment.java
@@ -4,11 +4,24 @@ import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
+import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.TextView;
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.data.model.Input;
+import org.apache.taverna.mobile.data.model.Inputs;
+import org.apache.taverna.mobile.ui.workflowrun.WorkflowRunActivity;
+import org.apache.taverna.mobile.utils.Constants;
+
+import java.util.List;
+
+import butterknife.ButterKnife;
/**
* A simple {@link Fragment} subclass.
@@ -18,7 +31,7 @@ import org.apache.taverna.mobile.R;
* Use the {@link TavernaServerInputsFragment#newInstance} factory method to
* create an instance of this fragment.
*/
-public class TavernaServerInputsFragment extends Fragment {
+public class TavernaServerInputsFragment extends ListFragment implements TavernaServerInputsMvpView, View.OnFocusChangeListener {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
@@ -28,6 +41,11 @@ public class TavernaServerInputsFragment extends Fragment {
private String mParam1;
private String mParam2;
+
+ private DataManager dataManager;
+
+ private TavernaServerInputsPresenter tavernaServerInputsPresenter;
+
private OnFragmentInteractionListener mListener;
public TavernaServerInputsFragment() {
@@ -55,20 +73,21 @@ public class TavernaServerInputsFragment extends Fragment {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
+ dataManager = new DataManager(new PreferencesHelper(getContext()));
+ tavernaServerInputsPresenter = new TavernaServerInputsPresenter(dataManager);
+ ArrayAdapter<Input> adapter = new ArrayAdapter<>(getActivity(),
+ R.layout.input_port, new Input[]{});
+ setListAdapter(adapter);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
- return inflater.inflate(R.layout.fragment_taverna_server_inputs, container, false);
- }
-
- // TODO: Rename method, update argument and hook method into UI event
- public void onButtonPressed(Uri uri) {
- if (mListener != null) {
- mListener.onFragmentInteraction(uri);
- }
+ View rootView = inflater.inflate(R.layout.fragment_taverna_server_inputs, container, false);
+ ButterKnife.bind(this, rootView);
+ tavernaServerInputsPresenter.attachView(this);
+ return rootView;
}
@Override
@@ -88,6 +107,39 @@ public class TavernaServerInputsFragment extends Fragment {
mListener = null;
}
+ @Override
+ public void onFocusChange(View v, boolean hasFocus) {
+
+ }
+
+ @Override
+ public void showError(int stringID) {
+
+ }
+
+ @Override
+ public void showCredentialError() {
+
+ }
+
+ @Override
+ public void setInputs(Inputs inputs) {
+ // Add inputs to the view
+ //LayoutInflater vi = (LayoutInflater) getActivity().getLayoutInflater().getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ //View v = vi.inflate(R.layout.input_port, null);
+ //for (Input input: inputs.getInputs()) {
+ // input.getDepth();
+ // TextView portNameView = (TextView) v.findViewById(R.id.port_name);
+ // portNameView.setText(input.getName());
+ // ViewGroup insertPoint = (ViewGroup) getView().findViewById(R.id.inputs_area);
+ // insertPoint.addView(v, 0, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
+ //}
+ }
+
+ public void fetchInputs(String username, String password, String runLocation) {
+ tavernaServerInputsPresenter.workflowInputs(username, password, runLocation);
+ }
+
/**
* This interface must be implemented by activities that contain this
* fragment to allow an interaction in this fragment to be communicated
@@ -100,6 +152,7 @@ public class TavernaServerInputsFragment extends Fragment {
*/
public interface OnFragmentInteractionListener {
// TODO: Update argument type and name
- void onFragmentInteraction(Uri uri);
+ void onFragmentInteraction(Inputs inputs);
}
+
}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/de38c55c/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/inputs/TavernaServerInputsMvpView.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/inputs/TavernaServerInputsMvpView.java b/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/inputs/TavernaServerInputsMvpView.java
index 0a9074c..f865f62 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/inputs/TavernaServerInputsMvpView.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/inputs/TavernaServerInputsMvpView.java
@@ -1,10 +1,20 @@
package org.apache.taverna.mobile.ui.tavernaserver.inputs;
+import org.apache.taverna.mobile.data.model.Inputs;
import org.apache.taverna.mobile.ui.base.MvpView;
+import java.util.List;
+
/**
* Created by ian on 16/12/16.
*/
public interface TavernaServerInputsMvpView extends MvpView {
+
+
+ void showError(int stringID);
+
+ void showCredentialError();
+
+ void setInputs(Inputs inputs);
}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/de38c55c/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/inputs/TavernaServerInputsPresenter.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/inputs/TavernaServerInputsPresenter.java b/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/inputs/TavernaServerInputsPresenter.java
index 626b376..4dfe253 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/inputs/TavernaServerInputsPresenter.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/tavernaserver/inputs/TavernaServerInputsPresenter.java
@@ -1,10 +1,88 @@
package org.apache.taverna.mobile.ui.tavernaserver.inputs;
+import android.net.Uri;
+import android.util.Base64;
+import android.util.Log;
+
+import org.apache.taverna.mobile.data.DataManager;
+import org.apache.taverna.mobile.data.model.Inputs;
import org.apache.taverna.mobile.ui.base.BasePresenter;
+import org.apache.taverna.mobile.ui.tavernaserver.createrun.TavernaServerCreateRunMvpView;
+import org.apache.taverna.mobile.ui.tavernaserver.createrun.TavernaServerCreateRunPresenter;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import okhttp3.MediaType;
+import okhttp3.RequestBody;
+import okhttp3.ResponseBody;
+import retrofit2.Response;
+import rx.Observable;
+import rx.Observer;
+import rx.Subscription;
+import rx.android.schedulers.AndroidSchedulers;
+import rx.functions.Func1;
+import rx.schedulers.Schedulers;
/**
* Created by ian on 16/12/16.
*/
public class TavernaServerInputsPresenter extends BasePresenter<TavernaServerInputsMvpView> {
+
+ private static final String TAG = TavernaServerInputsPresenter.class.getSimpleName();
+
+ private DataManager mDataManager;
+
+ private Subscription mSubscriptions;
+
+ public TavernaServerInputsPresenter(DataManager dataManager) {
+ mDataManager = dataManager;
+ }
+
+ @Override
+ public void attachView(TavernaServerInputsMvpView mvpView) {
+ super.attachView(mvpView);
+ }
+
+ @Override
+ public void detachView() {
+ super.detachView();
+ if (mSubscriptions != null) mSubscriptions.unsubscribe();
+ }
+
+ public void workflowInputs(final String username, final String password, final String runLocation) {
+
+ String basicAuth = getEncodedCredential(username, password);
+
+ mDataManager.getWorkflowInputs(basicAuth.trim(), runLocation)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribeOn(Schedulers.io())
+ .subscribe(new Observer<Inputs>() {
+
+ @Override
+ public void onCompleted() {
+ System.out.println("Complete");
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ System.out.println(e);
+ }
+
+ @Override
+ public void onNext(Inputs inputs) {
+ getMvpView().setInputs(inputs);
+ }
+
+ });
+
+ }
+
+ private String getEncodedCredential(String username, String password) {
+
+ return "Basic " + Base64.encodeToString((username + ":" + password).getBytes(), Base64
+ .NO_WRAP);
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/de38c55c/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 f8b4972..a6d4303 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
@@ -27,6 +27,7 @@ import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.PagerAdapter;
+import android.view.ViewGroup;
import android.widget.Toast;
import com.anton46.stepsview.StepsView;
@@ -34,6 +35,7 @@ import com.anton46.stepsview.StepsView;
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.data.model.Inputs;
import org.apache.taverna.mobile.ui.DownloadingFragment;
import org.apache.taverna.mobile.ui.tavernaserver.createrun.TavernaServerCreateRunFragment;
import org.apache.taverna.mobile.ui.tavernaserver.inputs.TavernaServerInputsFragment;
@@ -41,11 +43,12 @@ 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 java.lang.ref.WeakReference;
import butterknife.BindView;
import butterknife.ButterKnife;
+import static android.R.attr.fragment;
import static com.raizlabs.android.dbflow.config.FlowManager.getContext;
public class WorkflowRunActivity extends FragmentActivity implements WorkflowRunMvpView,
@@ -70,6 +73,14 @@ public class WorkflowRunActivity extends FragmentActivity implements WorkflowRun
private PagerAdapter mPagerAdapter;
+ private TavernaServerInputsFragment tavernaServerInputsFragment;
+
+ private WeakReference<Fragment> createRunsFragment;
+ private WeakReference<Fragment> inputsFragment;
+ private WeakReference<Fragment> downloadingFragment;
+ private WeakReference<Fragment> webviewFragment;
+
+
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -99,12 +110,12 @@ public class WorkflowRunActivity extends FragmentActivity implements WorkflowRun
mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
mPager.setAdapter(mPagerAdapter);
- if (dataManager.getPreferencesHelper().isUserPlayerLoggedInFlag()) {
- mPager.setCurrentItem(++position);
- mStepsView.setCompletedPosition(position % labels.length).drawView();
-
- mWorkflowRunPresenter.runWorkflow(getIntent().getStringExtra(Constants.WORKFLOW_URL));
- }
+// if (dataManager.getPreferencesHelper().isUserPlayerLoggedInFlag()) {
+// mPager.setCurrentItem(++position);
+// mStepsView.setCompletedPosition(position % labels.length).drawView();
+//
+// mWorkflowRunPresenter.runWorkflow(getIntent().getStringExtra(Constants.WORKFLOW_URL));
+// }
}
@@ -123,7 +134,11 @@ public class WorkflowRunActivity extends FragmentActivity implements WorkflowRun
position = 1;
mPager.setCurrentItem(position);
mStepsView.setCompletedPosition(position % labels.length).drawView();
- mWorkflowRunPresenter.showWorkflowInputs(runLocation);
+ getIntent().putExtra(runLocation, Constants.RUN_LOCATION);
+ String password = getIntent().getStringExtra(Constants.SERVER_PASS);
+ String username = getIntent().getStringExtra(Constants.SERVER_USER);
+ ((TavernaServerInputsFragment)inputsFragment.get()).fetchInputs(username, password, runLocation);
+
//mWorkflowRunPresenter.runWorkflow(getIntent().getStringExtra(Constants.WORKFLOW_URL));
//mWorkflowRunPresenter.runWorkflow(runID);
}
@@ -140,11 +155,10 @@ public class WorkflowRunActivity extends FragmentActivity implements WorkflowRun
position = 3;
mStepsView.setCompletedPosition(position % labels.length).drawView();
mPager.setCurrentItem(position);
-
}
@Override
- public void setInputs(List<String> inputs) {
+ public void setInputs(Inputs inputs) {
//Update the view or something?
}
@@ -168,8 +182,9 @@ public class WorkflowRunActivity extends FragmentActivity implements WorkflowRun
}
@Override
- public void onFragmentInteraction(Uri uri) {
+ public void onFragmentInteraction(Inputs inputs) {
//TODO something when the inputs are set
+ System.out.println("Inputs returned to run activity");
}
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
@@ -194,10 +209,38 @@ public class WorkflowRunActivity extends FragmentActivity implements WorkflowRun
}
@Override
+ public Object instantiateItem(ViewGroup container, int position) {
+ // It's fairly easy to communicate from fragment to activity but
+ // the other way is tricky. This is the 'best' way I found to do
+ // it. See http://stackoverflow.com/questions/14035090/how-to-get-existing-fragments-when-using-fragmentpageradapter
+ // Really Android, you should be able to do this in a simpler way
+ Fragment createdFragment = (Fragment) super.instantiateItem(container, position);
+ // save the appropriate reference depending on position
+ switch (position) {
+ case 0:
+ createRunsFragment = new WeakReference<Fragment>(createdFragment);
+ break;
+ case 1:
+ inputsFragment = new WeakReference<Fragment>(createdFragment);
+ break;
+ case 2:
+ downloadingFragment = new WeakReference<Fragment>(createdFragment);
+ break;
+ case 3:
+ webviewFragment = new WeakReference<Fragment>(createdFragment);
+ }
+ return createdFragment;
+ }
+
+ @Override
public int getCount() {
return 4;
}
}
+ public interface RunIDListener {
+ void onRunLocation();
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/de38c55c/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 dbaa282..a3bb555 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
@@ -19,6 +19,7 @@
package org.apache.taverna.mobile.ui.workflowrun;
+import org.apache.taverna.mobile.data.model.Inputs;
import org.apache.taverna.mobile.ui.base.MvpView;
import java.util.List;
@@ -33,5 +34,5 @@ public interface WorkflowRunMvpView extends MvpView {
void moveToInputs();
- void setInputs(List<String> inputs);
+ void setInputs(Inputs inputs);
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/de38c55c/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 4e7d191..9b26433 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
@@ -23,6 +23,7 @@ import android.util.Base64;
import android.util.Log;
import org.apache.taverna.mobile.data.DataManager;
+import org.apache.taverna.mobile.data.model.Inputs;
import org.apache.taverna.mobile.data.model.PlayerWorkflow;
import org.apache.taverna.mobile.data.model.PlayerWorkflowDetail;
import org.apache.taverna.mobile.ui.base.BasePresenter;
@@ -140,31 +141,4 @@ public class WorkflowRunPresenter extends BasePresenter<WorkflowRunMvpView> {
});
}
- public void showWorkflowInputs(String runLocation) {
- if (mSubscriptions != null) mSubscriptions.unsubscribe();
- String basicAuth = mDataManager.getPreferencesHelper()
- .getUserPlayerCredential();
- //TODO trim the runLocation to get the UUID for the run
- mSubscriptions = mDataManager.getWorkflowInputs(basicAuth.trim(), runLocation)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribeOn(Schedulers.io())
- .subscribe(new Observer<Response<ResponseBody>>() {
- @Override
- public void onCompleted() {
- getMvpView().setInputs(inputs);
- }
-
- @Override
- public void onError(Throwable e) {
-
- getMvpView().showError();
- }
-
- @Override
- public void onNext(Response inputsResponse) {
- //Set the inputs
- }
- });
- }
-
- }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/de38c55c/app/src/main/java/org/apache/taverna/mobile/utils/Constants.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/utils/Constants.java b/app/src/main/java/org/apache/taverna/mobile/utils/Constants.java
index b4a0832..7beaf6a 100644
--- a/app/src/main/java/org/apache/taverna/mobile/utils/Constants.java
+++ b/app/src/main/java/org/apache/taverna/mobile/utils/Constants.java
@@ -30,4 +30,11 @@ public class Constants {
public static final String WORKFLOW_ID = "workflow_id";
public static final String WORKFLOW_TITLE = "workflow_title";
+
+ public static final String SERVER_PASS = "server_pass";
+
+ public static final String SERVER_USER = "server_user";
+
+ public static final String RUN_LOCATION = "run_location";
+
}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/de38c55c/app/src/main/res/layout/fragment_taverna_server_inputs.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/layout/fragment_taverna_server_inputs.xml b/app/src/main/res/layout/fragment_taverna_server_inputs.xml
index 4781819..d5369c0 100644
--- a/app/src/main/res/layout/fragment_taverna_server_inputs.xml
+++ b/app/src/main/res/layout/fragment_taverna_server_inputs.xml
@@ -1,15 +1,24 @@
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context="org.apache.taverna.mobile.ui.tavernaserver.inputs.TavernaServerInputsFragment">
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 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
- <!-- <TextView
- android:id="@+id/taverna_server_inputs_header"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:textSize="24sp"
- android:text="@string/header_taverna_server_inputs"/>
+ 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.
-->
-</FrameLayout>
+
+<ListView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:id="@+id/inputs_area"/>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/de38c55c/app/src/main/res/layout/input_port.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/layout/input_port.xml b/app/src/main/res/layout/input_port.xml
new file mode 100644
index 0000000..191b672
--- /dev/null
+++ b/app/src/main/res/layout/input_port.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical" android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <TextView
+ android:text="TextView"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:id="@+id/port_name" />
+
+ <TextView
+ android:text="TextView"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:id="@+id/port_value" />
+</LinearLayout>
\ No newline at end of file