Android Open Source - Geotrackin Ftp Helper

From Project

Back to project page Geotrackin.


The source code is released under:

GNU General Public License

If you think the Android project Geotrackin listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

*    This file is part of GPSLogger for Android.
*/* ww w  . ja  v a2 s  .co  m*/
*    GPSLogger for Android is free software: you can redistribute it and/or modify
*    it under the terms of the GNU General Public License as published by
*    the Free Software Foundation, either version 3 of the License, or
*    (at your option) any later version.
*    GPSLogger for Android is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    GNU General Public License for more details.
*    You should have received a copy of the GNU General Public License
*    along with GPSLogger for Android.  If not, see <>.

package com.geotrackin.gpslogger.senders.ftp;

import com.geotrackin.gpslogger.common.AppSettings;
import com.geotrackin.gpslogger.common.IActionListener;
import com.geotrackin.gpslogger.senders.IFileSender;
import org.slf4j.LoggerFactory;

import java.util.Date;
import java.util.List;

public class FtpHelper implements IFileSender {
    private static final org.slf4j.Logger tracer = LoggerFactory.getLogger(FtpHelper.class.getSimpleName());
    IActionListener callback;

    public FtpHelper(IActionListener callback) {
        this.callback = callback;

    void TestFtp(String servername, String username, String password, String directory, int port, boolean useFtps, String protocol, boolean implicit) {
        String data = "GPSLogger for Android, test file.  Generated at " + (new Date()).toLocaleString() + "\r\n";
        ByteArrayInputStream in = new ByteArrayInputStream(data.getBytes());

        Thread t = new Thread(new FtpUploadHandler(callback, servername, port, username, password, directory,
                useFtps, protocol, implicit, in, "gpslogger_test.txt"));

    public void UploadFile(List<File> files) {

        if (!ValidSettings(AppSettings.getFtpServerName(), AppSettings.getFtpUsername(), AppSettings.getFtpPassword(),
                AppSettings.getFtpPort(), AppSettings.FtpUseFtps(), AppSettings.getFtpProtocol(), AppSettings.FtpImplicit())) {

        for (File f : files) {

    public void UploadFile(File f) {
        try {
            FileInputStream fis = new FileInputStream(f);
            Thread t = new Thread(new FtpUploadHandler(callback, AppSettings.getFtpServerName(), AppSettings.getFtpPort(),
                    AppSettings.getFtpUsername(), AppSettings.getFtpPassword(), AppSettings.getFtpDirectory(),
                    AppSettings.FtpUseFtps(), AppSettings.getFtpProtocol(), AppSettings.FtpImplicit(),
                    fis, f.getName()));
        } catch (Exception e) {
            tracer.error("Could not prepare file for upload.", e);

    public boolean accept(File file, String s) {
        return true;

    public boolean ValidSettings(String servername, String username, String password, Integer port, boolean useFtps,
                                 String sslTls, boolean implicit) {
        boolean retVal = servername != null && servername.length() > 0 && port != null && port > 0;

        if (useFtps && (sslTls == null || sslTls.length() <= 0)) {
            retVal = false;

        return retVal;

class FtpUploadHandler implements Runnable {

    IActionListener helper;
    String server;
    int port;
    String username;
    String password;
    boolean useFtps;
    String protocol;
    boolean implicit;
    InputStream inputStream;
    String fileName;
    String directory;

    public FtpUploadHandler(IActionListener helper, String server, int port, String username,
                            String password, String directory, boolean useFtps, String protocol, boolean implicit,
                            InputStream inputStream, String fileName) {
        this.helper = helper;
        this.server = server;
        this.port = port;
        this.username = username;
        this.password = password;
        this.useFtps = useFtps;
        this.protocol = protocol;
        this.implicit = implicit;
        this.inputStream = inputStream;
        this.fileName = fileName; = directory;

    public void run() {
        if (Ftp.Upload(server, username, password, directory, port, useFtps, protocol, implicit, inputStream, fileName)) {
        } else {

Java Source Code List