package mediawiki.task;
import util.Util;
import mediawiki.MediaWikiConnection;
import mediawiki.MediaWikiUtil;
import mediawiki.info.Article;
import mediawiki.request.ContentRequest;
import mediawiki.request.EditRequest;
import mediawiki.request.TranscludedTemplatesRequest;
import mediawiki.task.config.actwp.ACtWPConfiguration;
import mediawiki.task.config.actwp.ACtWPSelector;
public class AuthorityControlToWikipediaTask extends WikipediaWikidataTask {
private ACtWPConfiguration config;
private boolean testState = false;
public AuthorityControlToWikipediaTask(MediaWikiConnection wikidata,
MediaWikiConnection wikipedia, ACtWPConfiguration config) {
super(wikidata, wikipedia);
this.config = config;
}
@Override
public void run() {
ACtWPSelector selector = config.getSelector();
selector.prepare(getWikidataConnection(), getWikipediaConnection());
System.out.println("fetching with "+selector);
try {
selector.fetch();
while(selector.hasNext()){
try{
Article a = selector.next();
System.out.println(a.getTitle());
if(a.getNamespace() != 0)
continue;
if(getWikipediaConnection().request(new TranscludedTemplatesRequest(a, "Template:"+config.getTemplate())).size() > 0)
continue;
String content = getWikipediaConnection().request(new ContentRequest(a));
if(! MediaWikiUtil.allowBots(content, getWikipediaConnection().getUser())){
System.out.println("** bot-template found");
continue;
}
/* for(String t : config.getAliases())
if(content.matches("(?iu).*\\{\\{"+t+"\\}\\}.*"))
continue; */
content = config.getPositioner().insert(content, config.getTemplate());
if(testState) {
System.out.println(content);
if(!Util.in().equals("y"))
return;
}
getWikipediaConnection().requestConcurrently(new EditRequest(a, content, config.getSummary()));
System.out.println(a.getTitle()+" edited");
}catch(Exception e2){
e2.printStackTrace();
}
}
selector.close();
} catch (Exception e1) {
e1.printStackTrace();
}
}
public boolean isTestState() {
return testState;
}
public void setTestState(boolean testState) {
this.testState = testState;
}
}