package com.vaadin.addon.spreadsheet.test.demoapps; import java.io.File; import java.io.IOException; import java.net.URI; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; import java.util.stream.Stream; import com.vaadin.data.provider.ListDataProvider; /** Helper class a replacement for Vaadin 7 FilesystemContainer Doesn't support hierarchy. */ class FileDataProvider { /** * * @param root root folder * @param filter Regexp for filtering files. * @return a ListDataProvider of File */ public static ListDataProvider<File> create(URI root, String filter, Logger logger) { return new ListDataProvider<>(getFiles(root, filter, logger)); } /** * * @param root * root folder * @param filter * Regexp for filtering files. * @return a List of Files */ public static List<File> getFiles(URI root, String filter, Logger logger) { List<File> pathFiles = new ArrayList<>(); try (Stream<Path> paths = Files.walk(Paths.get(root), 1)) { paths.forEach(filePath -> { if (!Files.isDirectory(filePath) && (filePath.getFileName() .toString().matches(filter))) { pathFiles.add(filePath.toFile()); } }); } catch (IOException e) { logger.warning("Could not test Excel sheet " + e.getMessage()); } pathFiles.sort( (File f1, File f2) -> f1.getName().compareTo(f2.getName())); return pathFiles; } }