package org.infernus.idea.checkstyle.checks; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import org.infernus.idea.checkstyle.csapi.CheckstyleInternalObject; import org.jetbrains.annotations.NotNull; /** * Extra logic for the PackageHtmlCheck check. */ public class PackageHtmlCheck implements Check { private static final String CHECK_PACKAGE_HTML = "com.puppycrawl.tools.checkstyle.checks.javadoc.PackageHtmlCheck"; private static final String PACKAGE_HTML_FILE = "package.html"; private final Project project; public PackageHtmlCheck(@NotNull final Project pProject) { project = pProject; } @Override public String getShortName() { return "PackageHtml"; } @Override public String getFullyQualifiedName() { return CHECK_PACKAGE_HTML; } public void configure(@NotNull final CheckstyleInternalObject config) { } public boolean process(@NotNull final PsiFile file, @NotNull final String pEventSourceName) { if (!CHECK_PACKAGE_HTML.equals(pEventSourceName)) { return true; } PsiElement currentSibling = findFirstSibling(file); while (currentSibling != null) { if (currentSibling.isPhysical() && currentSibling.isValid() && currentSibling instanceof PsiFile && PACKAGE_HTML_FILE.equals(((PsiFile) currentSibling).getName())) { return false; } currentSibling = currentSibling.getNextSibling(); } return true; } private PsiElement findFirstSibling(@NotNull final PsiFile psiFile) { PsiElement currentSibling = psiFile; while (currentSibling != null && currentSibling.getPrevSibling() != null) { currentSibling = currentSibling.getPrevSibling(); } return currentSibling; } }