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 2015/07/13 14:54:39 UTC
[21/34] incubator-taverna-mobile git commit: implemented workflow run
Results. Results now show up in a new screen
implemented workflow run Results. Results now show up in a new screen
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/5699f7c7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/5699f7c7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/5699f7c7
Branch: refs/heads/master
Commit: 5699f7c7e6161132fe7347ed04970d8260b17051
Parents: 45b4e37
Author: larrytech7 <la...@gmail.com>
Authored: Fri Jul 10 01:35:11 2015 +0100
Committer: larrytech7 <la...@gmail.com>
Committed: Fri Jul 10 01:35:11 2015 +0100
----------------------------------------------------------------------
.../fragments/workflowdetails/RunFragment.java | 98 +++++++++++++++++++-
1 file changed, 96 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/5699f7c7/app/src/main/java/org/apache/taverna/mobile/fragments/workflowdetails/RunFragment.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/fragments/workflowdetails/RunFragment.java b/app/src/main/java/org/apache/taverna/mobile/fragments/workflowdetails/RunFragment.java
index 3622944..3dbde9e 100644
--- a/app/src/main/java/org/apache/taverna/mobile/fragments/workflowdetails/RunFragment.java
+++ b/app/src/main/java/org/apache/taverna/mobile/fragments/workflowdetails/RunFragment.java
@@ -1,9 +1,12 @@
package org.apache.taverna.mobile.fragments.workflowdetails;
+import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.text.method.ScrollingMovementMethod;
+import android.util.Base64;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
@@ -15,10 +18,21 @@ import android.widget.ImageButton;
import android.widget.TextView;
import org.apache.taverna.mobile.R;
+import org.apache.taverna.mobile.tavernamobile.TavernaPlayerAPI;
import org.json.JSONException;
import org.json.JSONObject;
import org.w3c.dom.Text;
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.Timer;
+import java.util.TimerTask;
+
/**
* A simple {@link Fragment} subclass.
* Use the {@link RunFragment#newInstance} factory method to
@@ -32,6 +46,7 @@ public class RunFragment extends Fragment implements View.OnClickListener{
private ImageButton status;
private TextView runStateTextView, runStartTime,runEndTime, runInputsText;
private Button downloadOutput,downloadLogs;
+ private int run_id;
/**
* Use this factory method to create a new instance of
@@ -87,7 +102,8 @@ public class RunFragment extends Fragment implements View.OnClickListener{
try{
JSONObject resultObject = new JSONObject(runresult);
String runName = resultObject.getString("name");
- String runId = ""+resultObject.get("id");
+ run_id = (int) resultObject.get("id");
+ String runId = ""+run_id;
String runState = resultObject.getString("state");
String runStarted = resultObject.getString("start_time");
String runEnded = resultObject.getString("finish_time");
@@ -128,7 +144,7 @@ public class RunFragment extends Fragment implements View.OnClickListener{
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_refresh) {
- //TODO start task to retrieve current status of workflow and further details
+ reloadRunResult();
return true;
}
@@ -137,10 +153,88 @@ public class RunFragment extends Fragment implements View.OnClickListener{
private void reloadRunResult(){
//TODO reload the run results when refreshed
+ Timer t = new Timer();
+ t.scheduleAtFixedRate(new RunTimerTask(getActivity(), run_id), 0, 5000);
}
@Override
public void onClick(View view) {
}
+
+ public void updateRun(final JSONObject runInfo){
+
+ getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ runStartTime.setHint(runInfo.getString("start_time"));
+ runEndTime.setHint(runInfo.getString("finish_time"));
+
+ if(runInfo.getString("state").contains("Pending"))
+ status.setImageResource(android.R.drawable.presence_busy);
+ else if (runInfo.getString("state").contains("Running"))
+ status.setImageResource(android.R.drawable.presence_away);
+ else if (runInfo.getString("state").contains("Finished"))
+ status.setImageResource(android.R.drawable.presence_online);
+ else if (runInfo.getString("state").contains("Failed"))
+ status.setImageResource(android.R.drawable.presence_offline);
+ else
+ status.setImageResource(android.R.drawable.presence_invisible);
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+ });
+ }
+
+ private class RunTimerTask extends TimerTask {
+
+ private Context context;
+ private int runid;
+
+ public RunTimerTask(Context context, int runID) {
+ this.context = context;
+ this.runid = runID;
+ }
+
+ @Override
+ public void run() {
+ //QUERY player for the continuous status of the workflow run and update the ui with the results
+ StringBuffer sb = new StringBuffer();
+ try {
+
+ URL workflowurl = new URL(new TavernaPlayerAPI(this.context).PLAYER_RUN_URL+this.runid);
+ HttpURLConnection connection = (HttpURLConnection) workflowurl.openConnection();
+ String userpass = "icep603@gmail.com" + ":" + "creationfox";
+ String basicAuth = "Basic " + Base64.encodeToString(userpass.getBytes(), Base64.DEFAULT);
+
+ // connection.setRequestProperty("Authorization", basicAuth);
+ connection.setRequestProperty("Accept", "application/json");
+ // connection.setRequestProperty("Content-Type", "application/json");
+ connection.setRequestMethod("GET");
+ connection.connect(); //send request
+
+ InputStream dis = connection.getInputStream();
+ BufferedReader br = new BufferedReader(new InputStreamReader(dis));
+
+ String jsonData = "";
+ while ((jsonData = br.readLine()) != null) {
+ //json results of the full workflow details
+ sb.append(jsonData);
+ }
+ dis.close();
+ br.close();
+ connection.disconnect();
+
+ JSONObject runInfo = new JSONObject(sb.toString());
+ updateRun(runInfo);
+
+ }catch (IOException ex){
+ ex.printStackTrace();
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+ }
}