package mediawiki.task.config.pdata; import java.io.PrintStream; import mediawiki.info.Article; import mediawiki.info.Language; import mediawiki.info.wikibase.Entity; import mediawiki.info.wikibase.Property; import mediawiki.info.wikibase.Statement; import mediawiki.info.wikibase.snaks.DateSnak; import mediawiki.info.wikibase.snaks.ItemSnak; public class PrintStreamTracker implements PersondataTracker { public PrintStream report = System.out; public PrintStreamTracker() { } public PrintStreamTracker(PrintStream report) { this.report = report; } public void trackAlias(Article article, Entity item, Language language, String alias) { report.println(item.getID()+"\talias\t"+alias); } @Override public void trackDescription(Article article, Entity item, Language language, String description, boolean conflict) { report.println(item.getID()+"\tdescription_"+(conflict ? "conflict" : "new")+"\t"+description+(conflict ? "\t"+item.getDescription(language) : "")); } public void trackPlace(Article article, Entity item, Property property, ItemSnak snak, boolean conflict) { String wdvalues = ""; if(conflict) { for(Statement s : item.getStatements(property)) { wdvalues += ",Q"+s.getClaim().getSnak().getValue(); } wdvalues = wdvalues.substring(1); } String code = null; switch(property.getID()){ case 19 : code = "pob"; break; case 20 : code = "pod"; break; default: throw new IllegalArgumentException("unknown place property "+property.toString()); } report.println(item.getID()+"\tclaim_"+(conflict ? "conflict" : "new")+"_"+code+"\tQ"+snak.getID()+(conflict ? "\t"+wdvalues : "")); } public void trackDate(Article article, Entity item, Property property, DateSnak snak, boolean conflict) { String wdvalues = ""; if(conflict) { for(Statement s : item.getStatements(property)) { wdvalues += ","+s.getClaim().getSnak().getValue().toString(); } wdvalues = wdvalues.substring(1); } String code = null; switch(property.getID()){ case 569 : code = "dob"; break; case 570 : code = "dod"; break; default: throw new IllegalArgumentException("unknown date property "+property.toString()); } report.println(item.getID()+"\tclaim_"+(conflict ? "conflict" : "new")+"_"+code+"\t"+snak.getValue().toString()+(conflict ? "\t"+wdvalues : "")); } public void trackUnparsable(Article article, Entity item, Property property, String value) { report.println(item.getID()+"\tunparsable_"+(item.getStatements(property).size() == 0 ? "new" : "check")+"_"+property+"\t"+value); } public PrintStream getReport() { return report; } public void setReport(PrintStream report) { this.report = report; } }