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