private SourceTableDefinition getDataset(NamespaceKey datasetPath, DatasetConfig oldConfig, FormatPlugin formatPlugin, FileSystemWrapper fs, FileConfig fileConfig) throws IOException {
final List<FileSystemCachedEntity> cachedEntities = Lists.newArrayList();
final FileStatus rootStatus = fs.getFileStatus(new Path(fileConfig.getLocation()));
final Path combined = new Path("/", PathUtils.removeLeadingSlash(fileConfig.getLocation()));
final FileSelection fileSelection = FileSelection.create(fs, combined);
if (fileSelection == null) {
return null;
}
if (rootStatus.isDirectory()) {
cachedEntities.add(fromFileStatus(rootStatus));
}
for (FileStatus dirStatus: fileSelection.getAllDirectories()) {
cachedEntities.add(fromFileStatus(dirStatus));
}
if(cachedEntities.isEmpty()){
cachedEntities.add(fromFileStatus(rootStatus));
}
final FileUpdateKey updateKey = new FileUpdateKey().setCachedEntitiesList(cachedEntities);
final boolean hasDirectories = fileSelection.containsDirectories();
final FileSelection fileSelectionWithoutDir = hasDirectories? fileSelection.minusDirectories(): fileSelection;
if(fileSelectionWithoutDir == null){
return null;
}
return formatPlugin.getDatasetAccessor(oldConfig, fs, fileSelectionWithoutDir, this, datasetPath, datasetPath.getName(), updateKey);
}