usmanazizgroupdocs
4/15/2016 - 10:33 AM

FTPInputDataHandler.java

// For complete examples and data files, please go to https://github.com/groupdocs-viewer/GroupDocs.Viewer-for-Java
public class FTPInputDataHandler implements IInputDataHandler {
	 
    private final String _server = "ftp://localhost";
    private final String _userName = "anonymous";
    private final String _userPassword = "";
 
    @Override
    public FileDescription getFileDescription(String guid) {
        return new FileDescription(guid);
    }
 
    @Override
    public InputStream getFile(String guid) {
        ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
        try {
            FTPClient ftpClient = new FTPClient();
            ftpClient.connect(_server);
            ftpClient.login(_userName, _userPassword);
            ftpClient.retrieveFile(guid, arrayOutputStream);
            ftpClient.disconnect();
 
        } catch (Exception e) {
            e.printStackTrace();
        }
        return new ByteArrayInputStream(arrayOutputStream.toByteArray());
    }
 
    @Override
    public Date getLastModificationDate(String guid) {
        FTPClient ftpClient = new FTPClient();
        try {
            ftpClient.connect(_server);
            ftpClient.login(_userName, _userPassword);
            FTPFile[] files = ftpClient.listFiles(guid);
            if (files.length > 0) {
                final FTPFile ftpFile = files[0];
                FileDescription fileDescription = new FileDescription(ftpFile.getName(), ftpFile.getName(), ftpFile.isDirectory());
                return fileDescription.getLastModificationDate();
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                ftpClient.disconnect();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
 
    @Override
    public List<FileDescription> loadFileTree(FileTreeOptions fileTreeOptions) {
        List<FileDescription> fileDescriptions = new ArrayList<FileDescription>();
        try {
            FTPClient ftpClient = new FTPClient();
            ftpClient.connect(_server);
            ftpClient.login(_userName, _userPassword);
            FTPFile[] files = ftpClient.listFiles();
            for (FTPFile ftpFile : files) {
                FileDescription fileDescription = new FileDescription(ftpFile.getName(), ftpFile.getName(), ftpFile.isDirectory());
                fileDescriptions.add(fileDescription);
            }
            ftpClient.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return fileDescriptions;
    }
}