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;
}
}