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