/* * This file is part of GPSLogger for Android. * * 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 2 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 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 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 <http://www.gnu.org/licenses/>. */ package com.mendhak.gpslogger.senders.opengts; import android.content.Context; import android.location.Location; import com.mendhak.gpslogger.common.AppSettings; import com.mendhak.gpslogger.common.IActionListener; import com.mendhak.gpslogger.common.OpenGTSClient; import com.mendhak.gpslogger.common.Utilities; import com.mendhak.gpslogger.senders.IFileSender; import java.io.File; import java.util.Collections; import java.util.List; public class OpenGTSHelper implements IActionListener, IFileSender { Context applicationContext; IActionListener callback; public OpenGTSHelper(Context applicationContext, IActionListener callback) { this.applicationContext = applicationContext; this.callback = callback; } // @Override public void UploadFile(List<File> files) { // Use only gpx for (File f : files) { if (f.getName().endsWith(".gpx")) { Thread t = new Thread(new OpenGTSHandler(applicationContext, f, this)); t.start(); } } } public void OnComplete() { callback.OnComplete(); } public void OnFailure() { callback.OnFailure(); } // @Override public boolean accept(File dir, String name) { return name.toLowerCase().contains(".gpx"); } } class OpenGTSHandler implements Runnable { List<Location> locations; Context applicationContext; File file; final IActionListener helper; public OpenGTSHandler(Context applicationContext, File file, IActionListener helper) { this.applicationContext = applicationContext; this.file = file; this.helper = helper; } public void run() { try { locations = getLocationsFromGPX(file); Utilities.LogInfo(locations.size() + " points where read from " + file.getName()); if (locations.size() > 0) { String server = AppSettings.getOpenGTSServer(); int port = Integer.parseInt(AppSettings.getOpenGTSServerPort()); String path = AppSettings.getOpenGTSServerPath(); String deviceId = AppSettings.getOpenGTSDeviceId(); OpenGTSClient openGTSClient = new OpenGTSClient(server, port, path, helper, applicationContext); openGTSClient.sendHTTP(deviceId, locations.toArray(new Location[0])); } else { helper.OnFailure(); } } catch (Exception e) { Utilities.LogError("OpenGTSHandler.run", e); helper.OnFailure(); } } private List<Location> getLocationsFromGPX(File f) { List<Location> locations = Collections.emptyList(); try { locations = GpxReader.getPoints(f); } catch (Exception e) { Utilities.LogError("OpenGTSHelper.getLocationsFromGPX", e); } return locations; } }