Repository: incubator-taverna-mobile Updated Branches: refs/heads/master 2a592b154 -> 37fdd7233
remove checkstyle, PMD error and enhance coding style 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/704aa7c8 Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/704aa7c8 Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/704aa7c8 Branch: refs/heads/master Commit: 704aa7c8905e238016b4679620270e799c608c45 Parents: 8a6819e Author: Sagar <kumarsagar15...@gmail.com> Authored: Fri Oct 14 19:00:32 2016 +0530 Committer: Sagar <kumarsagar15...@gmail.com> Committed: Fri Oct 14 19:00:32 2016 +0530 ---------------------------------------------------------------------- .../activities/DashboardMainActivity.java | 12 +-- .../data/model/Licence/LicenceContent.java | 32 +++++++ .../ui/adapter/LicenceRecyclerViewAdapter.java | 69 +++++++++++++++ .../mobile/ui/licences/LicenceFragment.java | 73 +++++++--------- .../ui/licences/LicenceRecyclerViewAdapter.java | 80 ------------------ .../ui/licences/licence/LicenceContent.java | 88 -------------------- app/src/main/res/values/strings.xml | 2 +- 7 files changed, 134 insertions(+), 222 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/704aa7c8/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 3d88865..e500b4f 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 @@ -55,16 +55,15 @@ import org.apache.taverna.mobile.data.DataManager; import org.apache.taverna.mobile.data.local.PreferencesHelper; import org.apache.taverna.mobile.ui.anouncements.AnnouncementFragment; import org.apache.taverna.mobile.ui.favouriteworkflow.FavouriteWorkflowsFragment; -import org.apache.taverna.mobile.ui.licences.licence.LicenceContent; -import org.apache.taverna.mobile.ui.myworkflows.MyWorkflowFragment; import org.apache.taverna.mobile.ui.licences.LicenceFragment; +import org.apache.taverna.mobile.ui.myworkflows.MyWorkflowFragment; import org.apache.taverna.mobile.ui.workflow.WorkflowFragment; import org.apache.taverna.mobile.utils.ActivityUtils; import org.apache.taverna.mobile.utils.WorkflowOpen; import java.io.File; -public class DashboardMainActivity extends AppCompatActivity implements LicenceFragment.OnListFragmentInteractionListener { +public class DashboardMainActivity extends AppCompatActivity { public static final String APP_DIRECTORY_NAME = "TavernaMobile"; private final int SELECT_WORKFLOW = 10; @@ -230,11 +229,10 @@ public class DashboardMainActivity extends AppCompatActivity implements LicenceF case R.id.os_licences: - fragment = new LicenceFragment(); ActivityUtils .addFragmentToActivity( getSupportFragmentManager(), - fragment, + LicenceFragment.newInstance(), R.id.frame_container); menuItem.setChecked(true); @@ -387,8 +385,4 @@ public class DashboardMainActivity extends AppCompatActivity implements LicenceF return super.onOptionsItemSelected(item); } - @Override - public void onListFragmentInteraction(LicenceContent.LicenceItem item) { - - } } http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/704aa7c8/app/src/main/java/org/apache/taverna/mobile/data/model/Licence/LicenceContent.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/data/model/Licence/LicenceContent.java b/app/src/main/java/org/apache/taverna/mobile/data/model/Licence/LicenceContent.java new file mode 100644 index 0000000..fdf346c --- /dev/null +++ b/app/src/main/java/org/apache/taverna/mobile/data/model/Licence/LicenceContent.java @@ -0,0 +1,32 @@ +package org.apache.taverna.mobile.data.model.licence; + +import com.google.gson.annotations.SerializedName; + + +public class LicenceContent { + + @SerializedName("library_name") + private String name; + + private String version; + + private String licence; + + public String getName() { + return name; + } + + public String getVersion() { + return version; + } + + public String getLicence() { + return licence; + } + + @Override + public String toString() { + return name + " " + version + " " + licence; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/704aa7c8/app/src/main/java/org/apache/taverna/mobile/ui/adapter/LicenceRecyclerViewAdapter.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/adapter/LicenceRecyclerViewAdapter.java b/app/src/main/java/org/apache/taverna/mobile/ui/adapter/LicenceRecyclerViewAdapter.java new file mode 100644 index 0000000..62b0db9 --- /dev/null +++ b/app/src/main/java/org/apache/taverna/mobile/ui/adapter/LicenceRecyclerViewAdapter.java @@ -0,0 +1,69 @@ +package org.apache.taverna.mobile.ui.adapter; + +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import org.apache.taverna.mobile.R; +import org.apache.taverna.mobile.data.model.licence.LicenceContent; + +import java.util.List; + +/** + * {@link RecyclerView.Adapter} that can display a {@link LicenceContent} + */ +public class LicenceRecyclerViewAdapter extends RecyclerView.Adapter<LicenceRecyclerViewAdapter + .ViewHolder> { + + private final List<LicenceContent> mValues; + + public LicenceRecyclerViewAdapter(List<LicenceContent> items) { + mValues = items; + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.fragment_licence, parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(final ViewHolder holder, int position) { + + + holder.mLicenceNameView.setText(mValues.get(position).getName()); + holder.mLicenceVersionView.setText(mValues.get(position).getVersion()); + holder.mLicenceLicenceView.setText(mValues.get(position).getLicence()); + + + } + + @Override + public int getItemCount() { + return mValues.size(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + + private final TextView mLicenceNameView; + private final TextView mLicenceVersionView; + private final TextView mLicenceLicenceView; + + + public ViewHolder(View view) { + super(view); + mLicenceNameView = (TextView) view.findViewById(R.id.licence_name); + mLicenceVersionView = (TextView) view.findViewById(R.id.licence_version); + mLicenceLicenceView = (TextView) view.findViewById(R.id.licence_licence); + } + + @Override + public String toString() { + return super.toString() + " " + mLicenceNameView.getText() + " " + + mLicenceVersionView.getText() + " " + mLicenceLicenceView.getText(); + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/704aa7c8/app/src/main/java/org/apache/taverna/mobile/ui/licences/LicenceFragment.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/licences/LicenceFragment.java b/app/src/main/java/org/apache/taverna/mobile/ui/licences/LicenceFragment.java index ae68460..90e3bbb 100644 --- a/app/src/main/java/org/apache/taverna/mobile/ui/licences/LicenceFragment.java +++ b/app/src/main/java/org/apache/taverna/mobile/ui/licences/LicenceFragment.java @@ -2,6 +2,7 @@ package org.apache.taverna.mobile.ui.licences; import android.content.Context; import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; @@ -9,75 +10,59 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; + import org.apache.taverna.mobile.R; +import org.apache.taverna.mobile.data.model.licence.LicenceContent; +import org.apache.taverna.mobile.ui.adapter.LicenceRecyclerViewAdapter; + +import java.lang.reflect.Type; +import java.util.List; -import org.apache.taverna.mobile.ui.licences.licence.LicenceContent; /** * A fragment representing a list of Licence Items. - * <p/> - * Activities containing this fragment MUST implement the {@link OnListFragmentInteractionListener} - * interface. */ public class LicenceFragment extends Fragment { - private OnListFragmentInteractionListener mListener; - /** - * Mandatory empty constructor for the fragment manager to instantiate the - * fragment (e.g. upon screen orientation changes). - */ - public LicenceFragment() { + private List<LicenceContent> itemList; + + private Gson gson; + + public static LicenceFragment newInstance() { + + return new LicenceFragment(); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + gson = new Gson(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_licence_list, container, false); + return inflater.inflate(R.layout.fragment_licence_list, container, false); + } + + @Override + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); - // Set the adapter if (view instanceof RecyclerView) { + Context context = view.getContext(); RecyclerView recyclerView = (RecyclerView) view; recyclerView.setLayoutManager(new LinearLayoutManager(context)); - recyclerView.setAdapter(new LicenceRecyclerViewAdapter(LicenceContent.ITEMS, mListener)); + Type type = new TypeToken<List<org.apache.taverna.mobile.data.model.licence + .LicenceContent>>() { + }.getType(); + itemList = gson.fromJson(getString(R.string.licence_data), type); + recyclerView.setAdapter(new LicenceRecyclerViewAdapter(itemList)); } - return view; } - @Override - public void onAttach(Context context) { - super.onAttach(context); - if (context instanceof OnListFragmentInteractionListener) { - mListener = (OnListFragmentInteractionListener) context; - } else { - throw new RuntimeException(context.toString() - + " must implement OnListFragmentInteractionListener"); - } - } - - @Override - public void onDetach() { - super.onDetach(); - mListener = null; - } - - /** - * This interface must be implemented by activities that contain this - * fragment to allow an interaction in this fragment to be communicated - * to the activity and potentially other fragments contained in that - * activity. - * <p/> - * See the Android Training lesson <a href= - * "http://developer.android.com/training/basics/fragments/communicating.html" - * >Communicating with Other Fragments</a> for more information. - */ - public interface OnListFragmentInteractionListener { - void onListFragmentInteraction(LicenceContent.LicenceItem item); - } } http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/704aa7c8/app/src/main/java/org/apache/taverna/mobile/ui/licences/LicenceRecyclerViewAdapter.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/licences/LicenceRecyclerViewAdapter.java b/app/src/main/java/org/apache/taverna/mobile/ui/licences/LicenceRecyclerViewAdapter.java deleted file mode 100644 index 2d37cec..0000000 --- a/app/src/main/java/org/apache/taverna/mobile/ui/licences/LicenceRecyclerViewAdapter.java +++ /dev/null @@ -1,80 +0,0 @@ -package org.apache.taverna.mobile.ui.licences; - -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import org.apache.taverna.mobile.R; -import org.apache.taverna.mobile.ui.licences.LicenceFragment.OnListFragmentInteractionListener; -import org.apache.taverna.mobile.ui.licences.licence.LicenceContent.LicenceItem; - -import java.util.List; - -/** - * {@link RecyclerView.Adapter} that can display a {@link LicenceItem} and makes a call to the - * specified {@link OnListFragmentInteractionListener}. - */ -public class LicenceRecyclerViewAdapter extends RecyclerView.Adapter<LicenceRecyclerViewAdapter.ViewHolder> { - - private final List<LicenceItem> mValues; - private final OnListFragmentInteractionListener mListener; - - public LicenceRecyclerViewAdapter(List<LicenceItem> items, OnListFragmentInteractionListener listener) { - mValues = items; - mListener = listener; - } - - @Override - public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - View view = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.fragment_licence, parent, false); - return new ViewHolder(view); - } - - @Override - public void onBindViewHolder(final ViewHolder holder, int position) { - holder.mItem = mValues.get(position); - holder.mLicenceNameView.setText(mValues.get(position).getName()); - holder.mLicenceVersionView.setText(mValues.get(position).getVersion()); - holder.mLicenceLicenceView.setText(mValues.get(position).getLicence()); - - holder.mView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (null != mListener) { - // Notify the active callbacks interface (the activity, if the - // fragment is attached to one) that an item has been selected. - mListener.onListFragmentInteraction(holder.mItem); - } - } - }); - } - - @Override - public int getItemCount() { - return mValues.size(); - } - - public class ViewHolder extends RecyclerView.ViewHolder { - public final View mView; - public final TextView mLicenceNameView; - public final TextView mLicenceVersionView; - public final TextView mLicenceLicenceView; - public LicenceItem mItem; - - public ViewHolder(View view) { - super(view); - mView = view; - mLicenceNameView = (TextView) view.findViewById(R.id.licence_name); - mLicenceVersionView = (TextView) view.findViewById(R.id.licence_version); - mLicenceLicenceView = (TextView) view.findViewById(R.id.licence_licence); - } - - @Override - public String toString() { - return super.toString() + " " + mLicenceNameView.getText() + " " + mLicenceVersionView.getText() + " " + mLicenceLicenceView.getText(); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/704aa7c8/app/src/main/java/org/apache/taverna/mobile/ui/licences/licence/LicenceContent.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/licences/licence/LicenceContent.java b/app/src/main/java/org/apache/taverna/mobile/ui/licences/licence/LicenceContent.java deleted file mode 100644 index f43f790..0000000 --- a/app/src/main/java/org/apache/taverna/mobile/ui/licences/licence/LicenceContent.java +++ /dev/null @@ -1,88 +0,0 @@ -package org.apache.taverna.mobile.ui.licences.licence; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * Create licence items from JSON string and add to list - */ -public class LicenceContent { - - /** - * An array of licence items. - */ - public static final List<LicenceItem> ITEMS = new ArrayList<LicenceItem>(); - private static String licence_json = "[{'library': 'dropbox-android-sdk','version': '1.6.3', 'licence': 'MIT'}, {'library': 'json_simple','version': '1.1','licence': 'Apache 2'}, {'libary': 'sjxp','version': '2.2', 'licence': 'Apache 2'}, {'library': 'com.android.support:appcompat','version': 'v7:23.3.0', 'licence': 'Apache 2'}, {'library': 'com.android.support:cardview','version': 'v7:23.3.0', 'licence': 'Apache 2'}, {'library': 'com.android.support:recyclerview','version': 'v7:23.3.0', 'licence': 'Apache 2'}, {'library': 'com.android.support:support','version': 'v4:23.3.0', 'licence': 'Apache 2'}, {'library': 'com.android.support:design','version': ':23.3.0', 'licence': 'Apache 2'}, {'library': 'com.squareup.retrofit2:retrofit','version': '2.0.2', 'licence': 'Apache 2'}, {'library': 'com.squareup.retrofit2:adapter-rxjava', 'version': '2.0.2', 'licence': 'Apache 2'}, { 'library': 'com.squareup.okhttp3:logging-interceptor', 'version': '3.2.0', 'licence': 'Apache 2'}, { 'library' : 'com.squareup.retrofit2:converter-simplexml', 'version': '2.0.2', 'licence': 'Apache 2'}, { 'library': 'com.jakewharton:butterknife', 'version': '8.0.1', 'licence': 'Apache 2'}, { 'library': 'com.jakewharton:butterknife-compiler', 'version': '8.0.1', 'licence': 'Apache 2'}, {'library': 'io.reactivex:rxandroid', 'version': '1.2.0', 'licence': 'Apache 2'}, {'library': 'io.reactivex:rxjava', 'version': '1.1.4', 'licence': 'Apache 2'}, {'library': 'org.simpleframework:simple-xml', 'version': '2.7. +', 'licence': 'Apache 2'}, { 'library': 'com.github.bumptech.glide:glide', 'version': '3.6.0', 'licence': 'BSD, MIT & Apache 2'}, { 'library': 'com.caverock:androidsvg', 'version': '1.2.1', 'licence': 'Apache 2'}, { 'library': 'com.github.Raizlabs.DBFlow:dbflow-processor', 'version': '3.0.1', 'licence': 'MIT'}, { 'library': 'com.github.Raizlabs.DBFlow:dbflow-core', 'version': '3.0.1', 'licence': 'MIT'}, { 'library': 'com.github.Raizlabs.DBFlow:dbflow', 'version': '3.0.1', 'licence': 'MIT '}, { 'library': 'com.facebook.stetho:stetho', 'version': '1.3.1', 'licence': 'BSD'}, { 'library': 'com.facebook.stetho:stetho-okhttp', 'version': '3: 1.3.1', 'licence': 'BSD'}, { 'library': 'com.github.chrisbanes:PhotoView', 'version': '1.2.6', 'licence': 'Apache 2'}, { 'library': 'com.androidsupport:multidex','version': '1.0.0', 'licence': 'Apache 2'}, {'library': 'com.google.code.gson:gson','version': '2.7', 'licence': 'Apache 2'}, {'library': 'com.squareup.retrofit2:converter-gson','version': '2.0.2', 'licence': 'Apache 2'}, {'library': 'com.anton46:stepsview','version': '0.0.2', 'licence': 'Apache 2'}]"; - - static { - JSONArray licenceList = null; - try { - licenceList = new JSONArray(licence_json); - } catch (JSONException e) { - e.printStackTrace(); - } - for (int i=0; i < licenceList.length(); i++) { - try { - JSONObject libraryDetails = licenceList.getJSONObject(i); - String libraryName = libraryDetails.getString("library"); - String libraryVersion = libraryDetails.getString("version"); - String licenceVersion = libraryDetails.getString("licence"); - addItem(createLicenceItem(i, libraryName, libraryVersion, licenceVersion)); - } catch (JSONException e) { - e.printStackTrace(); - } - } - } - - private static void addItem(LicenceItem item) { - ITEMS.add(item); - } - - private static LicenceItem createLicenceItem(int position, String name, String version, String licence) { - return new LicenceItem(String.valueOf(position), name, version, licence); - } - - /** - * A licence item containing info about a library used by the app. - */ - public static class LicenceItem { - public final String id; - public final String name; - public final String version; - public final String licence; - - public String getId() { - return id; - } - - public String getName() { - return name; - } - - public String getVersion() { - return version; - } - - public String getLicence() { - return licence; - } - - public LicenceItem(String id, String name, String version, String licence) { - this.id = id; - this.name = name; - this.version = version; - this.licence = licence; - } - - @Override - public String toString() { - return name + " " + version + " " + licence; - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/704aa7c8/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 0769dde..929a63a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -181,5 +181,5 @@ limitations under the License. <string name="please_wait">Please Wait ...</string> <string name="headline_taverna_player_portal_login">Taverna Player Portal Login</string> <string name="button_text_login">Login</string> - + <string name="licence_data">[{\'library_name\': \'dropbox-android-sdk\',\'version\': \'1.6.3\', \'licence\': \'MIT\'}, {\'library_name\': \'json_simple\',\'version\': \'1.1\',\'licence\': \'Apache 2\'}, {\'library_name\': \'sjxp\',\'version\': \'2.2\', \'licence\': \'Apache 2\'}, {\'library_name\': \'com.android.support:appcompat\',\'version\': \'v7:23.3.0\', \'licence\': \'Apache 2\'}, {\'library_name\': \'com.android.support:cardview\',\'version\': \'v7:23.3.0\', \'licence\': \'Apache 2\'}, {\'library_name\': \'com.android.support:recyclerview\',\'version\': \'v7:23.3.0\', \'licence\': \'Apache 2\'}, {\'library_name\': \'com.android.support:support\',\'version\': \'v4:23.3.0\', \'licence\': \'Apache 2\'}, {\'library_name\': \'com.android.support:design\',\'version\': \':23.3.0\', \'licence\': \'Apache 2\'}, {\'library_name\': \'com.squareup.retrofit2:retrofit\',\'version\': \'2.0.2\', \'licence\': \'Apache 2\'}, {\'library_name\': \'com.squareup.retrofit2:adapter-rxjava\', \'v ersion\': \'2.0.2\', \'licence\': \'Apache 2\'}, { \'library_name\': \'com.squareup.okhttp3:logging-interceptor\', \'version\': \'3.2.0\', \'licence\': \'Apache 2\'}, { \'library_name\': \'com.squareup.retrofit2:converter-simplexml\', \'version\': \'2.0.2\', \'licence\': \'Apache 2\'}, { \'library_name\': \'com.jakewharton:butterknife\', \'version\': \'8.0.1\', \'licence\': \'Apache 2\'}, { \'library_name\': \'com.jakewharton:butterknife-compiler\', \'version\': \'8.0.1\', \'licence\': \'Apache 2\'}, {\'library_name\': \'io.reactivex:rxandroid\', \'version\': \'1.2.0\', \'licence\': \'Apache 2\'}, {\'library_name\': \'io.reactivex:rxjava\', \'version\': \'1.1.4\', \'licence\': \'Apache 2\'}, {\'library_name\': \'org.simpleframework:simple-xml\', \'version\': \'2.7. +\', \'licence\': \'Apache 2\'}, { \'library_name\': \'com.github.bumptech.glide:glide\', \'version\': \'3.6.0\', \'licence\': \'BSD, MIT & Apache 2\'}, { \'library_name\': \'com.caverock:androidsvg\', \'version\': \' 1.2.1\', \'licence\': \'Apache 2\'}, { \'library_name\': \'com.github.Raizlabs.DBFlow:dbflow-processor\', \'version\': \'3.0.1\', \'licence\': \'MIT\'}, { \'library_name\': \'com.github.Raizlabs.DBFlow:dbflow-core\', \'version\': \'3.0.1\', \'licence\': \'MIT\'}, { \'library_name\': \'com.github.Raizlabs.DBFlow:dbflow\', \'version\': \'3.0.1\', \'licence\': \'MIT\'}, { \'library_name\': \'com.facebook.stetho:stetho\', \'version\': \'1.3.1\', \'licence\': \'BSD\'}, { \'library_name\': \'com.facebook.stetho:stetho-okhttp\', \'version\': \'3: 1.3.1\', \'licence\': \'BSD\'}, { \'library_name\': \'com.github.chrisbanes:PhotoView\', \'version\': \'1.2.6\', \'licence\': \'Apache 2\'}, { \'library_name\': \'com.androidsupport:multidex\',\'version\': \'1.0.0\', \'licence\': \'Apache 2\'}, {\'library_name\': \'com.google.code.gson:gson\',\'version\': \'2.7\', \'licence\': \'Apache 2\'}, {\'library_name\': \'com.squareup.retrofit2:converter-gson\',\'version\': \'2.0.2\', \'licence\': \'A pache 2\'}, {\'library_name\': \'com.anton46:stepsview\',\'version\': \'0.0.2\', \'licence\': \'Apache 2\'}]</string> </resources>