package pl.touk.sputnik.processor.tools.externalprocess; import org.jetbrains.annotations.NotNull; import pl.touk.sputnik.review.Review; import pl.touk.sputnik.review.ReviewProcessor; import pl.touk.sputnik.review.ReviewResult; import pl.touk.sputnik.review.Violation; import pl.touk.sputnik.review.filter.FileFilter; import pl.touk.sputnik.review.transformer.IOFileTransformer; import java.io.File; import java.util.List; public abstract class ProcessorRunningExternalProcess implements ReviewProcessor { @Override @NotNull public ReviewResult process(@NotNull Review review) { ReviewResult result = new ReviewResult(); List<File> files = review.getFiles(getReviewFileFilter(), new IOFileTransformer()); for (File file : files) { for (Violation violation : getParser().parse(processFileAndDumpOutput(file))) { result.add(violation); } } return result; } public abstract FileFilter getReviewFileFilter(); public abstract ExternalProcessResultParser getParser(); public abstract String processFileAndDumpOutput(File fileToReview); }