package com.s24.wiki; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import edu.jhu.nlp.wikipedia.PageCallbackHandler; import edu.jhu.nlp.wikipedia.WikiPage; import edu.jhu.nlp.wikipedia.WikiXMLParser; import edu.jhu.nlp.wikipedia.WikiXMLParserFactory; public abstract class AbstractWikiParser { List<PageParser> parser; public AbstractWikiParser() { parser = new ArrayList<PageParser>(); } public void parse(String filename) { try { WikiXMLParser wxsp = WikiXMLParserFactory.getSAXParser(filename); wxsp.setPageCallback(new PageCallbackHandler() { public void process(WikiPage page) { if (!page.isSpecialPage() && !page.isRedirect() && isNoun(page)) { Iterator<PageParser> iter = parser.iterator(); while (iter.hasNext()) { iter.next().parse(page); } } } }); wxsp.parse(); } catch (Exception e) { e.printStackTrace(); } } public void addParser(PageParser p) { parser.add(p); } protected abstract boolean isNoun(WikiPage page); }