import org.apache.commons.io.FileUtils; //导入方法依赖的package包/类
@Override
protected TUExecutionResult execution(File transformedAppFolder, TransformationContext transformationContext) {
final File searchRootFolder = getAbsoluteFile(transformedAppFolder, transformationContext);
String _pathRegex = pathRegex;
if (pathRegex != null && File.separatorChar != '/') {
_pathRegex = pathRegex.replace('/', File.separatorChar);
}
final String normalizedPathRegex = _pathRegex;
IOFileFilter filter = new AbstractFileFilter() {
public boolean accept(File file) {
if ((file.isFile() && !includeFiles) || (file.isDirectory() && !includeFolders)) {
return false;
}
if (nameRegex != null && !file.getName().matches(nameRegex)) {
return false;
}
if (normalizedPathRegex != null) {
String relativePath = getRelativePath(searchRootFolder, file.getParentFile());
if (!relativePath.matches(normalizedPathRegex)) {
return false;
}
}
return true;
}
};
Collection files = new ArrayList<>();
if (includeFiles) {
files = FileUtils.listFiles(searchRootFolder, filter, (recursive ? TrueFileFilter.INSTANCE : null));
}
if (includeFolders) {
Collection folders = new ArrayList<>();
Collection allFolders = FileUtils.listFilesAndDirs(searchRootFolder, new NotFileFilter(TrueFileFilter.INSTANCE), (recursive ? TrueFileFilter.INSTANCE : DirectoryFileFilter.DIRECTORY));
allFolders.remove(searchRootFolder);
for (File folder : allFolders) {
if (!recursive && !folder.getParentFile().equals(searchRootFolder)) {
continue;
}
if (filter.accept(folder)) {
folders.add(folder);
}
}
files.addAll(folders);
}
TUExecutionResult result = null;
if(files.size() == 0) {
result = TUExecutionResult.warning(this, "No files have been found", new ArrayList(files));
} else {
result = TUExecutionResult.value(this, new ArrayList(files));
}
return result;
}