com.axelor.apps.tool.net.MyFtp.java Source code

Java tutorial

Introduction

Here is the source code for com.axelor.apps.tool.net.MyFtp.java

Source

/**
 * Axelor Business Solutions
 *
 * Copyright (C) 2016 Axelor (<http://axelor.com>).
 *
 * This program is free software: you can redistribute it and/or  modify
 * it under the terms of the GNU Affero General Public License, version 3,
 * as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.axelor.apps.tool.net;

import java.io.File;
import java.io.FileOutputStream;
import java.util.Calendar;
import java.util.Date;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public final class MyFtp {

    private static final Logger LOG = LoggerFactory.getLogger(MyFtp.class);

    private MyFtp() {

    }

    public static void getDataFiles(String server, String username, String password, String folder,
            String destinationFolder, Calendar start, Calendar end) {

        try {

            // Connect and logon to FTP Server
            FTPClient ftp = new FTPClient();
            ftp.connect(server);
            ftp.login(username, password);

            // List the files in the directory
            ftp.changeWorkingDirectory(folder);
            FTPFile[] files = ftp.listFiles();

            for (int i = 0; i < files.length; i++) {

                Date fileDate = files[i].getTimestamp().getTime();
                if (fileDate.compareTo(start.getTime()) >= 0 && fileDate.compareTo(end.getTime()) <= 0) {

                    // Download a file from the FTP Server
                    File file = new File(destinationFolder + File.separator + files[i].getName());
                    FileOutputStream fos = new FileOutputStream(file);
                    ftp.retrieveFile(files[i].getName(), fos);
                    fos.close();
                    file.setLastModified(fileDate.getTime());
                }
            }

            // Logout from the FTP Server and disconnect
            ftp.logout();
            ftp.disconnect();

        } catch (Exception e) {

            LOG.error(e.getMessage());

        }
    }

}