package org.infernus.idea.checkstyle.actions;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import org.infernus.idea.checkstyle.CheckStylePlugin;
import org.infernus.idea.checkstyle.model.ConfigurationLocation;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
class ScanSourceRootsAction implements Runnable {
private final Project project;
private final VirtualFile[] sourceRoots;
private final ConfigurationLocation selectedOverride;
ScanSourceRootsAction(@NotNull final Project project,
@NotNull final VirtualFile[] sourceRoots,
final ConfigurationLocation selectedOverride) {
this.project = project;
this.sourceRoots = sourceRoots;
this.selectedOverride = selectedOverride;
}
@Override
public void run() {
project.getComponent(CheckStylePlugin.class)
.asyncScanFiles(flattenFiles(sourceRoots), selectedOverride);
}
private List<VirtualFile> flattenFiles(final VirtualFile[] files) {
final List<VirtualFile> flattened = new ArrayList<>();
if (files != null) {
for (final VirtualFile file : files) {
flattened.add(file);
if (file.getChildren() != null) {
flattened.addAll(flattenFiles(file.getChildren()));
}
}
}
return flattened;
}
}