package org.infernus.idea.checkstyle.checker;
import com.intellij.psi.PsiFile;
import org.infernus.idea.checkstyle.csapi.CheckstyleActions;
import org.infernus.idea.checkstyle.csapi.CheckstyleInternalObject;
import org.jetbrains.annotations.NotNull;
import java.util.List;
import java.util.Map;
import java.util.Optional;
public class CheckStyleChecker {
/**
* checker with config
*/
private final CheckstyleInternalObject checkerWithConfig;
/**
* the service instance that was current when this object is created
*/
private final CheckstyleActions csServiceInstance;
private final int tabWidth;
private final Optional<String> baseDir;
private final ClassLoader loaderOfCheckedCode;
public CheckStyleChecker(@NotNull final CheckstyleInternalObject checkerWithConfig,
final int tabWidth,
@NotNull final Optional<String> baseDir,
final ClassLoader loaderOfCheckedCode,
@NotNull final CheckstyleActions csServiceInstance) {
this.csServiceInstance = csServiceInstance;
this.checkerWithConfig = checkerWithConfig;
this.tabWidth = tabWidth;
this.baseDir = baseDir;
this.loaderOfCheckedCode = loaderOfCheckedCode;
}
@NotNull
public Map<PsiFile, List<Problem>> scan(@NotNull final List<ScannableFile> scannableFiles,
final boolean suppressErrors) {
return csServiceInstance.scan(checkerWithConfig, scannableFiles, suppressErrors, tabWidth, baseDir);
}
public void destroy() {
csServiceInstance.destroyChecker(checkerWithConfig);
}
public ClassLoader getLoaderOfCheckedCode() {
return loaderOfCheckedCode;
}
public CheckstyleInternalObject getCheckerWithConfig4UnitTest() {
return checkerWithConfig;
}
}