// Path: src/ie/broadsheet/app/BroadsheetApplication.java
// public class BroadsheetApplication extends Application {
//     private static BroadsheetApplication mApp = null;
// 
//     private List<Post> posts;
// 
//     public List<Post> getPosts() {
//         return posts;
//     }
// 
//     private Tracker mGaTracker;
// 
//     private GoogleAnalytics mGaInstance;
// 
//     public void setPosts(List<Post> posts) {
//         if ((this.posts == null) || (posts == null)) {
//             this.posts = posts;
//         } else if (this.posts.size() > 0) {
//             // this.posts.addAll(posts);
//             for (Post post : posts) {
//                 this.posts.add(post);
//             }
//         } else {
//             this.posts = posts;
//         }
//     }
// 
//     @Override
//     public void onCreate() {
//         super.onCreate();
// 
//         // Create global configuration and initialize ImageLoader with this configuration
//         ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()).build();
//         ImageLoader.getInstance().init(config);
// 
//         this.posts = new ArrayList<Post>();
// 
//         Crashlytics.start(this);
// 
//         mGaInstance = GoogleAnalytics.getInstance(this);
// 
//         mGaTracker = mGaInstance.getTracker("UA-5653857-3");
// 
//         mApp = this;
//     }
// 
//     public Tracker getTracker() {
//         return mGaTracker;
//     }
// 
//     public static Context context() {
//         return mApp.getApplicationContext();
//     }
// 
// }
// 
// Path: src/ie/broadsheet/app/model/json/PostList.java
// public class PostList implements Serializable {
//     private static final long serialVersionUID = 1L;
// 
//     @Key
//     private String status;
// 
//     @Key
//     private int count;
// 
//     @Key
//     private int count_total;
// 
//     @Key
//     private int pages;
// 
//     @Key
//     private List<Post> posts;
// 
//     public String getStatus() {
//         return status;
//     }
// 
//     public void setStatus(String status) {
//         this.status = status;
//     }
// 
//     public int getCount() {
//         return count;
//     }
// 
//     public void setCount(int count) {
//         this.count = count;
//     }
// 
//     public int getCount_total() {
//         return count_total;
//     }
// 
//     public void setCount_total(int count_total) {
//         this.count_total = count_total;
//     }
// 
//     public int getPages() {
//         return pages;
//     }
// 
//     public void setPages(int pages) {
//         this.pages = pages;
//     }
// 
//     public List<Post> getPosts() {
//         return posts;
//     }
// 
//     public void setPosts(List<Post> posts) {
//         this.posts = posts;
//     }
// 
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + count;
//         result = prime * result + count_total;
//         result = prime * result + pages;
//         result = prime * result + ((posts == null) ? 0 : posts.hashCode());
//         result = prime * result + ((status == null) ? 0 : status.hashCode());
//         return result;
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj)
//             return true;
//         if (obj == null)
//             return false;
//         if (getClass() != obj.getClass())
//             return false;
//         PostList other = (PostList) obj;
//         if (count != other.count)
//             return false;
//         if (count_total != other.count_total)
//             return false;
//         if (pages != other.pages)
//             return false;
//         if (posts == null) {
//             if (other.posts != null)
//                 return false;
//         } else if (!posts.equals(other.posts))
//             return false;
//         if (status == null) {
//             if (other.status != null)
//                 return false;
//         } else if (!status.equals(other.status))
//             return false;
//         return true;
//     }
// 
//     @Override
//     public String toString() {
//         return "PostList [status=" + status + ", count=" + count + ", count_total=" + count_total + ", pages=" + pages
//                 + ", posts=" + posts + "]";
//     }
// 
// }


import ie.broadsheet.app.BroadsheetApplication;
import ie.broadsheet.app.R;
import ie.broadsheet.app.model.json.PostList;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import android.util.Log;
import com.google.api.client.http.GenericUrl;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.json.jackson.JacksonFactory;
import com.octo.android.robospice.request.googlehttpclient.GoogleHttpClientSpiceRequest;
package ie.broadsheet.app.requests;





public class PostListRequest extends GoogleHttpClientSpiceRequest<PostList> {
    private static final String TAG = "PostListRequest";

    private String baseUrl;

    private int page = 1;

    private int count = 10;

    private String searchTerm;

    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public String getSearchTerm() {
        return searchTerm;
    }

    public void setSearchTerm(String searchTerm) {
        this.searchTerm = searchTerm;
    }

    public PostListRequest() {
        super(PostList.class);

        this.baseUrl = BroadsheetApplication.context().getString(R.string.apiURL) + "/?json=1";

    }

