package org.pieShare.pieShareApp.service.fileService; import org.pieShare.pieShareApp.model.pieFile.PieFile; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.SimpleFileVisitor; import java.nio.file.attribute.BasicFileAttributes; import java.util.ArrayList; import java.util.List; import org.pieShare.pieShareApp.model.PieShareAppBeanNames; import org.pieShare.pieShareApp.model.PieUser; import org.pieShare.pieTools.pieUtilities.service.security.hashService.IHashService; /** * @author richy */ public class LocalFileService extends FileServiceBase { private IHashService hashService; public void setHashService(IHashService hashService) { this.hashService = hashService; } @Override public List<PieFile> getAllFiles() throws IOException { //todo: try first to read DB List<PieFile> pieFiles = new ArrayList(); //todo: maybe a own service or at least function? Files.walkFileTree(configuration.getWorkingDir().toPath(), new SimpleFileVisitor<Path>() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { File realFile = file.toFile(); PieFile pieFile = getPieFile(realFile); pieFiles.add(pieFile); return FileVisitResult.CONTINUE; } }); return pieFiles; } @Override public PieFile getPieFile(File file) throws IOException { PieFile pieFile = beanService.getBean(PieShareAppBeanNames.getPieFileName()); pieFile.setRelativeFilePath(relitivizeFilePath(file).toString()); pieFile.setFileName(file.getName()); pieFile.setLastModified(file.lastModified()); if (file.exists()) { pieFile.setMd5(hashService.hashStream(file)); } else { pieFile.setDeleted(true); } return pieFile; } }