package strip.copyright; import java.nio.file.Path; import java.util.Collections; import java.util.List; import java.util.function.Consumer; import com.github.javaparser.Range; import com.github.javaparser.ast.CompilationUnit; public class CopyrightBlockDetector implements strip.Detector { private Consumer<String> logger; public CopyrightBlockDetector(Consumer<String> logger) { this.logger = logger; } @Override public List<Range> findCodeToRemoveIn(CompilationUnit compilationUnit, Path javaSourceFile) { CopyrightNoticeScanner scanner = new CopyrightNoticeScanner(); scanner.visit(compilationUnit, null); if (scanner.copyrightNoticesLocations.size() > 1) { logger.accept("Skipping file with multiple copy right notices. Has multiple copy right notices: " + javaSourceFile); return Collections.emptyList(); } if(scanner.copyrightNoticesLocations.size() < 1){ return Collections.emptyList(); } Range location = scanner.copyrightNoticesLocations.get(0); if (location.begin.line != 1 | location.begin.column != 1) { logger.accept("Skipping file where copyright notice is not at the start of the file: " + javaSourceFile); return Collections.emptyList(); } return Collections.unmodifiableList(scanner.copyrightNoticesLocations); } }