5: Create PluginExecutor

This commit is contained in:
Bartłomiej Pluta
2019-03-31 14:52:08 +02:00
parent e1a37f9878
commit dc44f81783

View File

@@ -0,0 +1,35 @@
package com.bartek.esa.core.executor;
import com.bartek.esa.core.archetype.BasePlugin;
import com.bartek.esa.core.model.Issue;
import javax.inject.Inject;
import java.io.File;
import java.util.List;
import static java.util.stream.Collectors.toList;
public class PluginExecutor {
@Inject
public PluginExecutor() {
}
public List<Issue> executeForFiles(List<File> files, List<BasePlugin> plugins) {
return files.stream()
.map(file -> executeForFile(file, plugins))
.flatMap(List::stream)
.collect(toList());
}
private List<Issue> executeForFile(File file, List<BasePlugin> plugins) {
return plugins.stream()
.map(plugin -> {
plugin.update(file);
return plugin.runForIssues();
})
.flatMap(List::stream)
.collect(toList());
}
}