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 <[email protected]> Authored: Thu Jun 25 13:27:51 2015 +0100 Committer: larrytech7 <[email protected]> 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 = "[email protected]" + ":" + "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"
