/* (non-Javadoc) * @see org.wikipediacleaner.gui.swing.utils.SwingWorker#construct() */ @Override public Object construct() { try { setText(GT._("Retrieving MediaWiki API")); API api = APIFactory.getAPI(); setText(GT._("Retrieving templates")); api.retrieveTemplates(getWikipedia(), page1); setText(GT._("Retrieving links in templates")); api.retrieveLinks(getWikipedia(), page1.getTemplates()); setText(GT._("Displaying templates found")); for (Page p : page1.getTemplates()) { boolean found = false; for (Page l : p.getLinks()) { if (link1.getTitle().equals(l.getTitle())) { found = true; break; } } if (found) { pages.add(p); } } } catch (APIException e) { return e; } return null; }
/** * Retrieve disambiguation information for a list of pages. * * @param wikipedia Wikipedia. * @param pageList List of page. * @param knownPages Already known pages. * @param disambiguations Flag indicating if possible disambiguations should be retrieved. * @param forceApiCall True if API call should be forced even if the list of disambiguation pages is loaded. * @param block Flag indicating if the call should block until completed. * @throws APIException */ public void retrieveDisambiguationInformation( EnumWikipedia wikipedia, List<Page> pageList, List<Page> knownPages, boolean disambiguations, boolean forceApiCall, boolean block) throws APIException { if ((pageList == null) || (pageList.isEmpty())) { return; } final API api = APIFactory.getAPI(); // Retrieving disambiguation status final int maxPages = api.getMaxPagesPerQuery(); List<Page> filteredList = pageList; if (knownPages != null) { filteredList = new ArrayList<Page>(pageList); filteredList.removeAll(knownPages); } if (filteredList.size() <= maxPages) { addTask(new DisambiguationStatusCallable(wikipedia, this, api, filteredList, forceApiCall)); } else { int index = 0; while (index < filteredList.size()) { List<Page> tmpList = new ArrayList<Page>(api.getMaxPagesPerQuery()); for (int i = 0; (i < maxPages) && (index < filteredList.size()); i++, index++) { tmpList.add(filteredList.get(index)); } addTask(new DisambiguationStatusCallable(wikipedia, this, api, tmpList, forceApiCall)); } } block(true); // Retrieving possible disambiguations if (disambiguations) { for (Page p : pageList) { Iterator<Page> iter = p.getRedirectIteratorWithPage(); while (iter.hasNext()) { p = iter.next(); if ((Boolean.TRUE.equals(p.isDisambiguationPage())) && (!p.isRedirect())) { List<Page> links = p.getLinks(); if ((links == null) || (links.size() == 0)) { addTask(new LinksWRCallable(wikipedia, this, api, p, null, null, false)); } } } } } block(block); }