package org.igarape.copcast.utils;
import android.location.Location;
import android.os.Environment;
import android.util.Log;
import org.json.JSONException;
import java.io.File;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.text.DecimalFormat;
/**
* Created by bruno on 11/3/14.
*/
public class FileUtils {
public static final String LOCATIONS_TXT = "locations.txt";
public static final String HISTORY_TXT = "history.txt";
public static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
private static final String TAG = FileUtils.class.getName();
private static String path = null;
public static void setPath(String path) {
if (!path.endsWith(File.separator)) {
path = path + File.separator;
}
File f = new File(path);
if (!f.exists()) {
f.mkdirs();
}
FileUtils.path = path;
}
public static void logLocation(String userLogin, Location location) {
try {
LogToFile(userLogin, LOCATIONS_TXT, LocationUtils.buildJson(location).toString());
} catch (JSONException e) {
Log.e(TAG, "error recording location in file", e);
}
}
public static String getHistoriesFilePath(String userLogin) {
String userPath = getUserPath(userLogin);
return userPath + HISTORY_TXT;
}
public static String getLocationsFilePath(String userLogin) {
return getUserPath(userLogin) + LOCATIONS_TXT;
}
private static void LogToFile(String userLogin, String file, String data) {
String userPath = getUserPath(userLogin);
try {
FileWriter writer = new FileWriter(userPath + file, true);
writer.write(data + "\n");
writer.close();
} catch (IOException e) {
Log.e(TAG, e.getMessage());
}
}
private static String getUserPath(String userLogin) {
String userPath = path + userLogin + File.separator;
File f = new File(userPath);
if (!f.exists()) {
f.mkdirs();
}
return userPath;
}
public static String getPath(String userLogin) {
return getUserPath(userLogin);
}
public static String[] getUserFolders() {
return new File(path).list(new FilenameFilter() {
@Override
public boolean accept(File current, String name) {
return new File(current, name).isDirectory();
}
});
}
public static File getAlbumStorageDir(String albumName) {
// Get the directory for the user's public pictures directory.
File file = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_MOVIES), albumName);
if (!file.exists() && !file.mkdirs()) {
Log.e(TAG, "Directory '" + albumName + "' not created");
}
return file;
}
public static void init() {
setPath(getAlbumStorageDir("smartpolicing").getAbsolutePath());
}
public static long getDirectorySize(){
return org.apache.commons.io.FileUtils.sizeOfDirectory(new File(path));
}
public static String formatMegaBytes(Long size){
return new DecimalFormat("##.##").format((float) size / 1000000);
}
}