    @Override
    public PostList loadDataFromNetwork() throws Exception {
        Log.d("PostListRequest", "Call web service " + generateUrl());
        HttpRequest request = getHttpRequestFactory().buildGetRequest(new GenericUrl(generateUrl()));
        request.setParser(new JacksonFactory().createJsonObjectParser());
        return request.execute().parseAs(getResultType());
    }

// Path: src/ie/broadsheet/app/BroadsheetApplication.java
// public class BroadsheetApplication extends Application {
//     private static BroadsheetApplication mApp = null;
// 
//     private List<Post> posts;
// 
//     public List<Post> getPosts() {
//         return posts;
//     }
// 
//     private Tracker mGaTracker;
// 
//     private GoogleAnalytics mGaInstance;
// 
//     public void setPosts(List<Post> posts) {
//         if ((this.posts == null) || (posts == null)) {
//             this.posts = posts;
//         } else if (this.posts.size() > 0) {
//             // this.posts.addAll(posts);
//             for (Post post : posts) {
//                 this.posts.add(post);
//             }
//         } else {
//             this.posts = posts;
//         }
//     }
// 
//     @Override
//     public void onCreate() {
//         super.onCreate();
// 
//         // Create global configuration and initialize ImageLoader with this configuration
//         ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()).build();
//         ImageLoader.getInstance().init(config);
// 
//         this.posts = new ArrayList<Post>();
// 
//         Crashlytics.start(this);
// 
//         mGaInstance = GoogleAnalytics.getInstance(this);
// 
//         mGaTracker = mGaInstance.getTracker("UA-5653857-3");
// 
//         mApp = this;
//     }
// 
//     public Tracker getTracker() {
//         return mGaTracker;
//     }
// 
//     public static Context context() {
//         return mApp.getApplicationContext();
//     }
// 
// }
// 
// Path: src/ie/broadsheet/app/model/json/PostList.java
// public class PostList implements Serializable {
//     private static final long serialVersionUID = 1L;
// 
//     @Key
//     private String status;
// 
//     @Key
//     private int count;
// 
//     @Key
//     private int count_total;
// 
//     @Key
//     private int pages;
// 
//     @Key
//     private List<Post> posts;
// 
//     public String getStatus() {
//         return status;
//     }
// 
//     public void setStatus(String status) {
//         this.status = status;
//     }
// 
//     public int getCount() {
//         return count;
//     }
// 
//     public void setCount(int count) {
//         this.count = count;
//     }
// 
//     public int getCount_total() {
//         return count_total;
//     }
// 
//     public void setCount_total(int count_total) {
//         this.count_total = count_total;
//     }
// 
//     public int getPages() {
//         return pages;
//     }
// 
//     public void setPages(int pages) {
//         this.pages = pages;
//     }
// 
//     public List<Post> getPosts() {
//         return posts;
//     }
// 
//     public void setPosts(List<Post> posts) {
//         this.posts = posts;
//     }
// 
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + count;
//         result = prime * result + count_total;
//         result = prime * result + pages;
//         result = prime * result + ((posts == null) ? 0 : posts.hashCode());
//         result = prime * result + ((status == null) ? 0 : status.hashCode());
//         return result;
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj)
//             return true;
//         if (obj == null)
//             return false;
//         if (getClass() != obj.getClass())
//             return false;
//         PostList other = (PostList) obj;
//         if (count != other.count)
//             return false;
//         if (count_total != other.count_total)
//             return false;
//         if (pages != other.pages)
//             return false;
//         if (posts == null) {
//             if (other.posts != null)
//                 return false;
//         } else if (!posts.equals(other.posts))
//             return false;
//         if (status == null) {
//             if (other.status != null)
//                 return false;
//         } else if (!status.equals(other.status))
//             return false;
//         return true;
//     }
// 
//     @Override
//     public String toString() {
//         return "PostList [status=" + status + ", count=" + count + ", count_total=" + count_total + ", pages=" + pages
//                 + ", posts=" + posts + "]";
//     }
// 
// }


// Path: src/ie/broadsheet/app/requests/PostListRequest.java
import ie.broadsheet.app.BroadsheetApplication;
import ie.broadsheet.app.R;
import ie.broadsheet.app.model.json.PostList;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import android.util.Log;
import com.google.api.client.http.GenericUrl;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.json.jackson.JacksonFactory;
import com.octo.android.robospice.request.googlehttpclient.GoogleHttpClientSpiceRequest;

package ie.broadsheet.app.requests;





public class PostListRequest extends GoogleHttpClientSpiceRequest<PostList> {
    private static final String TAG = "PostListRequest";

    private String baseUrl;

    private int page = 1;

    private int count = 10;

    private String searchTerm;

    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public String getSearchTerm() {
        return searchTerm;
    }

    public void setSearchTerm(String searchTerm) {
        this.searchTerm = searchTerm;
    }

    public PostListRequest() {
        super(PostList.class);

        this.baseUrl = BroadsheetApplication.context().getString(R.string.apiURL) + "/?json=1";

    }

    @Override
    public PostList loadDataFromNetwork() throws Exception {
        Log.d("PostListRequest", "Call web service " + generateUrl());
        HttpRequest request = getHttpRequestFactory().buildGetRequest(new GenericUrl(generateUrl()));
        request.setParser(new JacksonFactory().createJsonObjectParser());
        return request.execute().parseAs(getResultType());
    }

    public String generateUrl() {