/* * WPCleaner: A tool to help on Wikipedia maintenance tasks. * Copyright (C) 2013 Nicolas Vervelle * * See README.txt file for licensing information. */ package org.wikipediacleaner.gui.swing.worker; import java.util.ArrayList; import org.wikipediacleaner.api.APIException; import org.wikipediacleaner.api.MediaWiki; import org.wikipediacleaner.api.constants.EnumWikipedia; import org.wikipediacleaner.api.data.Page; import org.wikipediacleaner.gui.swing.basic.BasicWindow; import org.wikipediacleaner.gui.swing.basic.BasicWorker; /** * SwingWorker for reloading the page. */ public class DisambiguationAnalysisWorker extends BasicWorker { private final Page page; /** * @param wikipedia Wikipedia. * @param window Window. * @param page Page. */ public DisambiguationAnalysisWorker(EnumWikipedia wikipedia, BasicWindow window, Page page) { super(wikipedia, window); this.page = page; } /* (non-Javadoc) * @see org.wikipediacleaner.gui.swing.utils.SwingWorker#construct() */ @Override public Object construct() { try { MediaWiki mw = MediaWiki.getMediaWikiAccess(this); mw.retrieveContents(getWikipedia(), page, false, false, false, true, false); mw.retrieveAllLinksToPage(getWikipedia(), page, true); ArrayList<Page> pageAndRedirects = new ArrayList<Page>(); pageAndRedirects.add(page); for (Page backlink : page.getAllLinksToPage()) { if ((backlink != null) && (backlink.isRedirect())) { pageAndRedirects.add(backlink); mw.retrieveContents(getWikipedia(), backlink, false, false, false, false, false); } } mw.retrieveDisambiguationInformation(getWikipedia(), pageAndRedirects, null, false, false, false); mw.retrieveAllLinks(getWikipedia(), page, null, null, true, false); } catch (APIException e) { return e; } return null; } }