// Path: app/src/main/java/com/github/mzule/androidweekly/entity/Article.java
// public class Article implements Serializable {
//     private String title;
//     private String brief;
//     private String link;
//     private String imageUrl;
//     private String domain;
//     private String issue;
//     private String section;
// 
//     public String getSection() {
//         return section;
//     }
// 
//     public void setSection(String section) {
//         this.section = section;
//     }
// 
//     public String getIssue() {
//         return issue;
//     }
// 
//     public void setIssue(String issue) {
//         this.issue = issue;
//     }
// 
//     public String getTitle() {
//         return title;
//     }
// 
//     public void setTitle(String title) {
//         this.title = title;
//     }
// 
//     public String getBrief() {
//         return brief;
//     }
// 
//     public void setBrief(String brief) {
//         this.brief = brief;
//     }
// 
//     public String getLink() {
//         return link;
//     }
// 
//     public void setLink(String link) {
//         this.link = link;
//     }
// 
//     public String getImageUrl() {
//         return imageUrl;
//     }
// 
//     public void setImageUrl(String imageUrl) {
//         this.imageUrl = imageUrl;
//     }
// 
//     public String getDomain() {
//         return domain;
//     }
// 
//     public void setDomain(String domain) {
//         this.domain = domain;
//     }
// 
//     public String getFTS() {
//         return title + "\n" + brief;
//     }
// 
//     @Override
//     public String toString() {
//         return Arrays.toString(new String[]{title, "\n", brief, "\n", link, "\n", imageUrl, "\n", domain, "\n", "\n"});
//     }
// 
//     @Override
//     public int hashCode() {
//         return link == null ? 0 : link.hashCode();
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (o instanceof Article) {
//             Article other = (Article) o;
//             return link == null ? other.link == null : link.equals(other.link);
//         }
//         return false;
//     }
// }


import com.github.mzule.androidweekly.entity.Article;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
package com.github.mzule.androidweekly.api.parser;




/**
 * Created by CaoDongping on 4/15/16.
 */
public class OlderArticlesParser implements ArticleParser {

    @Override
    public List<Object> parse(String issue) throws IOException {
        Document doc = DocumentProvider.get(issue);
        List<Object> articles = new ArrayList<>();
        Element root = doc.getElementsByClass("issue").get(0);
        while (root.children().size() == 1) {
            root = root.child(0);
        }
        String currentSection = null;
        for (Element e : root.children()) {
            if (e.tagName().equals("h2")) {
                currentSection = e.text();
                articles.add(currentSection);
                continue;
            }
            if (e.tagName().equals("div")) {
                Elements img = e.getElementsByTag("img");
                if (!img.isEmpty()) {
// Path: app/src/main/java/com/github/mzule/androidweekly/entity/Article.java
// public class Article implements Serializable {
//     private String title;
//     private String brief;
//     private String link;
//     private String imageUrl;
//     private String domain;
//     private String issue;
//     private String section;
// 
//     public String getSection() {
//         return section;
//     }
// 
//     public void setSection(String section) {
//         this.section = section;
//     }
// 
//     public String getIssue() {
//         return issue;
//     }
// 
//     public void setIssue(String issue) {
//         this.issue = issue;
//     }
// 
//     public String getTitle() {
//         return title;
//     }
// 
//     public void setTitle(String title) {
//         this.title = title;
//     }
// 
//     public String getBrief() {
//         return brief;
//     }
// 
//     public void setBrief(String brief) {
//         this.brief = brief;
//     }
// 
//     public String getLink() {
//         return link;
//     }
// 
//     public void setLink(String link) {
//         this.link = link;
//     }
// 
//     public String getImageUrl() {
//         return imageUrl;
//     }
// 
//     public void setImageUrl(String imageUrl) {
//         this.imageUrl = imageUrl;
//     }
// 
//     public String getDomain() {
//         return domain;
//     }
// 
//     public void setDomain(String domain) {
//         this.domain = domain;
//     }
// 
//     public String getFTS() {
//         return title + "\n" + brief;
//     }
// 
//     @Override
//     public String toString() {
//         return Arrays.toString(new String[]{title, "\n", brief, "\n", link, "\n", imageUrl, "\n", domain, "\n", "\n"});
//     }
// 
//     @Override
//     public int hashCode() {
//         return link == null ? 0 : link.hashCode();
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (o instanceof Article) {
//             Article other = (Article) o;
//             return link == null ? other.link == null : link.equals(other.link);
//         }
//         return false;
//     }
// }


// Path: app/src/main/java/com/github/mzule/androidweekly/api/parser/OlderArticlesParser.java
import com.github.mzule.androidweekly.entity.Article;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

package com.github.mzule.androidweekly.api.parser;




/**
 * Created by CaoDongping on 4/15/16.
 */
public class OlderArticlesParser implements ArticleParser {

    @Override
    public List<Object> parse(String issue) throws IOException {
        Document doc = DocumentProvider.get(issue);
        List<Object> articles = new ArrayList<>();
        Element root = doc.getElementsByClass("issue").get(0);
        while (root.children().size() == 1) {
            root = root.child(0);
        }
        String currentSection = null;
        for (Element e : root.children()) {
            if (e.tagName().equals("h2")) {
                currentSection = e.text();
                articles.add(currentSection);
                continue;
            }
            if (e.tagName().equals("div")) {
                Elements img = e.getElementsByTag("img");
                if (!img.isEmpty()) {
                    Article article = new Article();