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/25 12:00:29 UTC
[5/6] incubator-taverna-mobile git commit: Optimise search and fixed
crash bug during search
Optimise search and fixed crash bug during search
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/1b07fee5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/1b07fee5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/1b07fee5
Branch: refs/heads/master
Commit: 1b07fee59d296826b6547a324a23509edb937903
Parents: 045fab5
Author: larrytech7 <la...@gmail.com>
Authored: Wed Jun 24 19:10:46 2015 +0100
Committer: larrytech7 <la...@gmail.com>
Committed: Wed Jun 24 19:10:46 2015 +0100
----------------------------------------------------------------------
.../mobile/adapters/WorkflowAdapter.java | 16 +-
.../mobile/fragments/WorkflowItemFragment.java | 89 +---------
.../mobile/utils/MyExperimentXmlParser.java | 168 -------------------
.../taverna/mobile/utils/WorkflowLoader.java | 101 +----------
.../taverna/mobile/utils/WorkflowParser.java | 50 ------
.../utils/xmlparsers/MyExperimentXmlParser.java | 146 ++++++++++++++++
.../mobile/utils/xmlparsers/WorkflowParser.java | 35 ++++
.../main/res/layout/workflow_item_layout.xml | 9 +-
8 files changed, 207 insertions(+), 407 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/1b07fee5/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 b2c17f4..ce4e4c9 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
@@ -76,6 +76,7 @@ public class WorkflowAdapter extends RecyclerView.Adapter<WorkflowAdapter.ViewHo
public WorkflowAdapter(Context c){
context = c;
workflow = new ArrayList<Workflow>();
+ favDB = new Workflow_DB(context, WORKFLOW_FAVORITE_KEY);
}
@Override
@@ -115,10 +116,6 @@ public class WorkflowAdapter extends RecyclerView.Adapter<WorkflowAdapter.ViewHo
final Intent it = new Intent();
it.setClass(context, WorkflowDetailActivity.class);
it.putExtra("workflowid", workflow.get(i).getId());
- /*it.putExtra("author", workflow.get(i).getWorkflow_author());
- it.putExtra("title",title);
- it.putExtra("description",desc_full);
- it.putExtra("url", wkflow_url);*/
WorkflowdetailFragment.WORKFLO_ID = workflow.get(i).getId();
viewHolder.btn_view_workflow.setOnClickListener(new View.OnClickListener() {
@@ -131,7 +128,7 @@ public class WorkflowAdapter extends RecyclerView.Adapter<WorkflowAdapter.ViewHo
((Activity) context).overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.fade_out);
}
});
- viewHolder.btn_download_workflow.setOnClickListener(new View.OnClickListener() {
+ /*viewHolder.btn_download_workflow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
@@ -151,14 +148,15 @@ public class WorkflowAdapter extends RecyclerView.Adapter<WorkflowAdapter.ViewHo
e.printStackTrace();
}
}
- });
+ });*/
viewHolder.btn_mark_workflow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
boolean saved = favDB.save();
- if(saved)
- Toast.makeText(context,"Workflow marked as favorite",Toast.LENGTH_SHORT).show();
- else
+ if(saved) {
+ Toast.makeText(context, "Workflow marked as favorite", Toast.LENGTH_SHORT).show();
+ viewHolder.btn_mark_workflow.setCompoundDrawables(context.getResources().getDrawable(android.R.drawable.btn_star_big_on),null,null,null);
+ }else
Toast.makeText(context,"Error!, please try again",Toast.LENGTH_SHORT).show();
}
});
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/1b07fee5/app/src/main/java/org/apache/taverna/mobile/fragments/WorkflowItemFragment.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/fragments/WorkflowItemFragment.java b/app/src/main/java/org/apache/taverna/mobile/fragments/WorkflowItemFragment.java
index 4457366..e48a6ba 100644
--- a/app/src/main/java/org/apache/taverna/mobile/fragments/WorkflowItemFragment.java
+++ b/app/src/main/java/org/apache/taverna/mobile/fragments/WorkflowItemFragment.java
@@ -28,7 +28,6 @@ import android.app.Activity;
import android.app.ProgressDialog;
import android.app.SearchManager;
import android.content.Context;
-import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.widget.SwipeRefreshLayout;
@@ -36,7 +35,6 @@ import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.SearchView;
import android.util.Log;
-import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
@@ -46,13 +44,11 @@ import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.TextView;
-import android.widget.Toast;
import org.apache.taverna.mobile.R;
import org.apache.taverna.mobile.activities.DashboardMainActivity;
import org.apache.taverna.mobile.adapters.WorkflowAdapter;
import org.apache.taverna.mobile.tavernamobile.Workflow;
-import org.apache.taverna.mobile.utils.WorkflowDataCallback;
import org.apache.taverna.mobile.utils.WorkflowLoader;
import java.util.ArrayList;
@@ -65,8 +61,7 @@ import java.util.List;
* with a GridView.
* <p/>
*/
-public class WorkflowItemFragment extends Fragment implements android.app.LoaderManager.LoaderCallbacks<List<Workflow>>,
- SwipeRefreshLayout.OnRefreshListener, SearchView.OnQueryTextListener {
+public class WorkflowItemFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener, SearchView.OnQueryTextListener {
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
@@ -166,12 +161,6 @@ public class WorkflowItemFragment extends Fragment implements android.app.Loader
rootView = null;
}
- /**
- * Called when the fragment is visible to the user and actively running.
- * This is generally
- * tied to {@link android.app.Activity#onResume() Activity.onResume} of the containing
- * Activity's lifecycle.
- */
@Override
public void onResume() {
super.onResume();
@@ -183,23 +172,10 @@ public class WorkflowItemFragment extends Fragment implements android.app.Loader
//Toast.makeText(getActivity(), "Query = " + query, Toast.LENGTH_SHORT).show();
performSearch(workflowAdapter,query);
}else*/
- new WorkflowLoader(getActivity(),mListView,swipeRefreshLayout).execute();
+ new WorkflowLoader(getActivity(), swipeRefreshLayout).execute();
// getActivity().getLoaderManager().initLoader(0,null,this).forceLoad();
}
- /**
- * Initialize the contents of the Activity's standard options menu. You
- * should place your menu items in to <var>menu</var>. For this method
- * to be called, you must have first called {@link #setHasOptionsMenu}. See
- * {@link android.app.Activity#onCreateOptionsMenu(android.view.Menu) Activity.onCreateOptionsMenu}
- * for more information.
- *
- * @param menu The options menu in which you place your items.
- * @param inflater
- * @see #setHasOptionsMenu
- * @see #onPrepareOptionsMenu
- * @see #onOptionsItemSelected
- */
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
@@ -220,27 +196,10 @@ public class WorkflowItemFragment extends Fragment implements android.app.Loader
}
}
- /**
- * This hook is called whenever an item in your options menu is selected.
- * The default implementation simply returns false to have the normal
- * processing happen (calling the item's Runnable or sending a message to
- * its Handler as appropriate). You can use this method for any items
- * for which you would like to do processing without those other
- * facilities.
- * <p/>
- * <p>Derived classes should call through to the base class for it to
- * perform the default menu handling.
- *
- * @param item The menu item that was selected.
- * @return boolean Return false to allow normal menu processing to
- * proceed, true to consume it here.
- * @see #onCreateOptionsMenu
- */
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getTitle().equals("Refresh")){
- new WorkflowLoader(getActivity(), mListView, swipeRefreshLayout).execute();
-// getActivity().getLoaderManager().restartLoader(0, null, this).forceLoad();
+ new WorkflowLoader(getActivity(),swipeRefreshLayout).execute();
return true;
}
return super.onOptionsItemSelected(item);
@@ -251,11 +210,6 @@ public class WorkflowItemFragment extends Fragment implements android.app.Loader
super.onDetach();
}
- /**
- * The default content for this Fragment has a TextView that is shown when
- * the list is empty. If you would like to change the text, call this method
- * to supply the text it should use.
- */
public void setEmptyText(CharSequence emptyText) {
View emptyView = mListView.getChildAt(2);
@@ -271,42 +225,17 @@ public class WorkflowItemFragment extends Fragment implements android.app.Loader
Log.i("Count", ""+wk.getItemCount());
for(int i=0; i< wk.getItemCount(); i++) {
Workflow workflow = wk.getItem(i);
- if(search.toLowerCase().contains(workflow.getWorkflow_author().toLowerCase())
- || search.contains(workflow.getWorkflow_title().toLowerCase())){
+ if( search.contains(workflow.getWorkflow_title().toLowerCase())){
ladapter.addWorkflow(workflow);
}
}
- mListView.swapAdapter(ladapter, true);
- /// Toast.makeText(getActivity(), "Query = " + search, Toast.LENGTH_SHORT).show();
- }
-
- @Override
- public android.content.Loader<List<Workflow>> onCreateLoader(int id, Bundle args) {
- swipeRefreshLayout.setRefreshing(true);
- return null;
- //return new WorkflowLoader(getActivity());
- }
-
- @Override
- public void onLoadFinished(android.content.Loader<List<Workflow>> loader, List<Workflow> workflows) {
- swipeRefreshLayout.setRefreshing(false);
- Toast.makeText(getActivity(), "loader finished", Toast.LENGTH_SHORT).show();
- workflowAdapter= new WorkflowAdapter(getActivity(), workflows);
- WorkflowItemFragment.searchAdpater = workflowAdapter;
- //mListView.swapAdapter(workflowAdapter, true);
- }
-
- @Override
- public void onLoaderReset(android.content.Loader<List<Workflow>> listLoader) {
- listLoader.reset();
-// mListView.swapAdapter(null, true);
+ mListView.setAdapter(ladapter);
+// mListView.swapAdapter(ladapter, true);
}
@Override
public void onRefresh() {
-
- new WorkflowLoader(getActivity(), mListView, swipeRefreshLayout).execute();
- //getActivity().getLoaderManager().restartLoader(0, null, this).forceLoad();
+ new WorkflowLoader(getActivity(),swipeRefreshLayout).execute();
}
@Override
@@ -325,9 +254,9 @@ public class WorkflowItemFragment extends Fragment implements android.app.Loader
((Activity)cx).runOnUiThread(new Runnable() {
@Override
public void run() {
- WorkflowItemFragment.mListView.setAdapter(new WorkflowAdapter(cx, data));
+ WorkflowItemFragment.searchAdpater = new WorkflowAdapter(cx,data);
+ WorkflowItemFragment.mListView.setAdapter(WorkflowItemFragment.searchAdpater);
}
});
-
}
}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/1b07fee5/app/src/main/java/org/apache/taverna/mobile/utils/MyExperimentXmlParser.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/utils/MyExperimentXmlParser.java b/app/src/main/java/org/apache/taverna/mobile/utils/MyExperimentXmlParser.java
deleted file mode 100644
index 26893f7..0000000
--- a/app/src/main/java/org/apache/taverna/mobile/utils/MyExperimentXmlParser.java
+++ /dev/null
@@ -1,168 +0,0 @@
-package org.apache.taverna.mobile.utils;
-/**
- * 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.
- */
-
-import android.text.util.Linkify;
-
-import com.thebuzzmedia.sjxp.XMLParser;
-import com.thebuzzmedia.sjxp.rule.DefaultRule;
-
-import org.apache.taverna.mobile.tavernamobile.Workflow;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created by Larry Akah on 6/23/15.
- */
-public class MyExperimentXmlParser {
-
- //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)
- */
- @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;
-
- }
- }
- }
-
- /**
- * parse workflows from myExperiment
- */
- public final static class WorkflowRule extends DefaultRule{
- Workflow workflow;
- List<Workflow> wlist;
- static String uri,version,desc;
- static String url=uri=version=desc="";
- static long id = 0;
- /**
- * 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 WorkflowRule(Type type, String locationPath, String... attributeNames) throws IllegalArgumentException {
- super(type, locationPath, attributeNames);
- this.workflow = new Workflow();
- wlist = new ArrayList<>();
- }
- //instantiated to parse xml data for a given workflow
- public WorkflowRule(Type type, String path, int id, String attributenames){
- super(type,path,attributenames);
- }
-
- @Override
- public void handleParsedAttribute(XMLParser parser, int index, String value, Object userObject) {
-
- switch(index){
- case 0:
- System.out.println("Workflow Resource: "+value); url = value;
- desc = "To view workflow on the web, click "+value;
-// this.workflow.setWorkflow_web_url(value);
-// this.workflow.setWorkflow_description("To view workflow on the web, click "+value);
- break;
- case 1:
- System.out.println("Workflow uri: "+value); //uri for detailed workflow
- uri = value;
-// this.workflow.setWorkflow_remote_url(value);
- break;
- case 2:
- System.out.println("Workflow id: "+value);
- id = Integer.parseInt(value);
-// this.workflow.setId(Integer.parseInt(value));
- break;
- case 3:
- System.out.println("Workflow version: "+value);
- version = value;
- // this.workflow.setWorkflow_versions(value);
- break;
- }
-
- }
-
- @Override
- public void handleParsedCharacters(XMLParser parser, String text, Object workflowListObject) {
- //add the title to the workflow and add it to the workflow list
- this.workflow = new Workflow("", desc, id, url);
- this.workflow.setWorkflow_title(text);
- this.workflow.setWorkflow_author("");
- wlist.add(this.workflow);
- WorkflowLoader.loadedWorkflows.add(this.workflow);
- System.out.println("static Workflow Count: " + WorkflowLoader.loadedWorkflows.size());
- ((List<Workflow>)workflowListObject).add(this.workflow);
- this.workflow = null;
-
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/1b07fee5/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 3071f88..3eb272f 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
@@ -23,29 +23,20 @@ package org.apache.taverna.mobile.utils;
* specific language governing permissions and limitations
* under the License.
*/
-import android.app.Activity;
import android.content.Context;
import android.os.AsyncTask;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.RecyclerView;
-import android.util.Base64;
import android.util.Log;
-import com.thebuzzmedia.sjxp.XMLParser;
-import com.thebuzzmedia.sjxp.rule.DefaultRule;
import com.thebuzzmedia.sjxp.rule.IRule;
-import org.apache.taverna.mobile.adapters.WorkflowAdapter;
-import org.apache.taverna.mobile.tavernamobile.TavernaPlayerAPI;
import org.apache.taverna.mobile.tavernamobile.Workflow;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
+import org.apache.taverna.mobile.utils.xmlparsers.MyExperimentXmlParser;
+import org.apache.taverna.mobile.utils.xmlparsers.WorkflowParser;
-import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
-import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
@@ -61,7 +52,6 @@ public class WorkflowLoader extends AsyncTask<Object, Object, Object>{ //Workflo
private Context ctx;
private List<Workflow> userWorkflows;
public static List<Workflow> loadedWorkflows;
- private RecyclerView recyclerView;
private SwipeRefreshLayout refreshLayout;
/* public WorkflowLoader(Context context) {
@@ -71,9 +61,8 @@ public class WorkflowLoader extends AsyncTask<Object, Object, Object>{ //Workflo
userWorkflows = new ArrayList<Workflow>();
}*/
- public WorkflowLoader(Context context, RecyclerView rc, SwipeRefreshLayout sw) {
+ public WorkflowLoader(Context context, SwipeRefreshLayout sw) {
this.ctx = context;
- this.recyclerView = rc;
this.refreshLayout = sw;
this.userWorkflows = new ArrayList<Workflow>();
loadedWorkflows = new ArrayList<Workflow>();
@@ -134,7 +123,7 @@ public class WorkflowLoader extends AsyncTask<Object, Object, Object>{ //Workflo
}*/
IRule wkflowRule = new MyExperimentXmlParser.WorkflowRule(IRule.Type.ATTRIBUTE, "/workflows/workflow", "resource", "uri","id", "version");
IRule workflowNameRule = new MyExperimentXmlParser.WorkflowRule(IRule.Type.CHARACTER, "/workflows/workflow");
- WorkflowParser xmlParser = new WorkflowParser(new IRule[]{wkflowRule, workflowNameRule}, recyclerView, this.ctx);
+ WorkflowParser xmlParser = new WorkflowParser(new IRule[]{wkflowRule, workflowNameRule});
try {
URL workflowurl = new URL("http://www.myexperiment.org/workflows.xml");
HttpURLConnection connection = (HttpURLConnection) workflowurl.openConnection();
@@ -146,7 +135,6 @@ public class WorkflowLoader extends AsyncTask<Object, Object, Object>{ //Workflo
InputStream dis = connection.getInputStream();
xmlParser.parse(dis, this.userWorkflows);
- Thread.sleep(4000);//4sec delay so that parsing completes
}catch (MalformedURLException e) {
e.printStackTrace();
@@ -154,10 +142,7 @@ public class WorkflowLoader extends AsyncTask<Object, Object, Object>{ //Workflo
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
- } catch (InterruptedException e) {
- e.printStackTrace();
}
- // return WorkflowLoader.loadedWorkflows;
return this.userWorkflows;
}
@@ -200,83 +185,5 @@ public class WorkflowLoader extends AsyncTask<Object, Object, Object>{ //Workflo
protected void onPostExecute(Object o) {
refreshLayout.setRefreshing(false);
System.out.println("Workflow Count: "+this.userWorkflows.size());
- // recyclerView.setAdapter(new WorkflowAdapter(this.ctx, (List<Workflow>) o));
- }
-
- class WorkflowRule extends DefaultRule {
- Workflow workflow;
-
- /**
- * 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 WorkflowRule(Type type, String locationPath, String... attributeNames) throws IllegalArgumentException {
- super(type, locationPath, attributeNames);
- workflow = new Workflow();
- }
- //instantiated to parse xml data for a given workflow
- public WorkflowRule(Type type, String path, int id, String attributenames){
- super(type,path,attributenames);
- }
-
- /**
- * 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)
- */
- @Override
- public void handleParsedAttribute(XMLParser parser, int index, String value, Object userObject) {
- switch(index){
- case 0:
- System.out.println("Workflow Resource: "+value);
- workflow.setWorkflow_web_url(value);
- workflow.setWorkflow_description("To view workflow on the web, click "+value);
- break;
- case 1:
- System.out.println("Workflow uri: "+value); //uri for detailed workflow
- workflow.setWorkflow_remote_url(value);
- break;
- case 2:
- System.out.println("Workflow id: "+value);
- workflow.setId(Integer.parseInt(value));
- break;
- case 3:
- System.out.println("Workflow version: "+value);
- workflow.setWorkflow_versions(value);
- break;
- }
- }
-
- /**
- * Default no-op implementation. Please override with your own logic.
- *
- * @param parser
- * @param text
- * @param workflowListObject
- * @see com.thebuzzmedia.sjxp.rule.IRule#handleParsedCharacters(com.thebuzzmedia.sjxp.XMLParser, String, Object)
- */
- @Override
- public void handleParsedCharacters(XMLParser parser, String text, Object workflowListObject) {
- //add the title to the workflow and add it to the workflow list
- workflow.setWorkflow_title(text);
- workflow.setWorkflow_author("");
- workflow = new Workflow();
- ((List<Workflow>)workflowListObject).add(workflow);
- }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/1b07fee5/app/src/main/java/org/apache/taverna/mobile/utils/WorkflowParser.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/utils/WorkflowParser.java b/app/src/main/java/org/apache/taverna/mobile/utils/WorkflowParser.java
deleted file mode 100644
index cc74955..0000000
--- a/app/src/main/java/org/apache/taverna/mobile/utils/WorkflowParser.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.apache.taverna.mobile.utils;
-
-import android.content.Context;
-import android.support.v7.widget.RecyclerView;
-
-import com.thebuzzmedia.sjxp.XMLParser;
-import com.thebuzzmedia.sjxp.XMLParserException;
-import com.thebuzzmedia.sjxp.rule.IRule;
-
-import org.apache.taverna.mobile.adapters.WorkflowAdapter;
-import org.apache.taverna.mobile.fragments.WorkflowItemFragment;
-import org.apache.taverna.mobile.tavernamobile.Workflow;
-
-import java.util.List;
-
-/**
- * Workflow end document class for detecting when the complete list of workflows have been read out
- * Created by Larry Akah on 6/24/15.
- */
-public class WorkflowParser extends XMLParser implements WorkflowDataCallback{
-
- private RecyclerView recyclerView;
- private Context mcontext;
-
- public WorkflowParser(IRule[] rules) throws IllegalArgumentException, XMLParserException {
- super(rules);
- }
-
- public WorkflowParser(IRule[] rules, RecyclerView recyclerv, Context c){
- super(rules);
- this.recyclerView = recyclerv;
- this.mcontext = c;
- }
-
- @Override
- protected void doEndDocument(Object userObject) {
- // super.doEndDocument(userObject);
- //bind workflows to the adapter;
-// onWorkflowDataReady((List<Workflow>) userObject);
- WorkflowItemFragment.updateWorkflowUI((List<Workflow>) userObject);
- }
-
- @Override
- public void onWorkflowDataReady(List<Workflow> data) {
- // this.recyclerView.setAdapter(new WorkflowAdapter(mcontext, data));
- for(Workflow w:data){
- System.out.println(w.getId());
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/1b07fee5/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
new file mode 100644
index 0000000..69791d5
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/MyExperimentXmlParser.java
@@ -0,0 +1,146 @@
+package org.apache.taverna.mobile.utils.xmlparsers;
+/**
+ * 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.
+ */
+
+import com.thebuzzmedia.sjxp.XMLParser;
+import com.thebuzzmedia.sjxp.rule.DefaultRule;
+
+import org.apache.taverna.mobile.tavernamobile.Workflow;
+import org.apache.taverna.mobile.utils.WorkflowLoader;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by Larry Akah on 6/23/15.
+ */
+public class MyExperimentXmlParser {
+
+ //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)
+ */
+ @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;
+
+ }
+ }
+ }
+
+ /**
+ * parse workflows from myExperiment
+ */
+ public final static class WorkflowRule extends DefaultRule{
+ Workflow workflow;
+ List<Workflow> wlist;
+ static String uri,version,desc;
+ static String url=uri=version=desc="";
+ static long id = 0;
+
+ public WorkflowRule(Type type, String locationPath, String... attributeNames) throws IllegalArgumentException {
+ super(type, locationPath, attributeNames);
+ this.workflow = new Workflow();
+ wlist = new ArrayList<>();
+ }
+ //instantiated to parse xml data for a given workflow
+ public WorkflowRule(Type type, String path, int id, String attributenames){
+ super(type,path,attributenames);
+ }
+
+ @Override
+ public void handleParsedAttribute(XMLParser parser, int index, String value, Object userObject) {
+
+ switch(index){
+ case 0:
+ System.out.println("Workflow Resource: "+value); url = value;
+ desc = "To view workflow on the web, click "+value;
+ break;
+ case 1:
+ System.out.println("Workflow uri: "+value);
+ uri = value;
+ break;
+ case 2:
+ System.out.println("Workflow id: "+value);
+ id = Integer.parseInt(value);
+ break;
+ case 3:
+ System.out.println("Workflow version: "+value);
+ version = value;
+ break;
+ }
+ }
+
+ @Override
+ 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_title(text);
+ this.workflow.setWorkflow_author("");
+ wlist.add(this.workflow);
+ WorkflowLoader.loadedWorkflows.add(this.workflow);
+ System.out.println("static Workflow Count: " + WorkflowLoader.loadedWorkflows.size());
+ ((List<Workflow>)workflowListObject).add(this.workflow);
+ this.workflow = null;
+ }
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/1b07fee5/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
new file mode 100644
index 0000000..f349805
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/WorkflowParser.java
@@ -0,0 +1,35 @@
+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.WorkflowItemFragment;
+import org.apache.taverna.mobile.tavernamobile.Workflow;
+import org.apache.taverna.mobile.utils.WorkflowDataCallback;
+
+import java.util.List;
+
+/**
+ * Workflow end document class for detecting when the complete list of workflows have been read out
+ * Created by Larry Akah on 6/24/15.
+ */
+
+public class WorkflowParser extends XMLParser implements WorkflowDataCallback {
+
+ public WorkflowParser(IRule[] rules) throws IllegalArgumentException, XMLParserException {
+ super(rules);
+ }
+
+ @Override
+ 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/1b07fee5/app/src/main/res/layout/workflow_item_layout.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/layout/workflow_item_layout.xml b/app/src/main/res/layout/workflow_item_layout.xml
index 4324bcf..da42247 100644
--- a/app/src/main/res/layout/workflow_item_layout.xml
+++ b/app/src/main/res/layout/workflow_item_layout.xml
@@ -135,7 +135,8 @@ limitations under the License.
style="android:buttonBarButtonStyle"
android:text="@string/workflow_read"
android:background="#33b5e5"
- android:drawableLeft="@android:drawable/ic_menu_view" />
+ android:drawableLeft="@android:drawable/ic_menu_view"
+ android:layout_marginLeft="3dp" />
<Button
android:id="@+id/button_download_workflow"
android:layout_width="wrap_content"
@@ -147,7 +148,8 @@ limitations under the License.
android:text="@string/workflow_download"
android:drawableLeft="@drawable/download"
android:layout_marginLeft="2dp"
- android:layout_marginRight="2dp" />
+ android:layout_marginRight="2dp"
+ android:visibility="gone" />
<Button
android:id="@+id/button_mark_workflow"
android:layout_width="wrap_content"
@@ -157,7 +159,8 @@ limitations under the License.
android:background="#33b5e5"
android:text="@string/workflow_mark"
android:drawableLeft="@android:drawable/btn_star_big_off"
- style="android:buttonBarButtonStyle"/>
+ style="android:buttonBarButtonStyle"
+ android:layout_marginLeft="3dp" />
</LinearLayout>
</LinearLayout>