/** * Analyze a page to check if errors are present. * * @param analysis Page analysis. * @param errors Errors found in the page. * @param onlyAutomatic True if analysis could be restricted to errors automatically fixed. * @return Flag indicating if the error was found. */ @Override public boolean analyze( PageAnalysis analysis, Collection<CheckErrorResult> errors, boolean onlyAutomatic) { if ((analysis == null) || (analysis.getPage() == null)) { return false; } // Analyze each title String contents = analysis.getContents(); boolean result = false; for (PageElementTitle title : analysis.getTitles()) { // Check if there's something in the title boolean textFound = false; int currentIndex = title.getBeginIndex(); int lastIndex = title.getEndIndex(); while ((currentIndex < lastIndex) && (contents.charAt(currentIndex) == '=')) { currentIndex++; } while (!textFound && (currentIndex < lastIndex) && (contents.charAt(currentIndex) != '=')) { currentIndex = getFirstIndexAfterSpace(contents, currentIndex); if (currentIndex < lastIndex) { PageElementComment comment = null; PageElementTag tag = null; char currentChar = contents.charAt(currentIndex); if (currentChar == '<') { comment = analysis.isInComment(currentIndex); tag = analysis.isInTag(currentIndex, PageElementTag.TAG_WIKI_NOWIKI); } if (comment != null) { currentIndex = comment.getEndIndex(); } else if (tag != null) { currentIndex = tag.getCompleteEndIndex(); } else if (currentChar != '=') { if (!Character.isWhitespace(currentChar)) { textFound = true; } currentIndex++; } } } // Report error if (!textFound) { if (errors == null) { return true; } result = true; if ((lastIndex < contents.length()) && (contents.charAt(lastIndex) == '\n')) { lastIndex++; } CheckErrorResult errorResult = createCheckErrorResult(analysis, title.getBeginIndex(), lastIndex); errorResult.addReplacement(""); errors.add(errorResult); } } return result; }
/** * Analyze a page to check if errors are present. * * @param analysis Page analysis. * @param errors Errors found in the page. * @param onlyAutomatic True if analysis could be restricted to errors automatically fixed. * @return Flag indicating if the error was found. */ @Override public boolean analyze( PageAnalysis analysis, Collection<CheckErrorResult> errors, boolean onlyAutomatic) { if ((analysis == null) || (analysis.getPage() == null)) { return false; } // Analyze each PMID boolean result = false; List<PageElementPMID> pmids = analysis.getPMIDs(); if ((pmids == null) || (pmids.isEmpty())) { return false; } for (PageElementPMID pmid : pmids) { if (!pmid.isTemplateParameter() && pmid.isCorrect()) { if (errors == null) { return true; } result = true; CheckErrorResult errorResult = createCheckErrorResult( analysis, pmid.getBeginIndex(), pmid.getEndIndex()); List<String[]> pmidTemplates = analysis.getWPCConfiguration().getStringArrayList( WPCConfigurationStringList.PMID_TEMPLATES); if (pmidTemplates != null) { for (String[] pmidTemplate : pmidTemplates) { if (pmidTemplate.length > 2) { String templateName = pmidTemplate[0]; String[] params = pmidTemplate[1].split(","); Boolean suggested = Boolean.valueOf(pmidTemplate[2]); if ((params.length > 0) && (Boolean.TRUE.equals(suggested))) { StringBuilder replacement = new StringBuilder(); replacement.append("{{"); replacement.append(templateName); replacement.append("|"); if (!"1".equals(params[0])) { replacement.append(params[0]); replacement.append("="); } replacement.append(pmid.getPMID()); replacement.append("}}"); errorResult.addReplacement(replacement.toString()); } } } } errors.add(errorResult); } } return result; }
/** * Create a default popup menu. * * @param textPane Text pane. * @param position Position in the text. * @param pageAnalysis Page analysis. * @return Popup menu. */ protected JPopupMenu createDefaultPopup( MWPane textPane, int position, PageAnalysis pageAnalysis) { // Basic checks if (pageAnalysis == null) { return null; } // Find where the user has clicked PageElement element = pageAnalysis.isInElement(position); // Comment if (element instanceof PageElementComment) { return null; } // Menu for internal link if (element instanceof PageElementInternalLink) { PageElementInternalLink internalLink = (PageElementInternalLink) element; return createDefaultPopupInternalLink(textPane, position, pageAnalysis, internalLink); } // Menu for image if (element instanceof PageElementImage) { PageElementImage image = (PageElementImage) element; return createDefaultPopupImage(textPane, position, pageAnalysis, image); } // Menu for external link if (element instanceof PageElementExternalLink) { PageElementExternalLink externalLink = (PageElementExternalLink) element; return createDefaultPopupExternalLink(pageAnalysis, position, externalLink); } // Menu for template if (element instanceof PageElementTemplate) { PageElementTemplate template = (PageElementTemplate) element; return createDefaultPopupTemplate(pageAnalysis, position, template); } // Menu for category if (element instanceof PageElementCategory) { PageElementCategory category = (PageElementCategory) element; return createDefaultPopupCategory(textPane, position, pageAnalysis, category); } // Menu for interwiki if (element instanceof PageElementInterwikiLink) { PageElementInterwikiLink interwiki = (PageElementInterwikiLink) element; return createDefaultPopupInterwikiLink(textPane, position, pageAnalysis, interwiki); } // Menu for language if (element instanceof PageElementLanguageLink) { PageElementLanguageLink language = (PageElementLanguageLink) element; return createDefaultPopupLanguageLink(textPane, position, pageAnalysis, language); } // Menu for parameter if (element instanceof PageElementParameter) { PageElementParameter parameter = (PageElementParameter) element; return createDefaultPopupParameter(pageAnalysis, position, parameter); } // Menu for function if (element instanceof PageElementFunction) { PageElementFunction function = (PageElementFunction) element; return createDefaultPopupFunction(pageAnalysis, position, function); } // Menu for ISBN if (element instanceof PageElementISBN) { PageElementISBN isbn = (PageElementISBN) element; return createDefaultPopupISBN(pageAnalysis, position, isbn); } // Menu for ISSN if (element instanceof PageElementISSN) { PageElementISSN issn = (PageElementISSN) element; return createDefaultPopupISSN(pageAnalysis, position, issn); } // Default menu BasicMenuCreator menu = new BasicMenuCreator(); JPopupMenu popup = menu.createPopupMenu(GT._( "Page: {0}", limitTextLength(pageAnalysis.getPage().getTitle(), 50))); menu.addCurrentChapter(popup, position, pageAnalysis); menu.addSeparator(popup); menu.addView(wikipedia, popup, pageAnalysis.getPage(), false); return popup; }