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/06/29 12:08:12 UTC
[02/46] incubator-taverna-mobile git commit: load particular details
from main workflow on home screen
load particular details from main workflow on home 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/fcb08e4d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/fcb08e4d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/fcb08e4d
Branch: refs/heads/master
Commit: fcb08e4dfd6f2b24fa0c22d62afece9d45a50827
Parents: 48731e6
Author: larrytech7 <la...@gmail.com>
Authored: Thu Jun 25 13:27:51 2015 +0100
Committer: larrytech7 <la...@gmail.com>
Committed: Thu Jun 25 13:27:51 2015 +0100
----------------------------------------------------------------------
.../WorkflowdetailFragmentTest.java | 26 ++
.../taverna/mobile/adapters/RunAdapter.java | 3 +-
.../mobile/adapters/WorkflowAdapter.java | 4 +-
.../taverna/mobile/tavernamobile/User.java | 9 +
.../taverna/mobile/tavernamobile/Workflow.java | 18 ++
.../taverna/mobile/utils/DetailsLoader.java | 96 ++++++--
.../taverna/mobile/utils/WorkflowLoader.java | 3 +-
.../utils/xmlparsers/MyExperimentXmlParser.java | 237 ++++++++++++++++---
.../utils/xmlparsers/WorkflowDetailParser.java | 47 +++-
.../mobile/utils/xmlparsers/WorkflowParser.java | 9 +-
app/src/main/res/layout/fragment_item_grid.xml | 3 +
app/src/main/res/layout/fragment_item_list.xml | 3 +
.../main/res/layout/fragment_workflow_about.xml | 3 +-
.../res/layout/fragment_workflow_detail.xml | 6 +-
.../res/layout/fragment_workflow_licence.xml | 3 +-
15 files changed, 396 insertions(+), 74 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/fcb08e4d/app/src/androidTest/java/org/apache/taverna/mobile/fragments/workflowdetails/WorkflowdetailFragmentTest.java
----------------------------------------------------------------------
diff --git a/app/src/androidTest/java/org/apache/taverna/mobile/fragments/workflowdetails/WorkflowdetailFragmentTest.java b/app/src/androidTest/java/org/apache/taverna/mobile/fragments/workflowdetails/WorkflowdetailFragmentTest.java
new file mode 100644
index 0000000..634d105
--- /dev/null
+++ b/app/src/androidTest/java/org/apache/taverna/mobile/fragments/workflowdetails/WorkflowdetailFragmentTest.java
@@ -0,0 +1,26 @@
+package org.apache.taverna.mobile.fragments.workflowdetails;
+
+import junit.framework.TestCase;
+
+public class WorkflowdetailFragmentTest extends TestCase {
+
+ public void testOnResume() throws Exception {
+
+ }
+
+ public void testOnCreateLoader() throws Exception {
+
+ }
+
+ public void testOnLoadFinished() throws Exception {
+
+ }
+
+ public void testOnLoaderReset() throws Exception {
+
+ }
+
+ public void testSetWorkflowDetails() throws Exception {
+
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/fcb08e4d/app/src/main/java/org/apache/taverna/mobile/adapters/RunAdapter.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/adapters/RunAdapter.java b/app/src/main/java/org/apache/taverna/mobile/adapters/RunAdapter.java
index 6302c12..74152df 100644
--- a/app/src/main/java/org/apache/taverna/mobile/adapters/RunAdapter.java
+++ b/app/src/main/java/org/apache/taverna/mobile/adapters/RunAdapter.java
@@ -130,7 +130,8 @@ public class RunAdapter extends RecyclerView.Adapter<RunAdapter.RunHolder> {
*/
@Override
public int getItemCount() {
- return runList.size();
+ return 0;
+/// return runList.size();
}
public static class RunHolder extends RecyclerView.ViewHolder {
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/fcb08e4d/app/src/main/java/org/apache/taverna/mobile/adapters/WorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/adapters/WorkflowAdapter.java b/app/src/main/java/org/apache/taverna/mobile/adapters/WorkflowAdapter.java
index ce4e4c9..c2c55eb 100644
--- a/app/src/main/java/org/apache/taverna/mobile/adapters/WorkflowAdapter.java
+++ b/app/src/main/java/org/apache/taverna/mobile/adapters/WorkflowAdapter.java
@@ -101,6 +101,7 @@ public class WorkflowAdapter extends RecyclerView.Adapter<WorkflowAdapter.ViewHo
final String author = workflow.get(i).getWorkflow_author();
final String title = workflow.get(i).getWorkflow_title();
String description = workflow.get(i).getWorkflow_description();
+ String uri = workflow.get(i).getWorkflow_details_url();
final String desc_full = description;
ArrayList<Object> mfav = new ArrayList<Object>();
@@ -115,7 +116,8 @@ public class WorkflowAdapter extends RecyclerView.Adapter<WorkflowAdapter.ViewHo
final String wkflow_url = workflow.get(j).getWorkflow_remote_url();
final Intent it = new Intent();
it.setClass(context, WorkflowDetailActivity.class);
- it.putExtra("workflowid", workflow.get(i).getId());
+// it.putExtra("workflowid", workflow.get(i).getId());
+ it.putExtra("uri",uri);
WorkflowdetailFragment.WORKFLO_ID = workflow.get(i).getId();
viewHolder.btn_view_workflow.setOnClickListener(new View.OnClickListener() {
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/fcb08e4d/app/src/main/java/org/apache/taverna/mobile/tavernamobile/User.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/tavernamobile/User.java b/app/src/main/java/org/apache/taverna/mobile/tavernamobile/User.java
index fa61075..e352913 100644
--- a/app/src/main/java/org/apache/taverna/mobile/tavernamobile/User.java
+++ b/app/src/main/java/org/apache/taverna/mobile/tavernamobile/User.java
@@ -56,6 +56,7 @@ public class User {
protected String country;
@Element(required = false)
protected String website;
+ protected String details_uri;
protected List<Workflow> user_workflows; //a list of workflows owned by this user
@@ -71,6 +72,14 @@ public class User {
this.created_at = created_at;
}
+ public String getDetails_uri() {
+ return this.details_uri;
+ }
+
+ public void setDetails_uri(String details_uri) {
+ this.details_uri = details_uri;
+ }
+
public String getName() {
return name;
}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/fcb08e4d/app/src/main/java/org/apache/taverna/mobile/tavernamobile/Workflow.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/tavernamobile/Workflow.java b/app/src/main/java/org/apache/taverna/mobile/tavernamobile/Workflow.java
index 6beada5..7868450 100644
--- a/app/src/main/java/org/apache/taverna/mobile/tavernamobile/Workflow.java
+++ b/app/src/main/java/org/apache/taverna/mobile/tavernamobile/Workflow.java
@@ -38,6 +38,7 @@ import java.util.List;
*/
public class Workflow {
private Context context;
+ private User uploader;
private String workflow_author;
private String workflow_title;
private String workflow_description, about, policy;
@@ -46,6 +47,7 @@ public class Workflow {
private WorkflowComponent workflowComponent;
private String workflow_remote_url; //provides a link to download the workflow. Equivalent to content-uri in the xml form
private String workflow_web_url; //a string containing the workflow resource that can be loaded in browser
+ private String workflow_details_url;//used to refer to the details of the workflow
private List<Runs> workflow_runs;
private int workflow_input;
private long id;
@@ -110,6 +112,22 @@ public class Workflow {
this.workflow_remote_url = workflow_remote_url;
}
+ public String getWorkflow_details_url() {
+ return this.workflow_details_url;
+ }
+
+ public User getUploader() {
+ return this.uploader;
+ }
+
+ public void setUploader(User uploader) {
+ this.uploader = uploader;
+ }
+
+ public void setWorkflow_details_url(String workflow_details_url) {
+ this.workflow_details_url = workflow_details_url;
+ }
+
public String getPolicy() {
return this.policy;
}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/fcb08e4d/app/src/main/java/org/apache/taverna/mobile/utils/DetailsLoader.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/utils/DetailsLoader.java b/app/src/main/java/org/apache/taverna/mobile/utils/DetailsLoader.java
index f0998fc..a73d10d 100644
--- a/app/src/main/java/org/apache/taverna/mobile/utils/DetailsLoader.java
+++ b/app/src/main/java/org/apache/taverna/mobile/utils/DetailsLoader.java
@@ -29,9 +29,13 @@ import android.content.Context;
import android.util.Base64;
import android.util.Log;
+import com.thebuzzmedia.sjxp.rule.IRule;
+
import org.apache.taverna.mobile.tavernamobile.Runs;
import org.apache.taverna.mobile.tavernamobile.TavernaPlayerAPI;
import org.apache.taverna.mobile.tavernamobile.Workflow;
+import org.apache.taverna.mobile.utils.xmlparsers.MyExperimentXmlParser;
+import org.apache.taverna.mobile.utils.xmlparsers.WorkflowDetailParser;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@@ -48,34 +52,38 @@ import java.net.URL;
import static org.apache.taverna.mobile.utils.DetailsLoader.LOAD_TYPE.*;
/**
- * Created by root on 6/14/15.
+ * Loads workflow details from the myexperiment API and presents them on the UI .The class is generic and can be used to load the
+ * different details sections of the app.
+ * Created by Larry Akah on 6/14/15.
*/
public class DetailsLoader extends AsyncTaskLoader<Workflow> {
public static enum LOAD_TYPE {TYPE_WORKFLOW_DETAIL, TYPE_RUN_HISTORY, TYPE_POLICY, TYPE_ABOUT_WORKFLOW};
private LOAD_TYPE lt;
- private long wid;
+ private String uri;
private Workflow workflow;
private Context context;
- public DetailsLoader(Context context, LOAD_TYPE load_type, long id) {
+ public DetailsLoader(Context context, LOAD_TYPE load_type, String detailsRUI) {
super(context);
this.context = context;
this.lt = load_type;
- this.wid = id;
+ this.uri = detailsRUI;
+ workflow = new Workflow();
}
@Override
public Workflow loadInBackground() {
//start a network request to fetch user's workflow details
try {
+ Log.i("LOADER STARTED", "loading data");
//for password protected urls use the user's credentials
Authenticator.setDefault(new TavernaPlayerAPI.Authenticator("taverna", "taverna"));
URL workflowurl;
switch (this.lt){
case TYPE_WORKFLOW_DETAIL:
- workflowurl = new URL(new TavernaPlayerAPI(this.context).PLAYER_WORKFLOW_URL+this.wid);
+ workflowurl = new URL(this.uri);
break;
case TYPE_RUN_HISTORY:
workflowurl = new URL(new TavernaPlayerAPI(this.context).PLAYER_RUN_URL);
@@ -94,8 +102,8 @@ public class DetailsLoader extends AsyncTaskLoader<Workflow> {
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 ("Authorization", basicAuth);
+ // connection.setRequestProperty("Accept", "application/json");
connection.setRequestMethod("GET");
// connection.setDoInput(true);
// connection.setDoOutput(true);
@@ -111,23 +119,33 @@ public class DetailsLoader extends AsyncTaskLoader<Workflow> {
while((jsonData = br.readLine()) != null){
sb.append(jsonData);
}
- dis.close();
- br.close();
+
switch(this.lt) {
case TYPE_WORKFLOW_DETAIL: {
- JSONObject js = new JSONObject(sb.toString());
- Log.i("JSON ", js.toString(2));
- String created_at = js.getString("created_at");
- String updated_at = js.getString("updated_at");
- JSONObject user = js.getJSONObject("user");
- workflow = new Workflow(this.context, js.getString("title"),
- user.getString("name"),
- js.getString("description"),
- js.getInt("id"),
- js.getString("url"));
- workflow.setWorkflow_datecreated(created_at);
- workflow.setWorkflow_datemodified(updated_at);
+ //make rules and apply the parser
+ IRule workfl = new MyExperimentXmlParser.WorkflowDetailRule(IRule.Type.ATTRIBUTE,
+ "/workflow", "uri","resource", "id","version");
+ IRule title = new MyExperimentXmlParser.TitleRule(IRule.Type.CHARACTER,"/workflow/title");
+ IRule description = new MyExperimentXmlParser.DescriptionRule(IRule.Type.CHARACTER, "/workflow/description");
+ IRule type = new MyExperimentXmlParser.TypeRule(IRule.Type.CHARACTER, "/workflow/type");
+ IRule attrType = new MyExperimentXmlParser.TypeRule(IRule.Type.ATTRIBUTE, "/workflow/type", "resource", "uri","id");
+ IRule uploader = new MyExperimentXmlParser.UploaderRule(IRule.Type.CHARACTER, "/workflow/uploader");
+ IRule attrUploader = new MyExperimentXmlParser.UploaderRule(IRule.Type.ATTRIBUTE, "/workflow/uploader", "resource", "uri","id");
+ IRule date = new MyExperimentXmlParser.DateRule(IRule.Type.CHARACTER, "/workflow/created-at");
+ IRule preview = new MyExperimentXmlParser.PreviewRule(IRule.Type.CHARACTER, "/workflow/preview");
+ IRule licetype = new MyExperimentXmlParser.LicenceTypeRule(IRule.Type.CHARACTER, "/workflow/licence-type");
+ IRule attrlicetype = new MyExperimentXmlParser.LicenceTypeRule(IRule.Type.ATTRIBUTE,"/workflow/licence-type", "resource", "uri","id");
+ IRule contenturi = new MyExperimentXmlParser.ContentUriRule(IRule.Type.CHARACTER, "/workflow/content-uri");
+ IRule contentType = new MyExperimentXmlParser.ContentTypeRule(IRule.Type.CHARACTER, "/workflow/content-type");
+ IRule tags = new MyExperimentXmlParser.TagsRule(IRule.Type.CHARACTER, "/workflow/tags/tag");
+ IRule attrTags = new MyExperimentXmlParser.TagsRule(IRule.Type.ATTRIBUTE, "/workflow/tags/tag", "resource", "uri","id");
+
+ WorkflowDetailParser parser = new WorkflowDetailParser(new IRule[]{workfl,title,description,type,
+ attrlicetype,attrType, uploader,attrUploader,date,preview,licetype,contenturi,contentType,tags,attrTags});
+ parser.parse(dis, workflow);
}
+ dis.close();
+ br.close();
return workflow;
case TYPE_RUN_HISTORY:{
workflow = new Workflow(this.context);
@@ -141,7 +159,7 @@ public class DetailsLoader extends AsyncTaskLoader<Workflow> {
String started = jsonObject.getString("start_time");
String ended = jsonObject.getString("finish_time");
String state = jsonObject.getString("state");
-
+/*
if(workflow_id == this.wid) {
Runs mrun = new Runs(name,started,ended,state);
mrun.setRun_id(id);
@@ -149,6 +167,7 @@ public class DetailsLoader extends AsyncTaskLoader<Workflow> {
workflow.addWorkflowRun(mrun);
}
+ */
}
}
@@ -162,8 +181,11 @@ public class DetailsLoader extends AsyncTaskLoader<Workflow> {
}
return workflow;
default:
+ dis.close();
+ br.close();
return workflow;
}
+
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
@@ -175,12 +197,24 @@ public class DetailsLoader extends AsyncTaskLoader<Workflow> {
}
@Override
+ public boolean isStarted() {
+ return super.isStarted();
+ }
+
+ @Override
protected void onStartLoading() {
- if(workflow != null){
+ /* if(workflow != null){
deliverResult(workflow);
}else{
forceLoad();
- }
+ }*/
+ forceLoad();
+ Log.i("Loading State","loading started");
+ }
+
+ @Override
+ protected void onStopLoading() {
+ Log.i("Loading State","loading stopped");
}
@Override
@@ -190,3 +224,17 @@ public class DetailsLoader extends AsyncTaskLoader<Workflow> {
}
}
}
+/**
+ * JSONObject js = new JSONObject(sb.toString());
+ Log.i("JSON ", js.toString(2));
+ String created_at = js.getString("created_at");
+ String updated_at = js.getString("updated_at");
+ JSONObject user = js.getJSONObject("user");
+ workflow = new Workflow(this.context, js.getString("title"),
+ user.getString("name"),
+ js.getString("description"),
+ js.getInt("id"),
+ js.getString("url"));
+ workflow.setWorkflow_datecreated(created_at);
+ workflow.setWorkflow_datemodified(updated_at);
+ **/
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/fcb08e4d/app/src/main/java/org/apache/taverna/mobile/utils/WorkflowLoader.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/utils/WorkflowLoader.java b/app/src/main/java/org/apache/taverna/mobile/utils/WorkflowLoader.java
index 3eb272f..e08de2a 100644
--- a/app/src/main/java/org/apache/taverna/mobile/utils/WorkflowLoader.java
+++ b/app/src/main/java/org/apache/taverna/mobile/utils/WorkflowLoader.java
@@ -26,7 +26,6 @@ package org.apache.taverna.mobile.utils;
import android.content.Context;
import android.os.AsyncTask;
import android.support.v4.widget.SwipeRefreshLayout;
-import android.support.v7.widget.RecyclerView;
import android.util.Log;
import com.thebuzzmedia.sjxp.rule.IRule;
@@ -184,6 +183,6 @@ public class WorkflowLoader extends AsyncTask<Object, Object, Object>{ //Workflo
@Override
protected void onPostExecute(Object o) {
refreshLayout.setRefreshing(false);
- System.out.println("Workflow Count: "+this.userWorkflows.size());
+// System.out.println("Workflow Count: "+this.userWorkflows.size());
}
}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/fcb08e4d/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/MyExperimentXmlParser.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/MyExperimentXmlParser.java b/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/MyExperimentXmlParser.java
index 69791d5..46250eb 100644
--- a/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/MyExperimentXmlParser.java
+++ b/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/MyExperimentXmlParser.java
@@ -24,11 +24,17 @@ package org.apache.taverna.mobile.utils.xmlparsers;
* under the License.
*/
+import android.annotation.TargetApi;
+import android.os.Build;
+import android.text.Html;
+
import com.thebuzzmedia.sjxp.XMLParser;
import com.thebuzzmedia.sjxp.rule.DefaultRule;
+import org.apache.taverna.mobile.tavernamobile.User;
import org.apache.taverna.mobile.tavernamobile.Workflow;
import org.apache.taverna.mobile.utils.WorkflowLoader;
+import org.simpleframework.xml.Default;
import java.util.ArrayList;
import java.util.List;
@@ -38,51 +44,217 @@ import java.util.List;
*/
public class MyExperimentXmlParser {
+ public static Workflow mWorkflow = new Workflow();
+
+ public MyExperimentXmlParser(){
+ }
+
+ public Workflow getWorkflowHere(){
+ return mWorkflow;
+ }
//parse a single workflow from myexperiment
- public static final class WorkflowItemRule extends DefaultRule{
-
- /**
- * Create a new rule with the given values.
- *
- * @param type The type of the rule.
- * @param locationPath The location path of the element to target in the XML.
- * @param attributeNames An optional list of attribute names to parse values for if the
- * type of this rule is {@link com.thebuzzmedia.sjxp.rule.IRule.Type#ATTRIBUTE}.
- * @throws IllegalArgumentException if <code>type</code> is <code>null</code>, if
- * <code>locationPath</code> is <code>null</code> or empty, if
- * <code>type</code> is {@link com.thebuzzmedia.sjxp.rule.IRule.Type#ATTRIBUTE} and
- * <code>attributeNames</code> is <code>null</code> or empty or
- * if <code>type</code> is {@link com.thebuzzmedia.sjxp.rule.IRule.Type#CHARACTER} and
- * <code>attributeNames</code> <strong>is not</strong>
- * <code>null</code> or empty.
- */
- public WorkflowItemRule(Type type, String locationPath, String... attributeNames) throws IllegalArgumentException {
- super(Type.CHARACTER, "http://www.myexperiment.org/workflows.xml", "workflow");
- }
-
- /**
- * Default no-op implementation. Please override with your own logic.
- *
- * @param parser
- * @param index
- * @param value
- * @param userObject
- * @see com.thebuzzmedia.sjxp.rule.IRule#handleParsedAttribute(com.thebuzzmedia.sjxp.XMLParser, int, String, Object)
- */
+ public static class WorkflowDetailRule extends DefaultRule{
+
+ public WorkflowDetailRule(Type type, String locationPath, String... attributeNames) throws IllegalArgumentException {
+ super(type, locationPath, attributeNames);
+ }
+
@Override
public void handleParsedAttribute(XMLParser parser, int index, String value, Object userObject) {
switch(index){
+ case 0: //uri
+ mWorkflow.setWorkflow_details_url(value);
+ ((Workflow)userObject).setWorkflow_details_url(value);
+ break;
+ case 1: //resource
+ mWorkflow.setWorkflow_web_url(value);
+ ((Workflow)userObject).setWorkflow_web_url(value);
+ break;
+ case 2: //id
+ mWorkflow.setId(Integer.parseInt(value));
+ ((Workflow)userObject).setId(Integer.parseInt(value));
+ break;
+ case 3://version
+ mWorkflow.setWorkflow_versions(value);
+ ((Workflow)userObject).setWorkflow_versions(value);
+ break;
+ }
+ }
+ }
+
+ public static class TitleRule extends DefaultRule{
+
+ public TitleRule(Type type, String locationPath, String... attributeNames) throws IllegalArgumentException {
+ super(type, locationPath, attributeNames);
+ }
+
+ @Override
+ public void handleParsedCharacters(XMLParser parser, String text, Object userObject) {
+ mWorkflow.setWorkflow_title(text);
+ ((Workflow)userObject).setWorkflow_title(text);
+ }
+ }
+
+ public static class DescriptionRule extends DefaultRule{
+
+ public DescriptionRule(Type type, String locationPath, String... attributeNames) throws IllegalArgumentException {
+ super(type, locationPath, attributeNames);
+ }
+
+ @Override
+ public void handleParsedCharacters(XMLParser parser, String text, Object userObject) {
+
+ mWorkflow.setWorkflow_description(String.valueOf(Html.fromHtml(text)));
+ ((Workflow)userObject).setWorkflow_description(String.valueOf(Html.fromHtml(text)));
+ }
+ }
+
+ public static class TypeRule extends DefaultRule{
+
+ public TypeRule(Type type, String locationPath, String... attributeNames) throws IllegalArgumentException {
+ super(type, locationPath, attributeNames);
+ }
+
+ @Override
+ public void handleParsedAttribute(XMLParser parser, int index, String value, Object userObject) {
+ switch (index){
case 0:
break;
case 1:
break;
case 2:
break;
- case 3:
- break;
}
}
+
+ @Override
+ public void handleParsedCharacters(XMLParser parser, String text, Object userObject) {
+ mWorkflow.setWorkflow_Type(text);
+ ((Workflow)userObject).setWorkflow_Type(text);
+ }
+ }
+
+ public static class UploaderRule extends DefaultRule{
+
+ User muser;
+ public UploaderRule(Type type, String locationPath, String... attributeNames) throws IllegalArgumentException {
+ super(type, locationPath, attributeNames);
+ muser = new User();
+ }
+
+ @Override
+ public void handleParsedAttribute(XMLParser parser, int index, String value, Object userObject) {
+ switch(index){
+ case 0:
+ muser.setWebsite(value);
+ break;
+ case 1:
+ muser.setDetails_uri(value);
+ break;
+ case 2:
+ muser.setId(value);
+ break;
+ }
+ }
+
+ @Override
+ public void handleParsedCharacters(XMLParser parser, String text, Object userObject) {
+ muser.setName(text);
+ mWorkflow.setUploader(muser);
+ ((Workflow)userObject).setUploader(muser);
+ }
+ }
+//rule for the date the workflow was created/uploaded
+ public static class DateRule extends DefaultRule{
+
+ public DateRule(Type type, String locationPath, String... attributeNames) throws IllegalArgumentException {
+ super(type, locationPath, attributeNames);
+ }
+
+ @Override
+ public void handleParsedCharacters(XMLParser parser, String text, Object userObject) {
+ mWorkflow.setWorkflow_datecreated(text);
+ ((Workflow)userObject).setWorkflow_datecreated(text);
+
+ }
+}
+
+ public static class PreviewRule extends DefaultRule{
+
+ public PreviewRule(Type type, String locationPath, String... attributeNames) throws IllegalArgumentException {
+ super(type, locationPath, attributeNames);
+ }
+
+ @Override
+ public void handleParsedCharacters(XMLParser parser, String text, Object userObject) {
+ mWorkflow.setWorkflow_preview(text);
+ ((Workflow)userObject).setWorkflow_preview(text);
+ }
+ }
+
+ public static class LicenceTypeRule extends DefaultRule{
+
+ public LicenceTypeRule(Type type, String locationPath, String... attributeNames) throws IllegalArgumentException {
+ super(type, locationPath, attributeNames);
+ }
+
+ @Override
+ public void handleParsedAttribute(XMLParser parser, int index, String value, Object userObject) {
+ super.handleParsedAttribute(parser, index, value, userObject);
+ }
+
+ @Override
+ public void handleParsedCharacters(XMLParser parser, String text, Object userObject) {
+ mWorkflow.setWorkflow_licence_type("Licence By "+text);
+ ((Workflow)userObject).setWorkflow_licence_type("Licence By "+text);
+ }
+ }
+//set download link for the workflow
+ public static class ContentUriRule extends DefaultRule{
+
+ public ContentUriRule(Type type, String locationPath, String... attributeNames) throws IllegalArgumentException {
+ super(type, locationPath, attributeNames);
+ }
+
+ @Override
+ public void handleParsedCharacters(XMLParser parser, String text, Object userObject) {
+ mWorkflow.setWorkflow_remote_url(text);
+ ((Workflow)userObject).setWorkflow_remote_url(text);
+ }
+ }
+
+ public static class ContentTypeRule extends DefaultRule{
+
+ public ContentTypeRule(Type type, String locationPath, String... attributeNames) throws IllegalArgumentException {
+ super(type, locationPath, attributeNames);
+ }
+
+ @Override
+ public void handleParsedCharacters(XMLParser parser, String text, Object userObject) {
+ mWorkflow.setWorkflow_content_type(text);
+ ((Workflow)userObject).setWorkflow_content_type(text);
+ }
+ }
+
+ public static class TagsRule extends DefaultRule{
+
+ public TagsRule(Type type, String locationPath, String... attributeNames) throws IllegalArgumentException {
+ super(type, locationPath, attributeNames);
+ }
+
+ @Override
+ public void handleParsedAttribute(XMLParser parser, int index, String value, Object userObject) {
+ super.handleParsedAttribute(parser, index, value, userObject);
+ System.out.println(value);
+ }
+
+ @Override
+ public void handleParsedCharacters(XMLParser parser, String text, Object userObject) {
+ mWorkflow.setWorkflow_tags(new ArrayList<String>(){});
+ ((Workflow)userObject).setWorkflow_tags(new ArrayList<String>(){});
+ System.out.println(text);
+ }
}
/**
@@ -132,6 +304,7 @@ public class MyExperimentXmlParser {
public void handleParsedCharacters(XMLParser parser, String text, Object workflowListObject) {
//add the workflow to the workflow list
this.workflow = new Workflow("", desc, id, url);
+ this.workflow.setWorkflow_details_url(uri);
this.workflow.setWorkflow_title(text);
this.workflow.setWorkflow_author("");
wlist.add(this.workflow);
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/fcb08e4d/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/WorkflowDetailParser.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/WorkflowDetailParser.java b/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/WorkflowDetailParser.java
index 08a482e..964c6af 100644
--- a/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/WorkflowDetailParser.java
+++ b/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/WorkflowDetailParser.java
@@ -1,7 +1,50 @@
package org.apache.taverna.mobile.utils.xmlparsers;
+import com.thebuzzmedia.sjxp.XMLParser;
+import com.thebuzzmedia.sjxp.XMLParserException;
+import com.thebuzzmedia.sjxp.rule.IRule;
+
+import org.apache.taverna.mobile.fragments.workflowdetails.WorkflowdetailFragment;
+import org.apache.taverna.mobile.tavernamobile.Workflow;
+
/**
- * Created by root on 6/24/15.
+ * Apache Taverna Mobile
+ * Copyright 2015 The Apache Software Foundation
+
+ * This product includes software developed at
+ * The Apache Software Foundation (http://www.apache.org/).
+
+ * 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.
*/
-public class WorkflowDetailParser {
+
+/**
+ * Parse details from the xml output of myexperiment API
+ * Created by Larry Akah on 6/24/15.
+ */
+public class WorkflowDetailParser extends XMLParser {
+
+ public WorkflowDetailParser(IRule[] rules) throws IllegalArgumentException, XMLParserException {
+ super(rules);
+ }
+
+ //deliver results when parsing has completed and all the information required has been retrieved
+ @Override
+ protected void doEndDocument(Object userObject) {
+ WorkflowdetailFragment.setWorkflowDetails((Workflow) userObject);
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/fcb08e4d/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/WorkflowParser.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/WorkflowParser.java b/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/WorkflowParser.java
index f349805..a50bc41 100644
--- a/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/WorkflowParser.java
+++ b/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/WorkflowParser.java
@@ -15,7 +15,7 @@ import java.util.List;
* Created by Larry Akah on 6/24/15.
*/
-public class WorkflowParser extends XMLParser implements WorkflowDataCallback {
+public class WorkflowParser extends XMLParser {
public WorkflowParser(IRule[] rules) throws IllegalArgumentException, XMLParserException {
super(rules);
@@ -25,11 +25,4 @@ public class WorkflowParser extends XMLParser implements WorkflowDataCallback {
protected void doEndDocument(Object userObject) {
WorkflowItemFragment.updateWorkflowUI((List<Workflow>) userObject);
}
-
- @Override
- public void onWorkflowDataReady(List<Workflow> data) {
- for(Workflow w:data){
- System.out.println(w.getId());
- }
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/fcb08e4d/app/src/main/res/layout/fragment_item_grid.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/layout/fragment_item_grid.xml b/app/src/main/res/layout/fragment_item_grid.xml
index 31600d2..ba85aa9 100644
--- a/app/src/main/res/layout/fragment_item_grid.xml
+++ b/app/src/main/res/layout/fragment_item_grid.xml
@@ -33,6 +33,9 @@ limitations under the License.
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/button_material_light"
+ android:scrollbars="vertical"
+ android:scrollbarStyle="insideOverlay"
+ android:fadeScrollbars="true"
></android.support.v7.widget.RecyclerView>
<!-- </GridView>-->
</android.support.v4.widget.SwipeRefreshLayout>
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/fcb08e4d/app/src/main/res/layout/fragment_item_list.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/layout/fragment_item_list.xml b/app/src/main/res/layout/fragment_item_list.xml
index 19aa79e..92e0ff1 100644
--- a/app/src/main/res/layout/fragment_item_list.xml
+++ b/app/src/main/res/layout/fragment_item_list.xml
@@ -38,6 +38,9 @@ limitations under the License.
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/button_material_light"
+ android:scrollbars="vertical"
+ android:scrollbarStyle="insideOverlay"
+ android:fadeScrollbars="true"
>
</android.support.v7.widget.RecyclerView>
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/fcb08e4d/app/src/main/res/layout/fragment_workflow_about.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/layout/fragment_workflow_about.xml b/app/src/main/res/layout/fragment_workflow_about.xml
index 865241f..fb78aed 100644
--- a/app/src/main/res/layout/fragment_workflow_about.xml
+++ b/app/src/main/res/layout/fragment_workflow_about.xml
@@ -20,7 +20,8 @@ limitations under the License.
<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.fragments.workflowdetails.WorkflowAboutFragment">
+ tools:context="org.apache.taverna.mobile.fragments.workflowdetails.WorkflowAboutFragment"
+ android:background="@color/button_material_light">
<TextView android:layout_width="match_parent"
android:layout_height="match_parent"
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/fcb08e4d/app/src/main/res/layout/fragment_workflow_detail.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/layout/fragment_workflow_detail.xml b/app/src/main/res/layout/fragment_workflow_detail.xml
index 55aa533..946e5ed 100644
--- a/app/src/main/res/layout/fragment_workflow_detail.xml
+++ b/app/src/main/res/layout/fragment_workflow_detail.xml
@@ -23,7 +23,8 @@ limitations under the License.
android:layout_height="match_parent"
tools:context="org.apache.taverna.mobile.activities.WorkflowDetailActivity$PlaceholderFragment"
android:orientation="vertical"
- android:padding="5dp">
+ android:padding="5dp"
+ android:background="@color/button_material_light">
<TextView android:id="@+id/wkf_author"
android:layout_width="match_parent"
@@ -74,7 +75,8 @@ limitations under the License.
android:textAppearance="?android:attr/textAppearanceLarge"
android:id="@+id/wdescription"
android:layout_marginTop="5dp"
- android:minLines="3" />
+ android:minLines="3"
+ android:hint="@string/description" />
<ImageView
android:layout_width="match_parent"
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/fcb08e4d/app/src/main/res/layout/fragment_workflow_licence.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/layout/fragment_workflow_licence.xml b/app/src/main/res/layout/fragment_workflow_licence.xml
index 05f408b..9b15538 100644
--- a/app/src/main/res/layout/fragment_workflow_licence.xml
+++ b/app/src/main/res/layout/fragment_workflow_licence.xml
@@ -20,7 +20,8 @@ limitations under the License.
<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.fragments.workflowdetails.WorkflowLicenceFragment">
+ tools:context="org.apache.taverna.mobile.fragments.workflowdetails.WorkflowLicenceFragment"
+ android:background="@color/button_material_light">
<!-- TODO: Update blank fragment layout -->
<TextView android:layout_width="match_parent"