/*
* Copyright (C) 2016 mendhak
*
* 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.loggers;
import android.content.Context;
import android.location.Location;
import com.mendhak.gpslogger.common.PreferenceHelper;
import com.mendhak.gpslogger.common.Session;
import com.mendhak.gpslogger.common.Strings;
import com.mendhak.gpslogger.common.Systems;
import com.mendhak.gpslogger.loggers.csv.CSVFileLogger;
import com.mendhak.gpslogger.loggers.customurl.CustomUrlLogger;
import com.mendhak.gpslogger.loggers.gpx.Gpx10FileLogger;
import com.mendhak.gpslogger.loggers.kml.Kml22FileLogger;
import com.mendhak.gpslogger.loggers.opengts.OpenGTSLogger;
import com.mendhak.gpslogger.loggers.wear.AndroidWearLogger;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class FileLoggerFactory {
private static PreferenceHelper preferenceHelper = PreferenceHelper.getInstance();
private static Session session = Session.getInstance();
public static List<FileLogger> getFileLoggers(Context context) {
List<FileLogger> loggers = new ArrayList<>();
if(Strings.isNullOrEmpty(preferenceHelper.getGpsLoggerFolder())){
return loggers;
}
File gpxFolder = new File(preferenceHelper.getGpsLoggerFolder());
if (!gpxFolder.exists()) {
gpxFolder.mkdirs();
}
if (preferenceHelper.shouldLogToGpx()) {
File gpxFile = new File(gpxFolder.getPath(), Strings.getFormattedFileName() + ".gpx");
loggers.add(new Gpx10FileLogger(gpxFile, session.shouldAddNewTrackSegment()));
}
if (preferenceHelper.shouldLogToKml()) {
File kmlFile = new File(gpxFolder.getPath(), Strings.getFormattedFileName() + ".kml");
loggers.add(new Kml22FileLogger(kmlFile, session.shouldAddNewTrackSegment()));
}
if (preferenceHelper.shouldLogToCSV()) {
float batteryLevel = Systems.getBatteryLevel(context);
File file = new File(gpxFolder.getPath(), Strings.getFormattedFileName() + ".csv");
loggers.add(new CSVFileLogger(file, batteryLevel));
}
if (preferenceHelper.shouldLogToOpenGTS()) {
loggers.add(new OpenGTSLogger(context));
}
if (preferenceHelper.shouldLogToCustomUrl()) {
float batteryLevel = Systems.getBatteryLevel(context);
String androidId = Systems.getAndroidId(context);
loggers.add(new CustomUrlLogger(preferenceHelper.getCustomLoggingUrl(), batteryLevel, androidId));
}
if(/* Should log to Android Wear */ true){
loggers.add(new AndroidWearLogger(context));
}
return loggers;
}
public static void write(Context context, Location loc) throws Exception {
for (FileLogger logger : getFileLoggers(context)) {
logger.write(loc);
}
}
public static void annotate(Context context, String description, Location loc) throws Exception {
for (FileLogger logger : getFileLoggers(context)) {
logger.annotate(description, loc);
}
}
}