Fixed marking workflow twice as favorite
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/18150f2c Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/18150f2c Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/18150f2c Branch: refs/heads/master Commit: 18150f2ca0fea7f8a81cd632b53cd0f23171c7e4 Parents: ec11baf Author: larrytech7 <larrya...@gmail.com> Authored: Mon Jul 27 22:08:54 2015 +0100 Committer: larrytech7 <larrya...@gmail.com> Committed: Mon Jul 27 22:08:54 2015 +0100 ---------------------------------------------------------------------- .../mobile/adapters/WorkflowAdapter.java | 38 ++++++++++---------- .../taverna/mobile/utils/Workflow_DB.java | 9 ++++- 2 files changed, 28 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/18150f2c/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 5660464..7ef234e 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 @@ -75,20 +75,20 @@ import java.util.List; */ public class WorkflowAdapter extends RecyclerView.Adapter<WorkflowAdapter.ViewHolder>{ private Context context; - private List<Workflow> workflow; //workflow data to bind to the UI + private List<Workflow> workflowList; //workflow data to bind to the UI private WorkflowAdapter.ViewHolder mViewHolder; public static final String WORKFLOW_FAVORITE_KEY = "WORKFLOW_FAVORITES"; //workflow key used to save workflows when marked as favorites public Workflow_DB favDB; public WorkflowAdapter(Context c, List<Workflow> wk) { context = c; - workflow = wk; + workflowList = wk; favDB = new Workflow_DB(context, WORKFLOW_FAVORITE_KEY); } public WorkflowAdapter(Context c){ context = c; - workflow = new ArrayList<Workflow>(); + workflowList = new ArrayList<Workflow>(); favDB = new Workflow_DB(context, WORKFLOW_FAVORITE_KEY); } @@ -108,21 +108,20 @@ public class WorkflowAdapter extends RecyclerView.Adapter<WorkflowAdapter.ViewHo public void onBindViewHolder(final ViewHolder viewHolder, int i) { final int j = i; //position of workflow item that has workflow data - final Context c = this.context; - final long wid = workflow.get(i).getId(); - final String author = workflow.get(i).getWorkflow_author(); - final String title = workflow.get(i).getWorkflow_title(); - String description = workflow.get(i).getWorkflow_description(); - final String uri = workflow.get(i).getWorkflow_details_url(); + final long wid = workflowList.get(i).getId(); + final String author = workflowList.get(i).getWorkflow_author(); + final String title = workflowList.get(i).getWorkflow_title(); + String description = workflowList.get(i).getWorkflow_description(); + final String uri = workflowList.get(i).getWorkflow_details_url(); final String desc_full = description; - if(description.length() > 80) description = description.substring(0, 79); + if(description.length() > 80) description = description.substring(0, 79)+" ..."; viewHolder.author_name.setHint(author); viewHolder.wk_title.setHint(title); - viewHolder.wk_description.setText( description+" ... "); + viewHolder.wk_description.setText(description); Linkify.addLinks(viewHolder.wk_description, Linkify.WEB_URLS); - final String wkflow_url = workflow.get(j).getWorkflow_remote_url(); + final Intent it = new Intent(); System.out.println("Workflow_uri:"+uri); it.setClass(context, WorkflowDetailActivity.class); @@ -147,12 +146,13 @@ public class WorkflowAdapter extends RecyclerView.Adapter<WorkflowAdapter.ViewHo mfav.add(wid); mfav.add(author);mfav.add(title);mfav.add(desc_full); mfav.add(SimpleDateFormat.getDateTimeInstance().format(new Date()).toString()); mfav.add(uri); mfav.add(viewHolder.author_name.getText()); + /* try { favDB.put(mfav); } catch (JSONException e) { e.printStackTrace(); } - //boolean saved = favDB.save(); + */ int saved = favDB.insert(mfav); if(saved >0) { @@ -160,6 +160,8 @@ public class WorkflowAdapter extends RecyclerView.Adapter<WorkflowAdapter.ViewHo viewHolder.btn_mark_workflow.setCompoundDrawables(context.getResources().getDrawable(android.R.drawable.btn_star_big_on),null,null,null); //refresh fragment since data has changed FavoriteFragment.newInstance(0); + }else if(saved == -1){ + Toast.makeText(context,"sorry!, this workflow has already been marked as favorite",Toast.LENGTH_SHORT).show(); }else Toast.makeText(context,"Error!, please try again",Toast.LENGTH_SHORT).show(); } @@ -181,24 +183,24 @@ public class WorkflowAdapter extends RecyclerView.Adapter<WorkflowAdapter.ViewHo } public void setData(List<Workflow> workflowList){ - this.workflow = workflowList; + this.workflowList = workflowList; } @Override public long getItemId(int i) { - return workflow.get(i).getId(); + return workflowList.get(i).getId(); } @Override public int getItemCount() { - return workflow.size(); + return workflowList.size(); } public Workflow getItem(int position){ - return workflow.get(position); + return workflowList.get(position); } public void addWorkflow(Workflow wk){ - workflow.add(wk); + workflowList.add(wk); } public static class ViewHolder extends RecyclerView.ViewHolder { http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/18150f2c/app/src/main/java/org/apache/taverna/mobile/utils/Workflow_DB.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/utils/Workflow_DB.java b/app/src/main/java/org/apache/taverna/mobile/utils/Workflow_DB.java index 1786e8e..0394841 100644 --- a/app/src/main/java/org/apache/taverna/mobile/utils/Workflow_DB.java +++ b/app/src/main/java/org/apache/taverna/mobile/utils/Workflow_DB.java @@ -230,7 +230,14 @@ public class Workflow_DB { else jsonArray = new JSONArray(); - String newItemId = generateRandomId(); //generate an entity id to be used for the new entity + String newItemId = item.get(0).toString(); //use the workflow id as an entity key for the new entity + + //verify if this workflow item has already been marked as favorite + for(int k=0; k<jsonArray.length(); k++){ + if (jsonArray.get(k).toString().equalsIgnoreCase(newItemId)) + return -1; + } + jsonArray.put(jsonArray.length(),newItemId); //add new entity id JSONArray newEntity = new JSONArray(); for(Object entity: item){