GetCommitTask.java 2.06 KB
package it.nexus.android.interview;

import android.content.Context;
import android.os.AsyncTask;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * Created by kel666 on 12/01/17.
 */
public class GetCommitTask extends AsyncTask<Void, Void, List<Commit>> {
    private Context context;

    public GetCommitTask(Context context) {
        this.context=context;
    }

    @Override
    protected List<Commit> doInBackground(Void... voids) {
        Vector<Commit> commits=new Vector<Commit>();
        InputStream is = context.getResources().openRawResource(R.raw.commits);
        try {
            Writer writer = new StringWriter();
            char[] buffer = new char[1024];
            try {
                Reader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
                int n;
                while ((n = reader.read(buffer)) != -1) {
                    writer.write(buffer, 0, n);
                }
            } finally {
                is.close();
            }

            String jsonString = writer.toString();
            JSONArray arr=new JSONArray(jsonString);
            for(int i=0; i<arr.length(); i++) {
                JSONObject o=arr.getJSONObject(i);
                Commit c=new Commit();
                c.setId(o.getString("id"));
                c.setTitle(o.getString("title"));
                c.setAuthor(o.getString("author_name"));
                c.setMsg(o.getString("message"));
                SimpleDateFormat parser=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
                try {
                    c.setDate(parser.parse(o.getString("created_at")));
                } catch (ParseException e) {
                    e.printStackTrace();
                }
                commits.add(c);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return commits;
    }
}