Fixed details not loading when requested
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/12bc0cb8 Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/12bc0cb8 Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/12bc0cb8 Branch: refs/heads/master Commit: 12bc0cb862aeb5ce603194a0d311c50714842d46 Parents: c810e19 Author: larrytech7 <[email protected]> Authored: Sat Jun 27 23:13:26 2015 +0100 Committer: larrytech7 <[email protected]> Committed: Sat Jun 27 23:13:26 2015 +0100 ---------------------------------------------------------------------- app/src/main/ic_loading-web.png | Bin 0 -> 32040 bytes .../activities/DashboardMainActivity.java | 19 +- .../mobile/fragments/WorkflowItemFragment.java | 25 +- .../workflowdetails/WorkflowdetailFragment.java | 46 ++- .../taverna/mobile/tavernamobile/Workflow.java | 5 + .../taverna/mobile/utils/DetailsLoader.java | 61 ++-- .../taverna/mobile/utils/WorkflowLoader.java | 6 +- .../utils/xmlparsers/MyExperimentXmlParser.java | 319 ------------------ .../xmlparsers/MyExperimentXmlParserRules.java | 320 +++++++++++++++++++ .../utils/xmlparsers/WorkflowDetailParser.java | 2 + .../res/layout/fragment_workflow_detail.xml | 2 +- app/src/main/res/mipmap-hdpi/ic_loading.png | Bin 0 -> 1899 bytes app/src/main/res/mipmap-mdpi/ic_loading.png | Bin 0 -> 1108 bytes app/src/main/res/mipmap-xhdpi/ic_loading.png | Bin 0 -> 2927 bytes app/src/main/res/mipmap-xxhdpi/ic_loading.png | Bin 0 -> 5161 bytes app/src/main/res/mipmap-xxxhdpi/ic_loading.png | Bin 0 -> 7653 bytes app/src/main/res/values/strings.xml | 3 + 17 files changed, 434 insertions(+), 374 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/12bc0cb8/app/src/main/ic_loading-web.png ---------------------------------------------------------------------- diff --git a/app/src/main/ic_loading-web.png b/app/src/main/ic_loading-web.png new file mode 100644 index 0000000..1adde64 Binary files /dev/null and b/app/src/main/ic_loading-web.png differ http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/12bc0cb8/app/src/main/java/org/apache/taverna/mobile/activities/DashboardMainActivity.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/activities/DashboardMainActivity.java b/app/src/main/java/org/apache/taverna/mobile/activities/DashboardMainActivity.java index 4b69674..e5f245b 100644 --- a/app/src/main/java/org/apache/taverna/mobile/activities/DashboardMainActivity.java +++ b/app/src/main/java/org/apache/taverna/mobile/activities/DashboardMainActivity.java @@ -25,6 +25,7 @@ package org.apache.taverna.mobile.activities; * under the License. */ +import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -32,6 +33,7 @@ import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.preference.PreferenceManager; +import android.support.v4.app.DialogFragment; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; @@ -43,6 +45,9 @@ import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; +import android.widget.EditText; +import android.widget.LinearLayout; +import android.widget.TextView; import android.widget.Toast; import org.apache.taverna.mobile.R; @@ -68,7 +73,7 @@ public class DashboardMainActivity extends ActionBarActivity static final int NUM_ITEMS = 2; private final int SELECT_WORKFLOW = 10; public static final String APP_DIRECTORY_NAME = "TavernaMobile"; - + private Dialog aboutDialog; MyAdapter mAdapter; ViewPager mPager; @@ -77,6 +82,7 @@ public class DashboardMainActivity extends ActionBarActivity super.onCreate(savedInstanceState); setContentView(R.layout.activity_dashboard_main); setUpWorkflowDirectory(this); + aboutDialog = new Dialog(this); mNavigationDrawerFragment = (NavigationDrawerFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_drawer); @@ -136,10 +142,13 @@ public class DashboardMainActivity extends ActionBarActivity .commit(); break; case 4: //show about - fragmentManager.beginTransaction() - .replace(R.id.container, FavoriteFragment.newInstance(position + 1)) - .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) - .commit(); + TextView about = new TextView(getApplicationContext()); + about.setTextSize(25); + about.setText(getResources().getString(R.string.about)); + + aboutDialog.setTitle("About Taverna Mobile"); + aboutDialog.setContentView(about); + aboutDialog.show(); break; case 5://open settings/preference activity startActivity(new Intent(this, SettingsActivity.class)); http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/12bc0cb8/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 f60f3e3..10a1f8b 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 @@ -34,6 +34,7 @@ import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.SearchView; +import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; @@ -223,19 +224,21 @@ public class WorkflowItemFragment extends Fragment implements SwipeRefreshLayout WorkflowAdapter ladapter = new WorkflowAdapter(getActivity()); WorkflowAdapter wk = searchAdpater;//workflowAdapter; - if(null != wk) - for(int i=0; i< wk.getItemCount(); i++) { - Workflow workflow = wk.getItem(i); - if( workflow.getWorkflow_title().toLowerCase().contains(search.toLowerCase())){ - ladapter.addWorkflow(workflow); + if(!TextUtils.isEmpty(search)) { + if (null != wk) + for (int i = 0; i < wk.getItemCount(); i++) { + Workflow workflow = wk.getItem(i); + if (workflow.getWorkflow_title().toLowerCase().contains(search.toLowerCase())) { + ladapter.addWorkflow(workflow); + } + } + else { + Toast.makeText(getActivity(), "No workflows available", Toast.LENGTH_SHORT).show(); } + mListView.swapAdapter(ladapter, true); + if (ladapter.getItemCount() == 0) + Toast.makeText(getActivity(), "No workflows found matching criteria", Toast.LENGTH_SHORT).show(); } - else{ - Toast.makeText(getActivity(),"No workflows available", Toast.LENGTH_SHORT).show(); - } - mListView.swapAdapter(ladapter, true); - if(ladapter.getItemCount()==0) - Toast.makeText(getActivity(),"No workflows found matching criteria", Toast.LENGTH_SHORT).show(); } @Override http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/12bc0cb8/app/src/main/java/org/apache/taverna/mobile/fragments/workflowdetails/WorkflowdetailFragment.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/fragments/workflowdetails/WorkflowdetailFragment.java b/app/src/main/java/org/apache/taverna/mobile/fragments/workflowdetails/WorkflowdetailFragment.java index 5b3c363..31ab593 100644 --- a/app/src/main/java/org/apache/taverna/mobile/fragments/workflowdetails/WorkflowdetailFragment.java +++ b/app/src/main/java/org/apache/taverna/mobile/fragments/workflowdetails/WorkflowdetailFragment.java @@ -59,6 +59,7 @@ import android.widget.Toast; import org.apache.taverna.mobile.R; import org.apache.taverna.mobile.activities.DashboardMainActivity; import org.apache.taverna.mobile.tavernamobile.TavernaPlayerAPI; +import org.apache.taverna.mobile.tavernamobile.User; import org.apache.taverna.mobile.tavernamobile.Workflow; import org.apache.taverna.mobile.utils.DetailsLoader; import org.apache.taverna.mobile.utils.WorkflowDownloadManager; @@ -180,7 +181,7 @@ public class WorkflowdetailFragment extends Fragment implements View.OnClickList @Override public Loader<Workflow> onCreateLoader(int i, Bundle bundle) { - + progressDialog.show(); return new DetailsLoader(getActivity(), DetailsLoader.LOAD_TYPE.TYPE_WORKFLOW_DETAIL, getActivity().getIntent().getStringExtra("uri")); @@ -202,7 +203,7 @@ public class WorkflowdetailFragment extends Fragment implements View.OnClickList // preview.setImageURI(Uri.parse(workflow.getWorkflow_remote_url())); download_url =workflow.getWorkflow_remote_url(); // progressDialog.cancel(); - */ // progressDialog.dismiss(); + */ //progressDialog.dismiss(); } @Override @@ -216,7 +217,8 @@ public class WorkflowdetailFragment extends Fragment implements View.OnClickList public void run() { //update UI with code here TextView author = (TextView) rootView.findViewById(R.id.wkf_author); - author.append("->" + wk.getWorkflow_author()); + User uploader = wk.getUploader(); + author.setText("Uploader ->" + uploader != null?uploader.getName():"Unknown"); TextView title = (TextView) rootView.findViewById(R.id.wtitle); title.setText(wk.getWorkflow_title()); TextView desc = (TextView) rootView.findViewById(R.id.wdescription); @@ -224,15 +226,47 @@ public class WorkflowdetailFragment extends Fragment implements View.OnClickList TextView createdat = (TextView) rootView.findViewById(R.id.wcreatedat); createdat.setText("Created : " + wk.getWorkflow_datecreated()); TextView updated = (TextView) rootView.findViewById(R.id.wupdatedat); - updated.setText(wk.getWorkflow_datemodified() + wk.getWorkflow_remote_url()); + updated.setText("Workflow Description"); ImageView preview = (ImageView) rootView.findViewById(R.id.wkf_image); - preview.setImageURI(Uri.parse("http://www.myexperiment.org/workflows/5/versions/2/previews/full")); + //preview.setImageURI(Uri.parse(wk.getWorkflow_preview())); + new LoadImageThread(preview, wk.getWorkflow_preview()).execute(); download_url =wk.getWorkflow_remote_url(); - // progressDialog.dismiss(); + progressDialog.dismiss(); } }); } + private static class LoadImageThread extends AsyncTask<String, Void, Bitmap>{ + ImageView imageView; + String src ; + public LoadImageThread(ImageView image, String source) { + imageView = image; + src = source; + } + + @Override + protected Bitmap doInBackground(String... strings) { + Bitmap myBitmap = null; + try { + URL url = new URL(src); + HttpURLConnection connection = null; + connection = (HttpURLConnection) url.openConnection(); + connection.setDoInput(true); + connection.connect(); + InputStream input = connection.getInputStream(); + myBitmap = BitmapFactory.decodeStream(input); +// imageView.setImageBitmap(myBitmap); + } catch (IOException e) { + e.printStackTrace(); + } + return myBitmap; + } + + @Override + protected void onPostExecute(Bitmap bitmap) { + imageView.setImageBitmap(bitmap); + } + } //create and return a new TextView public TextView createTextView(Context mcontext, String placeholder){ TextView tv = new TextView(mcontext); http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/12bc0cb8/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 7868450..b4547ae 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 @@ -299,6 +299,11 @@ public class Workflow { public void setWorkflow_credits(List<String> workflow_credits) { this.workflow_credits = workflow_credits; } + + @Override + public String toString() { + return this.workflow_title; + } } /* Use the sample code if it becomes necessary to pass this objects amongst activities / simple class that just has one member property as an example http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/12bc0cb8/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 a73d10d..4be2542 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 @@ -31,10 +31,9 @@ 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.MyExperimentXmlParserRules; import org.apache.taverna.mobile.utils.xmlparsers.WorkflowDetailParser; import org.json.JSONArray; import org.json.JSONException; @@ -49,8 +48,6 @@ import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; -import static org.apache.taverna.mobile.utils.DetailsLoader.LOAD_TYPE.*; - /** * 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. @@ -69,7 +66,7 @@ public class DetailsLoader extends AsyncTaskLoader<Workflow> { this.context = context; this.lt = load_type; this.uri = detailsRUI; - workflow = new Workflow(); + this.workflow = new Workflow(); } @Override @@ -110,44 +107,44 @@ public class DetailsLoader extends AsyncTaskLoader<Workflow> { connection.connect(); //send request Log.i("RESPONSE Code", "" + connection.getResponseCode()); Log.i("RESPONSE Messsage", ""+connection.getResponseMessage()); - Log.i("Authorization ", ""+connection.getRequestProperty("Authorization")); InputStream dis = connection.getInputStream(); - BufferedReader br = new BufferedReader(new InputStreamReader(dis)); - StringBuffer sb = new StringBuffer(); - String jsonData = ""; - while((jsonData = br.readLine()) != null){ - sb.append(jsonData); - } switch(this.lt) { case TYPE_WORKFLOW_DETAIL: { //make rules and apply the parser - IRule workfl = new MyExperimentXmlParser.WorkflowDetailRule(IRule.Type.ATTRIBUTE, + IRule workfl = new MyExperimentXmlParserRules.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"); + IRule title = new MyExperimentXmlParserRules.TitleRule(IRule.Type.CHARACTER,"/workflow/title"); + IRule description = new MyExperimentXmlParserRules.DescriptionRule(IRule.Type.CHARACTER, "/workflow/description"); + IRule type = new MyExperimentXmlParserRules.TypeRule(IRule.Type.CHARACTER, "/workflow/type"); + IRule attrType = new MyExperimentXmlParserRules.TypeRule(IRule.Type.ATTRIBUTE, "/workflow/type", "resource", "uri","id"); + IRule uploader = new MyExperimentXmlParserRules.UploaderRule(IRule.Type.CHARACTER, "/workflow/uploader"); + IRule attrUploader = new MyExperimentXmlParserRules.UploaderRule(IRule.Type.ATTRIBUTE, "/workflow/uploader", "resource", "uri","id"); + IRule date = new MyExperimentXmlParserRules.DateRule(IRule.Type.CHARACTER, "/workflow/created-at"); + IRule preview = new MyExperimentXmlParserRules.PreviewRule(IRule.Type.CHARACTER, "/workflow/preview"); + IRule licetype = new MyExperimentXmlParserRules.LicenceTypeRule(IRule.Type.CHARACTER, "/workflow/licence-type"); + IRule attrlicetype = new MyExperimentXmlParserRules.LicenceTypeRule(IRule.Type.ATTRIBUTE,"/workflow/licence-type", "resource", "uri","id"); + IRule contenturi = new MyExperimentXmlParserRules.ContentUriRule(IRule.Type.CHARACTER, "/workflow/content-uri"); + IRule contentType = new MyExperimentXmlParserRules.ContentTypeRule(IRule.Type.CHARACTER, "/workflow/content-type"); + IRule tags = new MyExperimentXmlParserRules.TagsRule(IRule.Type.CHARACTER, "/workflow/tags/tag"); + IRule attrTags = new MyExperimentXmlParserRules.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); + // System.out.println(sb.toString()); + parser.parse(dis, this.workflow); } dis.close(); - br.close(); + //br.close(); return workflow; case TYPE_RUN_HISTORY:{ + BufferedReader br = new BufferedReader(new InputStreamReader(dis)); + StringBuffer sb = new StringBuffer(); + String jsonData = ""; + while((jsonData = br.readLine()) != null){ + sb.append(jsonData); + } workflow = new Workflow(this.context); JSONArray jsonArray = new JSONArray(sb.toString()); Log.i("JSON ", jsonArray.toString(2)); @@ -181,6 +178,12 @@ public class DetailsLoader extends AsyncTaskLoader<Workflow> { } return workflow; default: + BufferedReader br = new BufferedReader(new InputStreamReader(dis)); + StringBuffer sb = new StringBuffer(); + String jsonData = ""; + while((jsonData = br.readLine()) != null){ + sb.append(jsonData); + } dis.close(); br.close(); return workflow; http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/12bc0cb8/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 e08de2a..af16b68 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 @@ -31,7 +31,7 @@ import android.util.Log; import com.thebuzzmedia.sjxp.rule.IRule; import org.apache.taverna.mobile.tavernamobile.Workflow; -import org.apache.taverna.mobile.utils.xmlparsers.MyExperimentXmlParser; +import org.apache.taverna.mobile.utils.xmlparsers.MyExperimentXmlParserRules; import org.apache.taverna.mobile.utils.xmlparsers.WorkflowParser; import java.io.IOException; @@ -120,8 +120,8 @@ public class WorkflowLoader extends AsyncTask<Object, Object, Object>{ //Workflo } catch (JSONException | IOException e) { e.printStackTrace(); }*/ - IRule wkflowRule = new MyExperimentXmlParser.WorkflowRule(IRule.Type.ATTRIBUTE, "/workflows/workflow", "resource", "uri","id", "version"); - IRule workflowNameRule = new MyExperimentXmlParser.WorkflowRule(IRule.Type.CHARACTER, "/workflows/workflow"); + IRule wkflowRule = new MyExperimentXmlParserRules.WorkflowRule(IRule.Type.ATTRIBUTE, "/workflows/workflow", "resource", "uri","id", "version"); + IRule workflowNameRule = new MyExperimentXmlParserRules.WorkflowRule(IRule.Type.CHARACTER, "/workflows/workflow"); WorkflowParser xmlParser = new WorkflowParser(new IRule[]{wkflowRule, workflowNameRule}); try { URL workflowurl = new URL("http://www.myexperiment.org/workflows.xml"); http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/12bc0cb8/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 deleted file mode 100644 index 46250eb..0000000 --- a/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/MyExperimentXmlParser.java +++ /dev/null @@ -1,319 +0,0 @@ -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 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; - -/** - * Created by Larry Akah on 6/23/15. - */ -public class MyExperimentXmlParser { - - public static Workflow mWorkflow = new Workflow(); - - public MyExperimentXmlParser(){ - } - - public Workflow getWorkflowHere(){ - return mWorkflow; - } - //parse a single workflow from myexperiment - 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; - - } - } - - @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); - } - } - - /** - * 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_details_url(uri); - 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/12bc0cb8/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/MyExperimentXmlParserRules.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/MyExperimentXmlParserRules.java b/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/MyExperimentXmlParserRules.java new file mode 100644 index 0000000..9bb47ed --- /dev/null +++ b/app/src/main/java/org/apache/taverna/mobile/utils/xmlparsers/MyExperimentXmlParserRules.java @@ -0,0 +1,320 @@ +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 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; + +/** + * Created by Larry Akah on 6/23/15. + */ +public class MyExperimentXmlParserRules { + + public static Workflow mWorkflow = new Workflow(); + + public MyExperimentXmlParserRules(){ + } + + public Workflow getWorkflowHere(){ + return mWorkflow; + } + //parse a single workflow from myexperiment + public final static class WorkflowDetailRule extends DefaultRule{ + + public WorkflowDetailRule(Type type, String locationPath, String... attributeNames) throws IllegalArgumentException { + super(type, locationPath, attributeNames); + System.out.println("Parser rules created. Ready to parse"); + } + + @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; + + } + } + + @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("Tag attribute value"+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); + } + } + + /** + * 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_details_url(uri); + 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/12bc0cb8/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 964c6af..a49d836 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 @@ -46,5 +46,7 @@ public class WorkflowDetailParser extends XMLParser { @Override protected void doEndDocument(Object userObject) { WorkflowdetailFragment.setWorkflowDetails((Workflow) userObject); + // WorkflowdetailFragment.setWorkflowDetails(MyExperimentXmlParserRules.mWorkflow); + System.out.println("Finished Parsing document. Results"+(Workflow) userObject); } } http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/12bc0cb8/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 946e5ed..3c920d2 100644 --- a/app/src/main/res/layout/fragment_workflow_detail.xml +++ b/app/src/main/res/layout/fragment_workflow_detail.xml @@ -82,7 +82,7 @@ limitations under the License. android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/wkf_image" - android:src="@mipmap/ic_viewworkflow" + android:src="@mipmap/ic_loading" android:backgroundTint="@color/accent_material_light" android:backgroundTintMode="src_atop" /> http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/12bc0cb8/app/src/main/res/mipmap-hdpi/ic_loading.png ---------------------------------------------------------------------- diff --git a/app/src/main/res/mipmap-hdpi/ic_loading.png b/app/src/main/res/mipmap-hdpi/ic_loading.png new file mode 100644 index 0000000..f0e927d Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_loading.png differ http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/12bc0cb8/app/src/main/res/mipmap-mdpi/ic_loading.png ---------------------------------------------------------------------- diff --git a/app/src/main/res/mipmap-mdpi/ic_loading.png b/app/src/main/res/mipmap-mdpi/ic_loading.png new file mode 100644 index 0000000..216a417 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_loading.png differ http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/12bc0cb8/app/src/main/res/mipmap-xhdpi/ic_loading.png ---------------------------------------------------------------------- diff --git a/app/src/main/res/mipmap-xhdpi/ic_loading.png b/app/src/main/res/mipmap-xhdpi/ic_loading.png new file mode 100644 index 0000000..f8858a9 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_loading.png differ http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/12bc0cb8/app/src/main/res/mipmap-xxhdpi/ic_loading.png ---------------------------------------------------------------------- diff --git a/app/src/main/res/mipmap-xxhdpi/ic_loading.png b/app/src/main/res/mipmap-xxhdpi/ic_loading.png new file mode 100644 index 0000000..5a4b82f Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_loading.png differ http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/12bc0cb8/app/src/main/res/mipmap-xxxhdpi/ic_loading.png ---------------------------------------------------------------------- diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_loading.png b/app/src/main/res/mipmap-xxxhdpi/ic_loading.png new file mode 100644 index 0000000..8007c63 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_loading.png differ http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/12bc0cb8/app/src/main/res/values/strings.xml ---------------------------------------------------------------------- diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1107796..dc320b3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -85,5 +85,8 @@ limitations under the License. <string name="emailerr">Email must not be empty</string> <string name="passworderr">Password must not be empty</string> + <string name="about">Mobile Application for managing Taverna workflows on the fly.<br/> + View, run and download workflows at a convenience on your android mobile<br/> + device. \n\n <br/><b>Developed at Apache Taverna and Powered by MyExperiment</b><br/></string> </resources>
