package de.cinovo.cloudconductor.server.repo.provider; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.springframework.beans.factory.annotation.Value; import de.cinovo.cloudconductor.server.repo.RepoEntry; /** * Copyright 2014 Hoegernet<br> * <br> * * @author Thorsten Hoeger * */ public class FileProvider implements IRepoProvider { @Value("${repo.basedir:static/yum/}") private String basedir; @Override public boolean isListable() { return true; } @Override public List<RepoEntry> getEntries(String folder) { File dir = new File(this.basedir + folder); if (!dir.isDirectory()) { return null; } List<RepoEntry> list = new ArrayList<RepoEntry>(); for (File file : dir.listFiles()) { list.add(this.createEntry(file)); } return list; } @Override public RepoEntry getEntry(String key) { File file = new File(this.basedir + key); if (file.exists()) { return this.createEntry(file); } return null; } private RepoEntry createEntry(File file) { RepoEntry e = new RepoEntry(); e.setDirectory(file.isDirectory()); e.setName(file.getName()); e.setSize(file.length()); e.setModified(new Date(file.lastModified())); return e; } @Override public InputStream getEntryStream(String key) { File file = new File(this.basedir + key); if (file.exists()) { try { return new FileInputStream(file); } catch (FileNotFoundException e) { // may not happen } } return null; } }